|
4 | 4 | package scala.compat.java8
|
5 | 5 |
|
6 | 6 | import scala.concurrent.java8.FuturesConvertersImpl._
|
7 |
| -import scala.concurrent.{ Future, Promise, ExecutionContext, ExecutionContextExecutorService, ExecutionContextExecutor, impl } |
8 |
| -import java.util.concurrent.{ CompletionStage, Executor, ExecutorService, CompletableFuture } |
9 |
| -import scala.util.{ Try, Success, Failure } |
10 |
| -import java.util.function.{ BiConsumer, Function ⇒ JF, Consumer, BiFunction } |
| 7 | +import scala.concurrent.{ExecutionContext, ExecutionContextExecutor, ExecutionContextExecutorService, Future, Promise} |
| 8 | +import java.util.concurrent.{CompletableFuture, CompletionStage, ExecutionException, Executor, ExecutorService} |
| 9 | + |
| 10 | +import scala.util.{Failure, Try} |
| 11 | +import java.util.function.Consumer |
11 | 12 |
|
12 | 13 | /**
|
13 | 14 | * This class contains static methods which convert between Java CompletionStage
|
@@ -77,6 +78,8 @@ object FutureConverters {
|
77 | 78 | def toScala[T](cs: CompletionStage[T]): Future[T] = {
|
78 | 79 | cs match {
|
79 | 80 | case cf: CF[T] => cf.wrapped
|
| 81 | + case cf: CompletableFuture[T] if cf.isDone => |
| 82 | + Future fromTry Try(cf.get()).recoverWith { case e: ExecutionException => Failure(e.getCause) } |
80 | 83 | case _ =>
|
81 | 84 | val p = new P[T](cs)
|
82 | 85 | cs whenComplete p
|
|
0 commit comments