diff --git a/src/main/java/org/warp/commonutils/concurrency/future/CompletableFutureUtils.java b/src/main/java/org/warp/commonutils/concurrency/future/CompletableFutureUtils.java index fc28d5f..34e3040 100644 --- a/src/main/java/org/warp/commonutils/concurrency/future/CompletableFutureUtils.java +++ b/src/main/java/org/warp/commonutils/concurrency/future/CompletableFutureUtils.java @@ -28,6 +28,28 @@ import org.warp.commonutils.type.ScoredValue; public class CompletableFutureUtils { + /** + * Safely get a CompletableFuture asynchronously + */ + public static CompletableFuture getCompletableFutureAsync(Supplier> completableFutureSupplier, Executor executor) { + CompletableFuture cf = new CompletableFuture<>(); + executor.execute(() -> { + try { + var cf2 = completableFutureSupplier.get(); + cf2.whenComplete((result, error) -> { + if (error == null) { + cf.complete(result); + } else { + cf.completeExceptionally(error); + } + }); + } catch (Exception ex) { + cf.completeExceptionally(ex); + } + }); + return cf; + } + /** * Safely get a CompletableFuture or a FailedFuture */