zeroturnaround / zt-exec

ZeroTurnaround Process Executor
Apache License 2.0
880 stars 110 forks source link

Support CompletableFuture<T> #76

Open d-gs opened 4 years ago

d-gs commented 4 years ago

I would like to use CompletableFuture<ProcessResult> compose functionality instead of a pure Future to be able to chain process as in a pipeline waiting one for the next. Looking a into your code (not soo deeply) I found that this might be simple by modifying the following method to use CompletableFuture#supplyAsync(Supplier, Executor) instead of ExecutorService#submit(Callable<T>):

https://github.com/zeroturnaround/zt-exec/blob/08dda48d02b76f17b9fd2f1f55cf2b008ffc242c/src/main/java/org/zeroturnaround/exec/ProcessExecutor.java#L1147

Changing the signature of the methods and variables for CompletableFuture should not have any impact in clients of the API (but maybe on custom implementations). Another putative side-effect is that the shutdown of the ExecutorService might fail if chaining in an asynchronous way the produced CompletableFuture.

Could it be possible to implement such a solution? Thanks!

nemecec commented 1 year ago

Would you be willing to send a pull request? (Sorry for the long delay, I'm taking over maintenance of this project so communication should be faster from now on)