This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch camel-3.20.x
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/camel-3.20.x by this push:
     new a460b86f9ee CAMEL-19326: camel-jbang - Register reload services eager
a460b86f9ee is described below

commit a460b86f9ee643b79e15be2096372b44636beee4
Author: Claus Ibsen <[email protected]>
AuthorDate: Mon May 8 10:36:51 2023 +0200

    CAMEL-19326: camel-jbang - Register reload services eager
---
 .../apache/camel/spi/ContextReloadStrategy.java    | 25 +---------------------
 ...textReloadStrategy.java => ReloadStrategy.java} | 11 ++++------
 .../apache/camel/spi/ResourceReloadStrategy.java   | 20 ++---------------
 .../camel/impl/console/ContextDevConsole.java      | 19 +++++-----------
 .../support/FileWatcherResourceReloadStrategy.java |  5 +++++
 .../camel/support/RouteOnDemandReloadStrategy.java |  1 +
 .../camel/cli/connector/LocalCliConnector.java     | 25 ++++++----------------
 .../java/org/apache/camel/main/KameletMain.java    | 11 ++++++++++
 8 files changed, 35 insertions(+), 82 deletions(-)

diff --git 
a/core/camel-api/src/main/java/org/apache/camel/spi/ContextReloadStrategy.java 
b/core/camel-api/src/main/java/org/apache/camel/spi/ContextReloadStrategy.java
index 5dc6940ab6d..e8e45ade249 100644
--- 
a/core/camel-api/src/main/java/org/apache/camel/spi/ContextReloadStrategy.java
+++ 
b/core/camel-api/src/main/java/org/apache/camel/spi/ContextReloadStrategy.java
@@ -17,8 +17,6 @@
 package org.apache.camel.spi;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.CamelContextAware;
-import org.apache.camel.StaticService;
 
 /**
  * SPI strategy for reloading {@link CamelContext}.
@@ -28,27 +26,6 @@ import org.apache.camel.StaticService;
  *
  * @see ResourceReloadStrategy
  */
