コード例 #1
0
 @Override
 @Nonnull
 public Response execute(@Nonnull R requirement, @Nullable Drains drains)
     throws InterruptedException, IOException {
   final Drain out = drains != null ? drains.stdout() : drainThatBuffers();
   final Drain err = drains != null ? drains.stderr() : drainThatBuffers();
   try (final P process = _processGenerator.generate(requirement)) {
     try (final OutputMonitor<E, ID> stdoutMonitor = new OutputMonitor<>(process, stdout, out)) {
       try (final OutputMonitor<E, ID> stderrMonitor = new OutputMonitor<>(process, stderr, err)) {
         final int exitCode = process.waitFor();
         stdoutMonitor.waitFor();
         stderrMonitor.waitFor();
         return new Response(asString(out), asString(err), exitCode);
       }
     }
   }
 }