/** * Converts a Scala {@link Future} to a {@link CompletableFuture}. * * @param scalaFuture to convert to a Java 8 CompletableFuture * @param <T> type of the future value * @return Java 8 CompletableFuture */ public static <T> CompletableFuture<T> toJava(Future<T> scalaFuture) { final CompletableFuture<T> result = new CompletableFuture<>(); scalaFuture.onComplete(new OnComplete<T>() { @Override public void onComplete(Throwable failure, T success) { if (failure != null) { result.completeExceptionally(failure); } else { result.complete(success); } } }, Executors.directExecutionContext()); return result; }
/** * Converts a Scala {@link Future} to a {@link CompletableFuture}. * * @param scalaFuture to convert to a Java 8 CompletableFuture * @param <T> type of the future value * @param <U> type of the original future * @return Java 8 CompletableFuture */ public static <T, U extends T> CompletableFuture<T> toJava(Future<U> scalaFuture) { final CompletableFuture<T> result = new CompletableFuture<>(); scalaFuture.onComplete(new OnComplete<U>() { @Override public void onComplete(Throwable failure, U success) { if (failure != null) { result.completeExceptionally(failure); } else { result.complete(success); } } }, Executors.directExecutionContext()); return result; }
/** * Converts a Scala {@link Future} to a {@link CompletableFuture}. * * @param scalaFuture to convert to a Java 8 CompletableFuture * @param <T> type of the future value * @param <U> type of the original future * @return Java 8 CompletableFuture */ public static <T, U extends T> CompletableFuture<T> toJava(Future<U> scalaFuture) { final CompletableFuture<T> result = new CompletableFuture<>(); scalaFuture.onComplete(new OnComplete<U>() { @Override public void onComplete(Throwable failure, U success) { if (failure != null) { result.completeExceptionally(failure); } else { result.complete(success); } } }, Executors.directExecutionContext()); return result; }