@@ -19,6 +19,7 @@ import groovy.transform.Field
1919import java.nio.charset.StandardCharsets
2020import java.nio.file.Files
2121import java.nio.file.Path
22+ import java.util.concurrent.CompletableFuture
2223import java.util.concurrent.ExecutorService
2324import java.util.concurrent.Executors
2425import java.util.concurrent.Future
@@ -119,27 +120,31 @@ String randomFileName(int index) {
119120}
120121
121122@SuppressWarnings (' GroovyAssignabilityCheck' )
122- Future<Void > generateRandomFile (int index , Path baseDir , ExecutorService executor ) {
123+ CompletableFuture<Void > generateRandomFile (int index , Path baseDir , ExecutorService executor ) {
124+ CompletableFuture<Void > completableFuture = new CompletableFuture<> ();
123125 executor. submit {
124- Path path = baseDir. resolve(randomFileName(index))
125- try (BufferedWriter writer = Files . newBufferedWriter(path, StandardCharsets . UTF_8 )) {
126- addRandomProtoFile(index, writer)
126+ try {
127+ Path path = baseDir. resolve(randomFileName(index))
128+ try (BufferedWriter writer = Files . newBufferedWriter(path, StandardCharsets . UTF_8 )) {
129+ addRandomProtoFile(index, writer)
130+ }
131+ completableFuture. complete(null );
132+ } catch (Exception ex) {
133+ completableFuture. completeExceptionally(ex);
127134 }
128- return null
129135 }
136+ return completableFuture
130137}
131138
132139void generateRandomFiles (int count , ExecutorService executor ) {
133140 println (" Generating ${ count} random proto files files for this test..." )
134141 Path baseDir = basedir. toPath(). resolve(" src" ). resolve(" main" ). resolve(" protobuf" )
135142 Files . createDirectories(baseDir)
136- List< Future< Void > > futures = [ ]
143+ CompletableFuture [] futures = new CompletableFuture [count ]
137144 for (int i = 0 ; i < count; ++ i) {
138- futures. add(generateRandomFile(i, baseDir, executor))
139- }
140- for (Future<Void > future : futures) {
141- future. get()
145+ futures[i] = generateRandomFile(i, baseDir, executor)
142146 }
147+ CompletableFuture . allOf(futures). join()
143148}
144149
145150ExecutorService executor = Executors . newFixedThreadPool(30 )
0 commit comments