]> source.dussan.org Git - pf4j.git/commitdiff
Returns CompletionStage instead of CompletableFuture in Async API async
authorDecebal Suiu <decebal.suiu@gmail.com>
Fri, 19 Apr 2019 10:50:15 +0000 (13:50 +0300)
committerDecebal Suiu <decebal.suiu@gmail.com>
Fri, 19 Apr 2019 10:50:15 +0000 (13:50 +0300)
demo/app/src/main/java/org/pf4j/demo/Boot.java
pf4j/src/main/java/org/pf4j/AsyncPluginManager.java
pf4j/src/main/java/org/pf4j/DefaultAsyncPluginManager.java

index c4ddc3f7f0367b0800723a398702639172f7f027..904b32ffa3ab930899d269e8c3c75f97f9cf18f3 100644 (file)
@@ -27,7 +27,7 @@ import org.pf4j.demo.api.Greeting;
 
 import java.util.List;
 import java.util.Set;
-import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.CompletionStage;
 
 /**
  * A boot class that start the demo.
@@ -55,19 +55,19 @@ public class Boot {
 
         // load the plugins
 //        pluginManager.loadPlugins();
-        CompletableFuture<Void> feature = pluginManager.loadPluginsAsync();
-        feature.thenRun(() -> System.out.println("Plugins loaded"));
+        CompletionStage<Void> stage = pluginManager.loadPluginsAsync();
+        stage.thenRun(() -> System.out.println("Plugins loaded"));
 
         // enable a disabled plugin
 //        pluginManager.enablePlugin("welcome-plugin");
 
         // start (active/resolved) the plugins
 //        pluginManager.startPlugins();
-        feature.thenCompose(v -> pluginManager.startPluginsAsync());
-        feature.thenRun(() -> System.out.println("Plugins started"));
+        stage.thenCompose(v -> pluginManager.startPluginsAsync());
+        stage.thenRun(() -> System.out.println("Plugins started"));
 
         // block and wait for the future to complete (not the best approach in real applications)
-        feature.get();
+        stage.toCompletableFuture().get();
 
         // retrieves the extensions for Greeting extension point
         List<Greeting> greetings = pluginManager.getExtensions(Greeting.class);
index 5f3c12b1caefcddb3e55321f62922e8a2d9de2f6..d1195d64ff3b7e797b216f887f20dc6891ee596d 100644 (file)
@@ -15,7 +15,7 @@
  */
 package org.pf4j;
 
-import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.CompletionStage;
 
 /**
  * A {@link PluginManager} that supports asynchronous operation with the methods ending in {@code Async}.
@@ -24,8 +24,8 @@ import java.util.concurrent.CompletableFuture;
  */
 public interface AsyncPluginManager extends PluginManager {
 
-    CompletableFuture<Void> loadPluginsAsync();
+    CompletionStage<Void> loadPluginsAsync();
 
-    CompletableFuture<Void> startPluginsAsync();
+    CompletionStage<Void> startPluginsAsync();
 
 }
index 35d3d9a2278173a4b5bbf7da75457440d17863c9..ecbc3ff6fe3a6a8a9a229cf25f754fff87ff4e61 100644 (file)
@@ -23,6 +23,7 @@ import java.nio.file.Path;
 import java.util.List;
 import java.util.Objects;
 import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.CompletionStage;
 
 /**
  * An extension of {@link DefaultPluginManager} that supports asynchronous methods (@{AsyncPluginManager}).
@@ -34,7 +35,7 @@ public class DefaultAsyncPluginManager extends DefaultPluginManager implements A
     private static final Logger log = LoggerFactory.getLogger(DefaultAsyncPluginManager.class);
 
     @Override
-    public CompletableFuture<Void> loadPluginsAsync() {
+    public CompletionStage<Void> loadPluginsAsync() {
         Path pluginsRoot = getPluginsRoot();
         PluginRepository pluginRepository = getPluginRepository();
 
@@ -75,7 +76,7 @@ public class DefaultAsyncPluginManager extends DefaultPluginManager implements A
     }
 
     @Override
-    public CompletableFuture<Void> startPluginsAsync() {
+    public CompletionStage<Void> startPluginsAsync() {
         /*
         // chain start plugins one after another
         CompletableFuture<Void> feature = CompletableFuture.completedFuture(null);
@@ -91,7 +92,7 @@ public class DefaultAsyncPluginManager extends DefaultPluginManager implements A
             .toArray(CompletableFuture[]::new));
     }
 
-    protected CompletableFuture<PluginWrapper> loadPluginFromPathAsync(Path pluginPath) {
+    protected CompletionStage<PluginWrapper> loadPluginFromPathAsync(Path pluginPath) {
         return CompletableFuture.supplyAsync(() -> {
             try {
                 return loadPluginFromPath(pluginPath);
@@ -102,7 +103,7 @@ public class DefaultAsyncPluginManager extends DefaultPluginManager implements A
         });
     }
 
-    protected CompletableFuture<Void> startPluginAsync(PluginWrapper pluginWrapper) {
+    protected CompletionStage<Void> startPluginAsync(PluginWrapper pluginWrapper) {
         return CompletableFuture.runAsync(() -> {
             PluginState pluginState = pluginWrapper.getPluginState();
             if ((PluginState.DISABLED != pluginState) && (PluginState.STARTED != pluginState)) {