This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new a9700259b0e camel-jbang - Add reload command
a9700259b0e is described below
commit a9700259b0e4a3ff5bd78399cd517efd491de7cf
Author: Claus Ibsen <[email protected]>
AuthorDate: Thu Sep 8 15:13:54 2022 +0200
camel-jbang - Add reload command
---
...ontextReloadStrategyPropertiesFunctionTest.java | 2 +-
.../camel/impl/CamelContextReloadStrategyTest.java | 2 +-
.../org/apache/camel/main/BaseMainSupport.java | 2 +-
.../camel/main/DefaultConfigurationConfigurer.java | 2 +-
.../support}/DefaultContextReloadStrategy.java | 6 ++-
.../camel/cli/connector/LocalCliConnector.java | 9 ++++
.../dsl/jbang/core/commands/CamelJBangMain.java | 2 +
.../core/commands/action/CamelReloadAction.java | 51 ++++++++++++++++++++++
8 files changed, 70 insertions(+), 6 deletions(-)
diff --git
a/core/camel-core/src/test/java/org/apache/camel/impl/CamelContextReloadStrategyPropertiesFunctionTest.java
b/core/camel-core/src/test/java/org/apache/camel/impl/CamelContextReloadStrategyPropertiesFunctionTest.java
index f6c45292848..d26bc96a7ee 100644
---
a/core/camel-core/src/test/java/org/apache/camel/impl/CamelContextReloadStrategyPropertiesFunctionTest.java
+++
b/core/camel-core/src/test/java/org/apache/camel/impl/CamelContextReloadStrategyPropertiesFunctionTest.java
@@ -20,7 +20,7 @@ import org.apache.camel.CamelContext;
import org.apache.camel.ContextTestSupport;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.engine.DefaultContextReloadStrategy;
+import org.apache.camel.support.DefaultContextReloadStrategy;
import org.apache.camel.spi.ContextReloadStrategy;
import org.apache.camel.spi.PropertiesComponent;
import org.apache.camel.spi.PropertiesFunction;
diff --git
a/core/camel-core/src/test/java/org/apache/camel/impl/CamelContextReloadStrategyTest.java
b/core/camel-core/src/test/java/org/apache/camel/impl/CamelContextReloadStrategyTest.java
index 5a8cd4683ed..f5e047eee23 100644
---
a/core/camel-core/src/test/java/org/apache/camel/impl/CamelContextReloadStrategyTest.java
+++
b/core/camel-core/src/test/java/org/apache/camel/impl/CamelContextReloadStrategyTest.java
@@ -20,7 +20,7 @@ import org.apache.camel.CamelContext;
import org.apache.camel.ContextTestSupport;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.engine.DefaultContextReloadStrategy;
+import org.apache.camel.support.DefaultContextReloadStrategy;
import org.apache.camel.spi.ContextReloadStrategy;
import org.apache.camel.spi.PropertiesComponent;
import org.apache.camel.spi.PropertiesSource;
diff --git
a/core/camel-main/src/main/java/org/apache/camel/main/BaseMainSupport.java
b/core/camel-main/src/main/java/org/apache/camel/main/BaseMainSupport.java
index b1451aca40f..651461fb7b1 100644
--- a/core/camel-main/src/main/java/org/apache/camel/main/BaseMainSupport.java
+++ b/core/camel-main/src/main/java/org/apache/camel/main/BaseMainSupport.java
@@ -48,7 +48,7 @@ import org.apache.camel.console.DevConsoleRegistry;
import org.apache.camel.health.HealthCheck;
import org.apache.camel.health.HealthCheckRegistry;
import org.apache.camel.health.HealthCheckRepository;
-import org.apache.camel.impl.engine.DefaultContextReloadStrategy;
+import org.apache.camel.support.DefaultContextReloadStrategy;
import org.apache.camel.saga.CamelSagaService;
import org.apache.camel.spi.AutowiredLifecycleStrategy;
import org.apache.camel.spi.CamelBeanPostProcessor;
diff --git
a/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationConfigurer.java
b/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationConfigurer.java
index 2059a35c296..cade2332f52 100644
---
a/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationConfigurer.java
+++
b/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationConfigurer.java
@@ -34,7 +34,7 @@ import org.apache.camel.console.DevConsoleRegistry;
import org.apache.camel.health.HealthCheckRegistry;
import org.apache.camel.health.HealthCheckRepository;
import org.apache.camel.impl.debugger.BacklogTracer;
-import org.apache.camel.impl.engine.DefaultContextReloadStrategy;
+import org.apache.camel.support.DefaultContextReloadStrategy;
import org.apache.camel.impl.engine.PooledExchangeFactory;
import org.apache.camel.impl.engine.PooledProcessorExchangeFactory;
import org.apache.camel.impl.engine.PrototypeExchangeFactory;
diff --git
a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultContextReloadStrategy.java
b/core/camel-support/src/main/java/org/apache/camel/support/DefaultContextReloadStrategy.java
similarity index 97%
rename from
core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultContextReloadStrategy.java
rename to
core/camel-support/src/main/java/org/apache/camel/support/DefaultContextReloadStrategy.java
index 0fd69afb62e..4df77bc0ed2 100644
---
a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultContextReloadStrategy.java
+++
b/core/camel-support/src/main/java/org/apache/camel/support/DefaultContextReloadStrategy.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.impl.engine;
+package org.apache.camel.support;
import org.apache.camel.CamelContext;
import org.apache.camel.api.management.ManagedAttribute;
@@ -22,12 +22,14 @@ import org.apache.camel.api.management.ManagedOperation;
import org.apache.camel.spi.ContextReloadStrategy;
import org.apache.camel.spi.PropertiesComponent;
import org.apache.camel.spi.PropertiesSource;
-import org.apache.camel.support.EventHelper;
import org.apache.camel.support.service.ServiceHelper;
import org.apache.camel.support.service.ServiceSupport;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+/**
+ * Default {@link ContextReloadStrategy}.
+ */
public class DefaultContextReloadStrategy extends ServiceSupport implements
ContextReloadStrategy {
private static final Logger LOG =
LoggerFactory.getLogger(DefaultContextReloadStrategy.class);
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 100ce4f67a1..95ef7ea11ae 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
@@ -41,6 +41,8 @@ import org.apache.camel.Route;
import org.apache.camel.console.DevConsole;
import org.apache.camel.spi.CliConnector;
import org.apache.camel.spi.CliConnectorFactory;
+import org.apache.camel.spi.ContextReloadStrategy;
+import org.apache.camel.support.DefaultContextReloadStrategy;
import org.apache.camel.support.PatternHelper;
import org.apache.camel.support.service.ServiceHelper;
import org.apache.camel.support.service.ServiceSupport;
@@ -225,6 +227,13 @@ public class LocalCliConnector extends ServiceSupport
implements CliConnector, C
}
} else if ("gc".equals(action)) {
System.gc();
+ } else if ("reload".equals(action)) {
+ ContextReloadStrategy reloader =
camelContext.hasService(ContextReloadStrategy.class);
+ if (reloader == null) {
+ reloader = new DefaultContextReloadStrategy();
+ camelContext.addService(reloader);
+ }
+ reloader.onReload("Camel CLI");
}
// action done so delete file
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/CamelJBangMain.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/CamelJBangMain.java
index 88577458c83..04e60a92f8e 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/CamelJBangMain.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/CamelJBangMain.java
@@ -22,6 +22,7 @@ import org.apache.camel.catalog.CamelCatalog;
import org.apache.camel.catalog.DefaultCamelCatalog;
import org.apache.camel.dsl.jbang.core.commands.action.CamelAction;
import org.apache.camel.dsl.jbang.core.commands.action.CamelGCAction;
+import org.apache.camel.dsl.jbang.core.commands.action.CamelReloadAction;
import org.apache.camel.dsl.jbang.core.commands.action.CamelRouteStartAction;
import org.apache.camel.dsl.jbang.core.commands.action.CamelRouteStopAction;
import org.apache.camel.dsl.jbang.core.commands.process.CamelContextStatus;
@@ -57,6 +58,7 @@ public class CamelJBangMain implements Callable<Integer> {
.addSubcommand("cmd", new CommandLine(new CamelAction(main))
.addSubcommand("start-route", new CommandLine(new
CamelRouteStartAction(main)))
.addSubcommand("stop-route", new CommandLine(new
CamelRouteStopAction(main)))
+ .addSubcommand("reload", new CommandLine(new
CamelReloadAction(main)))
.addSubcommand("gc", new CommandLine(new
CamelGCAction(main))))
.addSubcommand("generate", new CommandLine(new
CodeGenerator(main))
.addSubcommand("rest", new CommandLine(new
CodeRestGenerator(main))))
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelReloadAction.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelReloadAction.java
new file mode 100644
index 00000000000..1430a5aac8b
--- /dev/null
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelReloadAction.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.dsl.jbang.core.commands.action;
+
+import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
+import org.apache.camel.util.IOHelper;
+import org.apache.camel.util.json.JsonObject;
+import picocli.CommandLine;
+
+import java.io.File;
+import java.util.List;
+
[email protected](name = "reload",
+ description = "Trigger reloading Camel")
+public class CamelReloadAction extends ActionBaseCommand {
+
+ @CommandLine.Parameters(description = "Name or pid of running Camel
integration. (default selects all)", arity = "0..1")
+ String name = "*";
+
+ public CamelReloadAction(CamelJBangMain main) {
+ super(main);
+ }
+
+ @Override
+ public Integer call() throws Exception {
+ List<Long> pids = findPids(name);
+ for (long pid : pids) {
+ JsonObject root = new JsonObject();
+ root.put("action", "reload");
+ File f = getActionFile("" + pid);
+ IOHelper.writeText(root.toJson(), f);
+ }
+
+ return 0;
+ }
+
+}