-public interface ContextReloadStrategy extends StaticService, 
CamelContextAware {
+public interface ContextReloadStrategy extends ReloadStrategy {
 
-    /**
-     * Trigger reload of the {@link CamelContext}.
-     *
-     * @param source source that triggers the reloading.
-     */
-    void onReload(Object source);
-
-    /**
-     * Number of reloads succeeded.
-     */
-    int getReloadCounter();
-
-    /**
-     * Number of reloads failed.
-     */
-    int getFailedCounter();
-
-    /**
-     * Reset the counters.
-     */
-    void resetCounters();
 }
diff --git 
a/core/camel-api/src/main/java/org/apache/camel/spi/ContextReloadStrategy.java 
b/core/camel-api/src/main/java/org/apache/camel/spi/ReloadStrategy.java
similarity index 78%
copy from 
core/camel-api/src/main/java/org/apache/camel/spi/ContextReloadStrategy.java
copy to core/camel-api/src/main/java/org/apache/camel/spi/ReloadStrategy.java
index 5dc6940ab6d..c390f732172 100644
--- 
a/core/camel-api/src/main/java/org/apache/camel/spi/ContextReloadStrategy.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/ReloadStrategy.java
@@ -16,22 +16,19 @@
  */
 package org.apache.camel.spi;
 
-import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.StaticService;
 
 /**
- * SPI strategy for reloading {@link CamelContext}.
- *
- * The reloading is limited to all routes and property placeholders. General 
services in the {@link CamelContext} is not
- * reloaded.
+ * SPI strategy for reloading.
  *
+ * @see ContextReloadStrategy
  * @see ResourceReloadStrategy
  */
-public interface ContextReloadStrategy extends StaticService, 
CamelContextAware {
+public interface ReloadStrategy extends StaticService, CamelContextAware {
 
     /**
-     * Trigger reload of the {@link CamelContext}.
+     * Trigger reload.
      *
      * @param source source that triggers the reloading.
      */
diff --git 
a/core/camel-api/src/main/java/org/apache/camel/spi/ResourceReloadStrategy.java 
b/core/camel-api/src/main/java/org/apache/camel/spi/ResourceReloadStrategy.java
index 1fd5bb4e781..2f2bb713157 100644
--- 
a/core/camel-api/src/main/java/org/apache/camel/spi/ResourceReloadStrategy.java
+++ 
b/core/camel-api/src/main/java/org/apache/camel/spi/ResourceReloadStrategy.java
@@ -16,16 +16,14 @@
  */
 package org.apache.camel.spi;
 
-import org.apache.camel.CamelContextAware;
-import org.apache.camel.StaticService;
-
 /**
  * SPI strategy for reloading {@link Resource} in an existing running {@link 
org.apache.camel.CamelContext}
  *
+ * @see ContextReloadStrategy
  * @see ResourceReload
  * @see Resource
  */
-public interface ResourceReloadStrategy extends StaticService, 
CamelContextAware {
+public interface ResourceReloadStrategy extends ReloadStrategy {
 
     /**
      * Gets the resource listener that is triggered on reload.
@@ -37,18 +35,4 @@ public interface ResourceReloadStrategy extends 
StaticService, CamelContextAware
      */
     void setResourceReload(ResourceReload listener);
 
-    /**
-     * Number of reloads succeeded.
-     */
-    int getReloadCounter();
-
-    /**
-     * Number of reloads failed.
-     */
-    int getFailedCounter();
-
-    /**
-     * Reset the counters.
-     */
-    void resetCounters();
 }
diff --git 
a/core/camel-console/src/main/java/org/apache/camel/impl/console/ContextDevConsole.java
 
b/core/camel-console/src/main/java/org/apache/camel/impl/console/ContextDevConsole.java
index 514fbc20958..ee8dd46e412 100644
--- 
a/core/camel-console/src/main/java/org/apache/camel/impl/console/ContextDevConsole.java
+++ 
b/core/camel-console/src/main/java/org/apache/camel/impl/console/ContextDevConsole.java
@@ -24,8 +24,7 @@ import java.util.Set;
 import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.api.management.ManagedCamelContext;
 import org.apache.camel.api.management.mbean.ManagedCamelContextMBean;
-import org.apache.camel.spi.ContextReloadStrategy;
-import org.apache.camel.spi.ResourceReloadStrategy;
+import org.apache.camel.spi.ReloadStrategy;
 import org.apache.camel.spi.annotations.DevConsole;
 import org.apache.camel.support.console.AbstractDevConsole;
 import org.apache.camel.util.TimeUtils;
@@ -54,12 +53,8 @@ public class ContextDevConsole extends AbstractDevConsole {
             ManagedCamelContextMBean mb = mcc.getManagedCamelContext();
             if (mb != null) {
                 int reloaded = 0;
-                Set<ResourceReloadStrategy> rrs = 
getCamelContext().hasServices(ResourceReloadStrategy.class);
-                for (ResourceReloadStrategy r : rrs) {
-                    reloaded += r.getReloadCounter();
-                }
-                Set<ContextReloadStrategy> crs = 
getCamelContext().hasServices(ContextReloadStrategy.class);
-                for (ContextReloadStrategy r : crs) {
+                Set<ReloadStrategy> rs = 
getCamelContext().hasServices(ReloadStrategy.class);
+                for (ReloadStrategy r : rs) {
                     reloaded += r.getReloadCounter();
                 }
                 String load1 = getLoad1(mb);
@@ -124,12 +119,8 @@ public class ContextDevConsole extends AbstractDevConsole {
                 JsonObject stats = new JsonObject();
 
                 int reloaded = 0;
-                Set<ResourceReloadStrategy> rrs = 
getCamelContext().hasServices(ResourceReloadStrategy.class);
-                for (ResourceReloadStrategy r : rrs) {
-                    reloaded += r.getReloadCounter();
-                }
-                Set<ContextReloadStrategy> crs = 
getCamelContext().hasServices(ContextReloadStrategy.class);
-                for (ContextReloadStrategy r : crs) {
+                Set<ReloadStrategy> rs = 
getCamelContext().hasServices(ReloadStrategy.class);
+                for (ReloadStrategy r : rs) {
                     reloaded += r.getReloadCounter();
                 }
                 String load1 = getLoad1(mb);
diff --git 
a/core/camel-support/src/main/java/org/apache/camel/support/FileWatcherResourceReloadStrategy.java
 
b/core/camel-support/src/main/java/org/apache/camel/support/FileWatcherResourceReloadStrategy.java
index 54a865c84b7..ad7f0176966 100644
--- 
a/core/camel-support/src/main/java/org/apache/camel/support/FileWatcherResourceReloadStrategy.java
+++ 
b/core/camel-support/src/main/java/org/apache/camel/support/FileWatcherResourceReloadStrategy.java
@@ -134,6 +134,11 @@ public class FileWatcherResourceReloadStrategy extends 
ResourceReloadStrategySup
         this.fileFilter = fileFilter;
     }
 
+    @Override
+    public void onReload(Object source) {
+        // this implementation uses a watcher to automatic reload
+    }
+
     @Override
     protected void doStart() throws Exception {
         super.doStart();
diff --git 
a/core/camel-support/src/main/java/org/apache/camel/support/RouteOnDemandReloadStrategy.java
 
b/core/camel-support/src/main/java/org/apache/camel/support/RouteOnDemandReloadStrategy.java
index 6012c9e564a..0e300322d29 100644
--- 
a/core/camel-support/src/main/java/org/apache/camel/support/RouteOnDemandReloadStrategy.java
+++ 
b/core/camel-support/src/main/java/org/apache/camel/support/RouteOnDemandReloadStrategy.java
@@ -62,6 +62,7 @@ public class RouteOnDemandReloadStrategy extends 
RouteWatcherReloadStrategy {
     /**
      * Triggers on-demand reloading
      */
+    @Override
     public void onReload(Object source) {
         try {
             doOnReload(source);
diff --git 
a/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java
 
b/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java
index a0047ec8690..248b15394f5 100644
--- 
a/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java
+++ 
b/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java
@@ -47,10 +47,7 @@ import org.apache.camel.spi.CliConnector;
 import org.apache.camel.spi.CliConnectorFactory;
 import org.apache.camel.spi.ContextReloadStrategy;
 import org.apache.camel.spi.ResourceReloadStrategy;
-import org.apache.camel.support.DefaultContextReloadStrategy;
 import org.apache.camel.support.PatternHelper;
-import org.apache.camel.support.RouteOnDemandReloadStrategy;
-import org.apache.camel.support.RouteWatcherReloadStrategy;
 import org.apache.camel.support.service.ServiceHelper;
 import org.apache.camel.support.service.ServiceSupport;
 import org.apache.camel.util.FileUtil;
@@ -248,24 +245,14 @@ public class LocalCliConnector extends ServiceSupport 
implements CliConnector, C
             } else if ("gc".equals(action)) {
                 System.gc();
             } else if ("reload".equals(action)) {
-                Optional<String> dir = 
camelContext.getPropertiesComponent().resolveProperty("camel.jbang.sourceDir");
-                if (dir.isPresent()) {
-                    // if using source-dir then reload this specific directory
-                    RouteOnDemandReloadStrategy reloader = 
camelContext.hasService(RouteOnDemandReloadStrategy.class);
-                    if (reloader == null) {
-                        reloader = new RouteOnDemandReloadStrategy(dir.get(), 
true);
-                        reloader.setPattern("*");
-                        camelContext.addService(reloader);
-                    }
-                    reloader.onReload("Camel CLI");
+                ContextReloadStrategy cr = 
camelContext.hasService(ContextReloadStrategy.class);
+                if (cr != null) {
+                    cr.onReload("Camel CLI");
                 } else {
-                    // general camel reloading
-                    ContextReloadStrategy reloader = 
camelContext.hasService(ContextReloadStrategy.class);
-                    if (reloader == null) {
-                        reloader = new DefaultContextReloadStrategy();
-                        camelContext.addService(reloader);
+                    ResourceReloadStrategy rr = 
camelContext.hasService(ResourceReloadStrategy.class);
+                    if (rr != null) {
+                        rr.onReload("Camel CLI");
                     }
-                    reloader.onReload("Camel CLI");
                 }
             } else if ("reset-stats".equals(action)) {
                 ManagedCamelContext mcc = 
camelContext.getExtension(ManagedCamelContext.class);
diff --git 
a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/KameletMain.java 
b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/KameletMain.java
index e6e7138f097..692e8872a72 100644
--- 
a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/KameletMain.java
+++ 
b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/KameletMain.java
@@ -58,6 +58,8 @@ import org.apache.camel.spi.CliConnector;
 import org.apache.camel.spi.CliConnectorFactory;
 import org.apache.camel.spi.Registry;
 import org.apache.camel.startup.jfr.FlightRecorderStartupStepRecorder;
+import org.apache.camel.support.DefaultContextReloadStrategy;
+import org.apache.camel.support.RouteOnDemandReloadStrategy;
 import org.apache.camel.support.service.ServiceHelper;
 
 /**
@@ -447,6 +449,15 @@ public class KameletMain extends MainCommandLineSupport {
             answer.setInjector(new KameletMainInjector(answer.getInjector(), 
stub));
             answer.addService(new DependencyDownloaderKamelet(answer));
             
answer.getRegistry().bind(DownloadModelineParser.class.getSimpleName(), new 
DownloadModelineParser(answer));
+            // reloader
+            String sourceDir = 
getInitialProperties().getProperty("camel.jbang.sourceDir");
+            if (sourceDir != null) {
+                RouteOnDemandReloadStrategy reloader = new 
RouteOnDemandReloadStrategy(sourceDir, true);
+                reloader.setPattern("*");
+                answer.addService(reloader);
+            } else {
+                answer.addService(new DefaultContextReloadStrategy());
+            }
         } catch (Exception e) {
             throw RuntimeCamelException.wrapRuntimeException(e);
         }

Reply via email to