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);
}