Refactor: Use CompletableFuture instead of Future
Change-Id: I7bf71a31a6c870c59783caa638c47bc040f655c8
diff --git a/core/net/src/main/java/org/onosproject/net/intent/impl/IntentManager.java b/core/net/src/main/java/org/onosproject/net/intent/impl/IntentManager.java
index 0d7d6b5..324a561 100644
--- a/core/net/src/main/java/org/onosproject/net/intent/impl/IntentManager.java
+++ b/core/net/src/main/java/org/onosproject/net/intent/impl/IntentManager.java
@@ -51,9 +51,9 @@
import java.util.List;
import java.util.Map;
import java.util.Optional;
+import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Future;
import java.util.stream.Collectors;
import static com.google.common.base.Preconditions.checkNotNull;
@@ -286,10 +286,10 @@
}
}
- private Future<FinalIntentProcessPhase> submitIntentData(IntentData data) {
+ private CompletableFuture<FinalIntentProcessPhase> submitIntentData(IntentData data) {
IntentData current = store.getIntentData(data.key());
IntentProcessPhase initial = newInitialPhase(processor, data, current);
- return workerExecutor.submit(() -> {
+ return CompletableFuture.supplyAsync(() -> {
Optional<IntentProcessPhase> currentPhase = Optional.of(initial);
IntentProcessPhase previousPhase = initial;
@@ -298,7 +298,7 @@
currentPhase = previousPhase.execute();
}
return (FinalIntentProcessPhase) previousPhase;
- });
+ }, workerExecutor);
}
private class InternalBatchDelegate implements IntentBatchDelegate {
@@ -333,15 +333,15 @@
}
}
- private List<Future<FinalIntentProcessPhase>> createIntentUpdates(Collection<IntentData> data) {
+ private List<CompletableFuture<FinalIntentProcessPhase>> createIntentUpdates(Collection<IntentData> data) {
return data.stream()
.map(IntentManager.this::submitIntentData)
.collect(Collectors.toList());
}
- private List<FinalIntentProcessPhase> waitForFutures(List<Future<FinalIntentProcessPhase>> futures) {
+ private List<FinalIntentProcessPhase> waitForFutures(List<CompletableFuture<FinalIntentProcessPhase>> futures) {
ImmutableList.Builder<FinalIntentProcessPhase> updateBuilder = ImmutableList.builder();
- for (Future<FinalIntentProcessPhase> future : futures) {
+ for (CompletableFuture<FinalIntentProcessPhase> future : futures) {
try {
updateBuilder.add(future.get());
} catch (InterruptedException | ExecutionException e) {