You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by fm...@apache.org on 2023/03/07 17:23:56 UTC

[camel] branch jbang-user-config updated (e850dc1faa5 -> 99c9129a75d)

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

fmariani pushed a change to branch jbang-user-config
in repository https://gitbox.apache.org/repos/asf/camel.git


    from e850dc1faa5 CAMEL-18508: camel-jbang - User config. WIP
     new e390430d372 Camel-JBang tests
     new 41142503893 Merge branch 'main' of github.com:apache/camel
     add 45761faa10d CAMEL-19062 - Clean up Parent POM - Xerces
     add 0e22fb70918 CAMEL-19062 - Clean up Parent POM - XML Apis
     add 4c587528f51 CAMEL-19062 - Clean up Parent POM - XML Apis
     add 8c44478ed4e CAMEL-19062 - Clean up Parent POM - Woodstox
     add 9a42c8a3d56 CAMEL-19062 - Clean up Parent POM - Woodstox
     add 6d2c0704565 CAMEL-19062 - Clean up Parent POM - Woodstox
     add ff40403eacb CAMEL-19062 - Clean up Parent POM - Avro and Avro IPC
     add 7c11d9623d3 CAMEL-19062 - Clean up Parent POM - Avro and Avro IPC
     add f9f13fed1fa CAMEL-19062 - Clean up Parent POM - FTP Server
     add f54eb0fb256 CAMEL-19062 - Clean up Parent POM - FTP Server
     add 585c6554e0b Fix saga-eip timeout description (#9472)
     new 144e8478049 Merge branch 'main' of github.com:apache/camel
     add 2facc57c7bc CAMEL-19120: export configurable template
     add 27e2ce100c3 CAMEL-19062 - Clean up Parent POM - Zookeeper
     new 16bf1bfd80e Merge branch 'main' of github.com:apache/camel
     add 01db5e7b5d2 CAMEL-19062 - Clean up Parent POM - Nitrite
     add 5077b16e06a CAMEL-19062 - Clean up Parent POM - Nitrite
     add 2552d61846c (chores) camel-jms: do not create test files in the component base dir
     new adc7ad08e50 Merge branch 'main' of github.com:apache/camel
     new 63a76ce3240 CAMEL-18508: camel-jbang - User config. WIP
     new 6f0341727ae CAMEL-18508: camel-jbang - User config. WIP
     new 0f231bc9e58 CAMEL-18508: camel-jbang - User config. WIP
     new 81bd09bb346 config commands
     new 99c9129a75d Merge branch 'jbang-user-config' of github.com:apache/camel into jbang-user-config

The 10 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../org/apache/camel/catalog/CamelCatalog.java     |  10 ++
 .../apache/camel/catalog/DefaultCamelCatalog.java  |   6 +
 .../org/apache/camel/catalog/CamelCatalogTest.java |  18 +++
 .../resources/org/apache/camel/catalog/bar/foo.txt |   1 +
 .../camel-avro-rpc-component/pom.xml               |   1 +
 components/camel-avro/pom.xml                      |   1 +
 .../camel/component/jms/tx/artemis-security.xml    |   6 +-
 components/camel-nitrite/pom.xml                   |   1 +
 components/camel-solr/pom.xml                      |   1 +
 core/camel-core-engine/pom.xml                     |   7 ++
 .../src/main/docs/modules/eips/pages/saga-eip.adoc |  11 +-
 core/camel-core/pom.xml                            |   7 ++
 core/camel-management-api/pom.xml                  |  14 +++
 core/camel-xml-jaxp/pom.xml                        |   7 ++
 .../apache/camel/dsl/jbang/core/commands/Bind.java |   2 +-
 .../dsl/jbang/core/commands/CamelJBangMain.java    |   7 +-
 .../camel/dsl/jbang/core/commands/Complete.java    |   2 +-
 .../dsl/jbang/core/commands/ConfigCommand.java     |  18 +++
 .../camel/dsl/jbang/core/commands/ConfigGet.java   |  30 +++++
 .../camel/dsl/jbang/core/commands/ConfigList.java  |  22 ++++
 .../camel/dsl/jbang/core/commands/ConfigSet.java   |  37 ++++++
 .../camel/dsl/jbang/core/commands/ConfigUnset.java |  27 ++++
 .../camel/dsl/jbang/core/commands/Export.java      |   3 +-
 .../dsl/jbang/core/commands/ExportBaseCommand.java |   4 +
 .../dsl/jbang/core/commands/ExportSpringBoot.java  |  34 ++++-
 .../apache/camel/dsl/jbang/core/commands/Init.java |   2 +-
 .../apache/camel/dsl/jbang/core/commands/Pipe.java |   2 +-
 .../apache/camel/dsl/jbang/core/commands/Run.java  |   5 +-
 .../camel/dsl/jbang/core/common/CatalogLoader.java |  14 ++-
 .../dsl/jbang/core/common/CommandLineHelper.java   |  44 ++++++-
 .../org/apache/camel/dsl/jbang/BackgroundTest.java | 139 +++++++++++++++++++++
 .../org/apache/camel/dsl/jbang/ConfigTest.java     |  29 +++++
 parent/pom.xml                                     |  60 ---------
 test-infra/camel-test-infra-ftp/pom.xml            |   1 +
 tests/camel-itest/pom.xml                          |   2 +
 35 files changed, 489 insertions(+), 86 deletions(-)
 create mode 100644 catalog/camel-catalog/src/test/resources/org/apache/camel/catalog/bar/foo.txt
 create mode 100644 dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ConfigCommand.java
 create mode 100644 dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ConfigGet.java
 create mode 100644 dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ConfigList.java
 create mode 100644 dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ConfigSet.java
 create mode 100644 dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ConfigUnset.java
 create mode 100644 dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/BackgroundTest.java
 create mode 100644 dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/ConfigTest.java


[camel] 01/10: Camel-JBang tests

Posted by fm...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

fmariani pushed a commit to branch jbang-user-config
in repository https://gitbox.apache.org/repos/asf/camel.git

commit e390430d37213aa6ea840c5174572940ca202547
Author: Croway <fe...@gmail.com>
AuthorDate: Wed Mar 1 11:43:12 2023 +0100

    Camel-JBang tests
---
 dsl/camel-jbang/camel-jbang-core/pom.xml           |  22 ++++
 .../apache/camel/dsl/jbang/core/commands/Bind.java |   2 +-
 .../camel/dsl/jbang/core/commands/Complete.java    |   2 +-
 .../camel/dsl/jbang/core/commands/Export.java      |   2 +-
 .../apache/camel/dsl/jbang/core/commands/Init.java |   2 +-
 .../apache/camel/dsl/jbang/core/commands/Pipe.java |   2 +-
 .../apache/camel/dsl/jbang/core/commands/Run.java  |   4 +-
 .../org/apache/camel/dsl/jbang/BackgroundTest.java | 139 +++++++++++++++++++++
 8 files changed, 168 insertions(+), 7 deletions(-)

diff --git a/dsl/camel-jbang/camel-jbang-core/pom.xml b/dsl/camel-jbang/camel-jbang-core/pom.xml
index 419a42c821a..8c60fd771b4 100644
--- a/dsl/camel-jbang/camel-jbang-core/pom.xml
+++ b/dsl/camel-jbang/camel-jbang-core/pom.xml
@@ -128,6 +128,28 @@
             <groupId>com.fasterxml.jackson.core</groupId>
             <artifactId>jackson-databind</artifactId>
         </dependency>
+
+        <!-- Test dependencies -->
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-api</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-engine</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-params</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.assertj</groupId>
+            <artifactId>assertj-core</artifactId>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
 </project>
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Bind.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Bind.java
index 6ab96f549f2..4fbd181c6af 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Bind.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Bind.java
@@ -45,7 +45,7 @@ import static org.apache.camel.dsl.yaml.common.YamlDeserializerSupport.asText;
 import static org.apache.camel.dsl.yaml.common.YamlDeserializerSupport.nodeAt;
 
 @Command(name = "bind", description = "Bind source and sink Kamelets as a new Camel integration")
-class Bind extends CamelCommand {
+public class Bind extends CamelCommand {
 
     @CommandLine.Option(names = { "--source" }, description = "Source (from) such as a Kamelet or Camel endpoint uri",
                         required = true)
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Complete.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Complete.java
index e958ff1efa1..f23ae4c83e3 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Complete.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Complete.java
@@ -22,7 +22,7 @@ import picocli.AutoComplete;
 import picocli.CommandLine;
 
 @CommandLine.Command(name = "complete", description = "Generate completion script for bash/zsh")
-class Complete extends CamelCommand {
+public class Complete extends CamelCommand {
 
     public Complete(CamelJBangMain main) {
         super(main);
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Export.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Export.java
index 3eb0815a346..fd38d2f10a5 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Export.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Export.java
@@ -27,7 +27,7 @@ import picocli.CommandLine.Command;
 
 @Command(name = "export",
          description = "Export Camel integration to Spring Boot or Quarkus based project")
-class Export extends ExportBaseCommand {
+public class Export extends ExportBaseCommand {
 
     public Export(CamelJBangMain main) {
         super(main);
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Init.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Init.java
index b578d169c6c..e5a73d38c60 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Init.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Init.java
@@ -42,7 +42,7 @@ import static org.apache.camel.dsl.jbang.core.common.GitHubHelper.asGithubSingle
 import static org.apache.camel.dsl.jbang.core.common.GitHubHelper.fetchGithubUrls;
 
 @Command(name = "init", description = "Creates a new Camel integration")
-class Init extends CamelCommand {
+public class Init extends CamelCommand {
 
     @Parameters(description = "Name of integration file (or a github link)", arity = "1",
                 paramLabel = "<file>", parameterConsumer = FileConsumer.class)
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Pipe.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Pipe.java
index abe17f93f17..fbc929fc7c2 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Pipe.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Pipe.java
@@ -22,7 +22,7 @@ import java.util.Stack;
 import picocli.CommandLine;
 
 @CommandLine.Command(name = "pipe", description = "Run Camel integration in pipe and filters mode for terminal scripting")
-class Pipe extends CamelCommand {
+public class Pipe extends CamelCommand {
 
     @CommandLine.Parameters(description = "Name of file", arity = "1",
                             paramLabel = "<file>", parameterConsumer = FileConsumer.class)
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
index 7bd9a459048..873d150362c 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
@@ -75,7 +75,7 @@ import static org.apache.camel.dsl.jbang.core.common.GitHubHelper.asGithubSingle
 import static org.apache.camel.dsl.jbang.core.common.GitHubHelper.fetchGithubUrls;
 
 @Command(name = "run", description = "Run as local Camel integration")
-class Run extends CamelCommand {
+public class Run extends CamelCommand {
 
     public static final String WORK_DIR = ".camel-jbang";
     public static final String RUN_SETTINGS_FILE = "camel-jbang-run.properties";
@@ -638,7 +638,7 @@ class Run extends CamelCommand {
             cmd = StringHelper.after(cmd, "main.CamelJBang ");
         }
         if (cmd == null) {
-            System.err.println("No Camel integration files to run");
+            spec.commandLine().getOut().println("No Camel integration files to run");
             return 1;
         }
         cmd = cmd.replaceFirst("--background=true", "");
diff --git a/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/BackgroundTest.java b/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/BackgroundTest.java
new file mode 100644
index 00000000000..868df823e19
--- /dev/null
+++ b/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/BackgroundTest.java
@@ -0,0 +1,139 @@
+package org.apache.camel.dsl.jbang;
+
+import org.apache.camel.dsl.jbang.core.commands.Bind;
+import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
+import org.apache.camel.dsl.jbang.core.commands.CodeGenerator;
+import org.apache.camel.dsl.jbang.core.commands.CodeRestGenerator;
+import org.apache.camel.dsl.jbang.core.commands.Complete;
+import org.apache.camel.dsl.jbang.core.commands.DependencyCommand;
+import org.apache.camel.dsl.jbang.core.commands.DependencyCopy;
+import org.apache.camel.dsl.jbang.core.commands.DependencyList;
+import org.apache.camel.dsl.jbang.core.commands.Export;
+import org.apache.camel.dsl.jbang.core.commands.Init;
+import org.apache.camel.dsl.jbang.core.commands.Pipe;
+import org.apache.camel.dsl.jbang.core.commands.Run;
+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.CamelLogAction;
+import org.apache.camel.dsl.jbang.core.commands.action.CamelReloadAction;
+import org.apache.camel.dsl.jbang.core.commands.action.CamelResetStatsAction;
+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.action.CamelSourceAction;
+import org.apache.camel.dsl.jbang.core.commands.action.CamelSourceTop;
+import org.apache.camel.dsl.jbang.core.commands.action.CamelThreadDump;
+import org.apache.camel.dsl.jbang.core.commands.action.CamelTraceAction;
+import org.apache.camel.dsl.jbang.core.commands.action.LoggerAction;
+import org.apache.camel.dsl.jbang.core.commands.action.RouteControllerAction;
+import org.apache.camel.dsl.jbang.core.commands.catalog.CatalogCommand;
+import org.apache.camel.dsl.jbang.core.commands.catalog.CatalogComponent;
+import org.apache.camel.dsl.jbang.core.commands.catalog.CatalogDataFormat;
+import org.apache.camel.dsl.jbang.core.commands.catalog.CatalogDoc;
+import org.apache.camel.dsl.jbang.core.commands.catalog.CatalogKamelet;
+import org.apache.camel.dsl.jbang.core.commands.catalog.CatalogLanguage;
+import org.apache.camel.dsl.jbang.core.commands.catalog.CatalogOther;
+import org.apache.camel.dsl.jbang.core.commands.process.CamelContextStatus;
+import org.apache.camel.dsl.jbang.core.commands.process.CamelContextTop;
+import org.apache.camel.dsl.jbang.core.commands.process.CamelCount;
+import org.apache.camel.dsl.jbang.core.commands.process.CamelProcessorStatus;
+import org.apache.camel.dsl.jbang.core.commands.process.CamelProcessorTop;
+import org.apache.camel.dsl.jbang.core.commands.process.CamelRouteStatus;
+import org.apache.camel.dsl.jbang.core.commands.process.CamelRouteTop;
+import org.apache.camel.dsl.jbang.core.commands.process.CamelStatus;
+import org.apache.camel.dsl.jbang.core.commands.process.CamelTop;
+import org.apache.camel.dsl.jbang.core.commands.process.Hawtio;
+import org.apache.camel.dsl.jbang.core.commands.process.Jolokia;
+import org.apache.camel.dsl.jbang.core.commands.process.ListBlocked;
+import org.apache.camel.dsl.jbang.core.commands.process.ListCircuitBreaker;
+import org.apache.camel.dsl.jbang.core.commands.process.ListEndpoint;
+import org.apache.camel.dsl.jbang.core.commands.process.ListEvent;
+import org.apache.camel.dsl.jbang.core.commands.process.ListHealth;
+import org.apache.camel.dsl.jbang.core.commands.process.ListInflight;
+import org.apache.camel.dsl.jbang.core.commands.process.ListMetric;
+import org.apache.camel.dsl.jbang.core.commands.process.ListProcess;
+import org.apache.camel.dsl.jbang.core.commands.process.ListService;
+import org.apache.camel.dsl.jbang.core.commands.process.ListVault;
+import org.apache.camel.dsl.jbang.core.commands.process.StopProcess;
+
+import org.junit.jupiter.api.Test;
+
+import org.assertj.core.api.Assertions;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+
+import picocli.CommandLine;
+
+public class BackgroundTest {
+
+	@Test
+	public void test() {
+		CamelJBangMain main = new CamelJBangMain();
+		CommandLine commandLine = new CommandLine(main)
+				.addSubcommand("init", new CommandLine(new Init(main)))
+				.addSubcommand("run", new CommandLine(new Run(main)))
+				.addSubcommand("log", new CommandLine(new CamelLogAction(main)))
+				.addSubcommand("ps", new CommandLine(new ListProcess(main)))
+				.addSubcommand("stop", new CommandLine(new StopProcess(main)))
+				.addSubcommand("trace", new CommandLine(new CamelTraceAction(main)))
+				.addSubcommand("get", new CommandLine(new CamelStatus(main))
+						.addSubcommand("context", new CommandLine(new CamelContextStatus(main)))
+						.addSubcommand("route", new CommandLine(new CamelRouteStatus(main)))
+						.addSubcommand("processor", new CommandLine(new CamelProcessorStatus(main)))
+						.addSubcommand("count", new CommandLine(new CamelCount(main)))
+						.addSubcommand("health", new CommandLine(new ListHealth(main)))
+						.addSubcommand("endpoint", new CommandLine(new ListEndpoint(main)))
+						.addSubcommand("event", new CommandLine(new ListEvent(main)))
+						.addSubcommand("inflight", new CommandLine(new ListInflight(main)))
+						.addSubcommand("blocked", new CommandLine(new ListBlocked(main)))
+						.addSubcommand("route-controller", new CommandLine(new RouteControllerAction(main)))
+						.addSubcommand("circuit-breaker", new CommandLine(new ListCircuitBreaker(main)))
+						.addSubcommand("metric", new CommandLine(new ListMetric(main)))
+						.addSubcommand("service", new CommandLine(new ListService(main)))
+						.addSubcommand("source", new CommandLine(new CamelSourceAction(main)))
+						.addSubcommand("vault", new CommandLine(new ListVault(main))))
+				.addSubcommand("top", new CommandLine(new CamelTop(main))
+						.addSubcommand("context", new CommandLine(new CamelContextTop(main)))
+						.addSubcommand("route", new CommandLine(new CamelRouteTop(main)))
+						.addSubcommand("processor", new CommandLine(new CamelProcessorTop(main)))
+						.addSubcommand("source", new CommandLine(new CamelSourceTop(main))))
+				.addSubcommand("cmd", new CommandLine(new CamelAction(main))
+						.addSubcommand("start-route", new CommandLine(new CamelRouteStartAction(main)))
+						.addSubcommand("stop-route", new CommandLine(new CamelRouteStopAction(main)))
+						.addSubcommand("reset-stats", new CommandLine(new CamelResetStatsAction(main)))
+						.addSubcommand("reload", new CommandLine(new CamelReloadAction(main)))
+						.addSubcommand("thread-dump", new CommandLine(new CamelThreadDump(main)))
+						.addSubcommand("logger", new CommandLine(new LoggerAction(main)))
+						.addSubcommand("gc", new CommandLine(new CamelGCAction(main))))
+				.addSubcommand("dependency", new CommandLine(new DependencyCommand(main))
+						.addSubcommand("list", new CommandLine(new DependencyList(main)))
+						.addSubcommand("copy", new CommandLine(new DependencyCopy(main))))
+				.addSubcommand("generate", new CommandLine(new CodeGenerator(main))
+						.addSubcommand("rest", new CommandLine(new CodeRestGenerator(main))))
+				.addSubcommand("catalog", new CommandLine(new CatalogCommand(main))
+						.addSubcommand("component", new CommandLine(new CatalogComponent(main)))
+						.addSubcommand("dataformat", new CommandLine(new CatalogDataFormat(main)))
+						.addSubcommand("language", new CommandLine(new CatalogLanguage(main)))
+						.addSubcommand("other", new CommandLine(new CatalogOther(main)))
+						.addSubcommand("kamelet", new CommandLine(new CatalogKamelet(main))))
+				.addSubcommand("doc", new CommandLine(new CatalogDoc(main)))
+				.addSubcommand("jolokia", new CommandLine(new Jolokia(main)))
+				.addSubcommand("hawtio", new CommandLine(new Hawtio(main)))
+				.addSubcommand("bind", new CommandLine(new Bind(main)))
+				.addSubcommand("pipe", new CommandLine(new Pipe(main)))
+				.addSubcommand("export", new CommandLine(new Export(main)))
+				.addSubcommand("completion", new CommandLine(new Complete(main)));
+
+		StringWriter sw = new StringWriter();
+		commandLine.setOut(new PrintWriter(sw));
+
+		int exitCode = commandLine.execute("init", "test.yaml", "--directory=target/data");
+		Assertions.assertThat(exitCode).isGreaterThanOrEqualTo(0);
+
+		exitCode = commandLine.execute("run", "target/data/test.yaml", "--background");
+		// ProcessHandle.current().info().commandLine().orElse(null);
+		// /home/federico/.sdkman/candidates/java/17.0.2-open/bin/java -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:27155,suspend=y,server=n -ea -Djava.security.egd=file:///dev/urandom -Djavax.xml.accessExternalSchema=file,http,https -Djavax.xml.accessExternalDTD=file,http -Dderby.stream.error.file=target/derby.log -Djava.awt.headless=true -Djava.util.logging.config.file=/home/federico/Work/croway/camel/dsl/camel-jbang/camel-jbang-core/target/test-classes/logging.properties -Dorg.apach [...]
+		Assertions.assertThat(sw.toString()).doesNotContain("No Camel integration files to run");
+		Assertions.assertThat(exitCode).isGreaterThanOrEqualTo(0);
+	}
+}


[camel] 04/10: Merge branch 'main' of github.com:apache/camel

Posted by fm...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

fmariani pushed a commit to branch jbang-user-config
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 16bf1bfd80edf50bd0fb12534bfc3f42e0f91d64
Merge: 144e8478049 27e2ce100c3
Author: Croway <fe...@gmail.com>
AuthorDate: Tue Mar 7 15:16:12 2023 +0100

    Merge branch 'main' of github.com:apache/camel

 .../org/apache/camel/catalog/CamelCatalog.java     | 10 +++++++
 .../apache/camel/catalog/DefaultCamelCatalog.java  |  6 ++++
 .../org/apache/camel/catalog/CamelCatalogTest.java | 18 ++++++++++++
 .../resources/org/apache/camel/catalog/bar/foo.txt |  1 +
 .../camel/dsl/jbang/core/commands/Export.java      |  1 +
 .../dsl/jbang/core/commands/ExportBaseCommand.java |  4 +++
 .../dsl/jbang/core/commands/ExportSpringBoot.java  | 34 +++++++++++++++++++---
 .../apache/camel/dsl/jbang/core/commands/Run.java  |  1 -
 .../camel/dsl/jbang/core/common/CatalogLoader.java | 14 +++++++--
 parent/pom.xml                                     |  7 -----
 10 files changed, 82 insertions(+), 14 deletions(-)



[camel] 06/10: CAMEL-18508: camel-jbang - User config. WIP

Posted by fm...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

fmariani pushed a commit to branch jbang-user-config
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 63a76ce3240d3fd02c6e99d551e364a8591fbff4
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Tue Mar 7 15:23:23 2023 +0100

    CAMEL-18508: camel-jbang - User config. WIP
---
 .../dsl/jbang/core/commands/CamelJBangMain.java    |   2 +
 .../dsl/jbang/core/common/CommandLineHelper.java   | 103 +++++++++++++++++++++
 2 files changed, 105 insertions(+)

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 2dd2531aa54..eb5ecc5f287 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
@@ -62,6 +62,7 @@ import org.apache.camel.dsl.jbang.core.commands.process.ListProcess;
 import org.apache.camel.dsl.jbang.core.commands.process.ListService;
 import org.apache.camel.dsl.jbang.core.commands.process.ListVault;
 import org.apache.camel.dsl.jbang.core.commands.process.StopProcess;
+import org.apache.camel.dsl.jbang.core.common.CommandLineHelper;
 import picocli.CommandLine;
 import picocli.CommandLine.Command;
 
@@ -132,6 +133,7 @@ public class CamelJBangMain implements Callable<Integer> {
             return new String[] { v };
         });
 
+        CommandLineHelper.augmentWithUserConfiguration(commandLine, args);
         int exitCode = commandLine.execute(args);
         System.exit(exitCode);
     }
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/CommandLineHelper.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/CommandLineHelper.java
new file mode 100644
index 00000000000..d189d1321a4
--- /dev/null
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/CommandLineHelper.java
@@ -0,0 +1,103 @@
+/*
+ * 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.common;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Properties;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+
+import org.apache.camel.util.IOHelper;
+import picocli.CommandLine;
+
+/**
+ * Helper for CLI command line.
+ */
+public class CommandLineHelper {
+
+    public static final String USER_CONFIG = ".camel-jbang-user.properties";
+
+    public static void augmentWithUserConfiguration(CommandLine commandLine, String... args) {
+        File file = new File(System.getProperty("user.home"), USER_CONFIG);
+        if (file.isFile() && file.exists()) {
+            FileInputStream fis = null;
+            try {
+                fis = new FileInputStream(file);
+                Properties prop = new Properties();
+                prop.load(fis);
+                IOHelper.close(fis);
+                if (!prop.isEmpty()) {
+                    commandLine.setDefaultValueProvider(new CommandLine.PropertiesDefaultProvider(prop));
+                }
+            } catch (Exception e) {
+                throw new RuntimeException("Cannot load user configuration: " + file);
+            } finally {
+                IOHelper.close(fis);
+            }
+        }
+
+        // TODO: if we need to do this (must be slower due all the command options parsing)
+        // this filters the list of options to only what the commands support
+        // Properties options = augmentConfiguration(configuration, commandLine);
+        // commandLine.setDefaultValueProvider(new CommandLine.PropertiesDefaultProvider(options));
+    }
+
+    private static Properties augmentConfiguration(Properties configuration, CommandLine commandLine) {
+        Properties answer = new Properties();
+
+        // gather for all commands every option they have
+        List<String> allOptions
+                = commonArgumentList(new ArrayList<>(), commandLine.getSubcommands(), commandLine.getCommandName());
+        allOptions.forEach(key -> {
+            String[] parts = key.split(Pattern.quote("."));
+            String arg = parts[parts.length - 1];
+            // for every option see if we have a configuration for that
+            String value = configuration.getProperty(arg);
+            if (value != null) {
+                answer.setProperty(arg, value);
+            }
+        });
+        return configuration;
+    }
+
+    private static List<String> commonArgumentList(
+            List<String> list, Map<String, CommandLine> commandLines, String parentPrefix) {
+        commandLines.forEach((name, subCommand) -> {
+            subCommand.getCommandSpec().args().stream()
+                    .filter(arg -> arg instanceof CommandLine.Model.OptionSpec)
+                    .map(arg -> (CommandLine.Model.OptionSpec) arg)
+                    .map(arg -> arg.longestName().replace("--", ""))
+                    .forEach(arg -> list.add(generateParameter(parentPrefix, subCommand.getCommandName(), arg)));
+            // add arguments for sub commands as well
+            list.addAll(
+                    commonArgumentList(new ArrayList<>(), subCommand.getSubcommands(), generateParameter(parentPrefix, name)));
+        });
+        return list;
+    }
+
+    private static String generateParameter(String... prefix) {
+        return Arrays.stream(prefix)
+                .filter(Objects::nonNull)
+                .collect(Collectors.joining("."));
+    }
+}


[camel] 10/10: Merge branch 'jbang-user-config' of github.com:apache/camel into jbang-user-config

Posted by fm...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

fmariani pushed a commit to branch jbang-user-config
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 99c9129a75de0859d81f3205046b7162db924455
Merge: 81bd09bb346 e850dc1faa5
Author: Croway <fe...@gmail.com>
AuthorDate: Tue Mar 7 18:23:41 2023 +0100

    Merge branch 'jbang-user-config' of github.com:apache/camel into jbang-user-config

 .../org/apache/camel/dsl/jbang/ConfigTest.java     | 29 ++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --cc dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/ConfigTest.java
index 00000000000,00000000000..96b85bc3daa
new file mode 100644
--- /dev/null
+++ b/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/ConfigTest.java
@@@ -1,0 -1,0 +1,29 @@@
++package org.apache.camel.dsl.jbang;
++
++import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
++import org.apache.camel.dsl.jbang.core.common.CommandLineHelper;
++
++import org.junit.jupiter.api.Test;
++
++import java.io.File;
++
++public class ConfigTest {
++
++	@Test
++	public void config() {
++		File file = new File(System.getProperty("user.home"), CommandLineHelper.USER_CONFIG);
++		if (file.exists()) {
++			file.delete();
++		}
++
++		CamelJBangMain.run("config", "set", "directory=target/data");
++		CamelJBangMain.run("config", "set", "gav=com.foo:acme:1.0-SNAPSHOT");
++		CamelJBangMain.run("config", "set", "runtime=spring-boot");
++		CamelJBangMain.run("config", "set", "deps=org.apache.camel.springboot:camel-timer-starter");
++		CamelJBangMain.run("config", "set", "camel-spring-boot-version=3.20.1.redhat-00030");
++		CamelJBangMain.run("config", "set", "additional-properties=openshift-maven-plugin-version=1.9.1.redhat-00004");
++		CamelJBangMain.run("config", "list");
++		CamelJBangMain.run("config", "get", "additional-properties");
++		CamelJBangMain.run("export");
++	}
++}


[camel] 07/10: CAMEL-18508: camel-jbang - User config. WIP

Posted by fm...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

fmariani pushed a commit to branch jbang-user-config
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 6f0341727ae3b9c5b2c46f64d3aef44eddcb5288
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Tue Mar 7 15:24:02 2023 +0100

    CAMEL-18508: camel-jbang - User config. WIP
---
 .../dsl/jbang/core/common/CommandLineHelper.java   | 50 ----------------------
 1 file changed, 50 deletions(-)

diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/CommandLineHelper.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/CommandLineHelper.java
index d189d1321a4..b3fda856a4f 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/CommandLineHelper.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/CommandLineHelper.java
@@ -18,14 +18,7 @@ package org.apache.camel.dsl.jbang.core.common;
 
 import java.io.File;
 import java.io.FileInputStream;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
 import java.util.Properties;
-import java.util.regex.Pattern;
-import java.util.stream.Collectors;
 
 import org.apache.camel.util.IOHelper;
 import picocli.CommandLine;
@@ -55,49 +48,6 @@ public class CommandLineHelper {
                 IOHelper.close(fis);
             }
         }
-
-        // TODO: if we need to do this (must be slower due all the command options parsing)
-        // this filters the list of options to only what the commands support
-        // Properties options = augmentConfiguration(configuration, commandLine);
-        // commandLine.setDefaultValueProvider(new CommandLine.PropertiesDefaultProvider(options));
-    }
-
-    private static Properties augmentConfiguration(Properties configuration, CommandLine commandLine) {
-        Properties answer = new Properties();
-
-        // gather for all commands every option they have
-        List<String> allOptions
-                = commonArgumentList(new ArrayList<>(), commandLine.getSubcommands(), commandLine.getCommandName());
-        allOptions.forEach(key -> {
-            String[] parts = key.split(Pattern.quote("."));
-            String arg = parts[parts.length - 1];
-            // for every option see if we have a configuration for that
-            String value = configuration.getProperty(arg);
-            if (value != null) {
-                answer.setProperty(arg, value);
-            }
-        });
-        return configuration;
-    }
-
-    private static List<String> commonArgumentList(
-            List<String> list, Map<String, CommandLine> commandLines, String parentPrefix) {
-        commandLines.forEach((name, subCommand) -> {
-            subCommand.getCommandSpec().args().stream()
-                    .filter(arg -> arg instanceof CommandLine.Model.OptionSpec)
-                    .map(arg -> (CommandLine.Model.OptionSpec) arg)
-                    .map(arg -> arg.longestName().replace("--", ""))
-                    .forEach(arg -> list.add(generateParameter(parentPrefix, subCommand.getCommandName(), arg)));
-            // add arguments for sub commands as well
-            list.addAll(
-                    commonArgumentList(new ArrayList<>(), subCommand.getSubcommands(), generateParameter(parentPrefix, name)));
-        });
-        return list;
     }
 
-    private static String generateParameter(String... prefix) {
-        return Arrays.stream(prefix)
-                .filter(Objects::nonNull)
-                .collect(Collectors.joining("."));
-    }
 }


[camel] 03/10: Merge branch 'main' of github.com:apache/camel

Posted by fm...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

fmariani pushed a commit to branch jbang-user-config
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 144e84780492509db5cda5da0f8c3d7eb60fccbc
Merge: 41142503893 585c6554e0b
Author: Croway <fe...@gmail.com>
AuthorDate: Tue Mar 7 14:12:34 2023 +0100

    Merge branch 'main' of github.com:apache/camel

 camel-dependencies/pom.xml                         |   2 +-
 components/camel-asn1/pom.xml                      |   1 +
 components/camel-atom/pom.xml                      |   1 +
 .../camel-avro-rpc-component/pom.xml               |   1 +
 components/camel-avro/pom.xml                      |   1 +
 .../camel-aws/camel-aws2-eventbridge/pom.xml       |   1 +
 components/camel-aws/camel-aws2-sns/pom.xml        |   1 +
 components/camel-aws/camel-aws2-sqs/pom.xml        |   1 +
 .../camel-azure/camel-azure-cosmosdb/pom.xml       |   1 +
 .../camel-azure/camel-azure-eventhubs/pom.xml      |   1 +
 .../camel-azure/camel-azure-key-vault/pom.xml      |   1 +
 .../camel-azure/camel-azure-servicebus/pom.xml     |   1 +
 .../camel-azure/camel-azure-storage-blob/pom.xml   |   1 +
 .../camel-azure-storage-datalake/pom.xml           |   1 +
 .../camel-azure/camel-azure-storage-queue/pom.xml  |   1 +
 components/camel-datasonnet/pom.xml                |   1 +
 components/camel-hashicorp-vault/pom.xml           |   1 +
 components/camel-jetty/pom.xml                     |   1 +
 .../apache/camel/language/joor/JoorCompiler.java   |   2 +-
 components/camel-mail/pom.xml                      |   1 +
 components/camel-netty-http/pom.xml                |   1 +
 components/camel-oaipmh/pom.xml                    |   1 +
 components/camel-olingo4/camel-olingo4-api/pom.xml |   1 +
 .../http/vertx/VertxPlatformHttpConsumer.java      |  10 +-
 .../VertxPlatformMultipleContentTypeTest.java      | 205 +++++++++++++++++++++
 components/camel-protobuf/pom.xml                  |   1 +
 components/camel-rss/pom.xml                       |   1 +
 .../camel-salesforce-component/pom.xml             |   1 +
 .../camel-salesforce-maven-plugin/pom.xml          |   1 +
 .../camel-servicenow-maven-plugin/pom.xml          |   1 +
 components/camel-servlet/pom.xml                   |   1 +
 components/camel-solr/pom.xml                      |   1 +
 components/camel-thrift/pom.xml                    |   1 +
 components/camel-xj/pom.xml                        |   1 +
 core/camel-core-engine/pom.xml                     |   7 +
 .../src/main/docs/modules/eips/pages/saga-eip.adoc |  11 +-
 core/camel-core/pom.xml                            |   7 +
 core/camel-management-api/pom.xml                  |  14 ++
 core/camel-xml-jaxp/pom.xml                        |   7 +
 dsl/camel-jbang/camel-jbang-core/pom.xml           |   1 +
 .../dsl/jbang/core/commands/ExportBaseCommand.java |  44 ++++-
 .../dsl/jbang/core/commands/ExportCamelMain.java   |  11 +-
 .../dsl/jbang/core/commands/ExportQuarkus.java     |   5 +-
 .../dsl/jbang/core/commands/ExportSpringBoot.java  |   5 +-
 .../core/commands/catalog/CatalogBaseCommand.java  |   2 +-
 parent/pom.xml                                     |  54 +-----
 test-infra/camel-test-infra-ftp/pom.xml            |   2 +
 tests/camel-itest/pom.xml                          |   2 +
 tooling/maven/bom-generator-maven-plugin/pom.xml   |   1 +
 tooling/maven/camel-package-maven-plugin/pom.xml   |   1 +
 tooling/maven/sync-properties-maven-plugin/pom.xml |   1 +
 51 files changed, 344 insertions(+), 80 deletions(-)



[camel] 02/10: Merge branch 'main' of github.com:apache/camel

Posted by fm...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

fmariani pushed a commit to branch jbang-user-config
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 41142503893b22530e243d3e04e81a5893d283bf
Merge: e390430d372 ce1fb3749ff
Author: Croway <fe...@gmail.com>
AuthorDate: Mon Mar 6 15:45:21 2023 +0100

    Merge branch 'main' of github.com:apache/camel

 .../build-it/archetype.properties                  |   0
 .../build-it/goal.txt                              |   0
 .../build-it/archetype.properties                  |   0
 .../build-it/goal.txt                              |   0
 .../build-it/archetype.properties                  |   0
 .../build-it/goal.txt                              |   0
 .../build-it/archetype.properties                  |   0
 .../build-it/goal.txt                              |   0
 .../run-it/archetype.properties                    |   0
 .../run-it/goal.txt                                |   0
 .../build-it/archetype.properties                  |   0
 .../build-it/goal.txt                              |   0
 .../run-it/archetype.properties                    |   0
 .../run-it/goal.txt                                |   0
 .../build-it/archetype.properties                  |   0
 .../build-it/goal.txt                              |   0
 .../run-it/archetype.properties                    |   0
 .../run-it/goal.txt                                |   0
 camel-dependencies/pom.xml                         |   8 +-
 catalog/camel-csimple-maven-plugin/pom.xml         |   1 +
 catalog/camel-report-maven-plugin/pom.xml          |   1 +
 components/camel-atom/pom.xml                      |   2 +
 .../cloudtrail/CloudtrailConsumerHealthCheck.java  |   6 -
 .../SecretsManagerClientHealthCheck.java           |   6 -
 .../aws2/athena/Athena2ClientHealthCheck.java      |   6 -
 .../component/aws2/cw/Cw2ClientHealthCheck.java    |   6 -
 .../component/aws2/ddb/Ddb2ClientHealthCheck.java  |   6 -
 .../ddbstream/Ddb2StreamConsumerHealthCheck.java   |   6 -
 .../component/aws2/ec2/AWS2EC2HealthCheck.java     |   6 -
 .../component/aws2/ecs/ECS2ClientHealthCheck.java  |   6 -
 .../component/aws2/eks/EKS2ClientHealthCheck.java  |   6 -
 .../eventbridge/EventbridgeClientHealthCheck.java  |   6 -
 .../camel/component/aws2/iam/IAM2HealthCheck.java  |   6 -
 .../aws2/kinesis/Kinesis2ConsumerHealthCheck.java  |   6 -
 .../aws2/lambda/Lambda2ClientHealthCheck.java      |   6 -
 .../component/aws2/mq/MQ2ClientHealthCheck.java    |   6 -
 .../camel/component/aws2/msk/MSK2HealthCheck.java  |   6 -
 .../aws2/s3/AWS2S3ConsumerHealthCheck.java         |   6 -
 .../camel/component/aws2/ses/Ses2HealthCheck.java  |   6 -
 .../camel/component/aws2/sns/Sns2HealthCheck.java  |   6 -
 .../aws2/sqs/Sqs2ConsumerHealthCheck.java          |   6 -
 .../translate/Translate2ClientHealthCheck.java     |   6 -
 .../GoogleCloudStorageConsumerHealthCheck.java     |   6 -
 .../camel-jdbc/src/main/docs/jdbc-component.adoc   |  99 ++++-----------
 components/camel-jpa/pom.xml                       |   1 +
 .../component/kafka/KafkaConsumerHealthCheck.java  |   6 -
 .../component/kafka/KafkaProducerHealthCheck.java  |   6 -
 .../src/main/docs/micrometer-component.adoc        |  18 +++
 .../DistributionStatisticConfigFilter.java         |   7 +-
 .../component/micrometer/MicrometerConstants.java  |   1 +
 .../routepolicy/MicrometerRoutePolicy.java         | 134 +++++++++++++++------
 .../MicrometerRoutePolicyConfiguration.java        | 107 ++++++++++++++++
 .../routepolicy/MicrometerRoutePolicyFactory.java  |  10 ++
 .../MicrometerRoutePolicyNamingStrategy.java       |  14 +--
 .../messagehistory/ManagedMessageHistoryTest.java  |  15 ++-
 .../AbstractMicrometerRoutePolicyTest.java         |   7 +-
 .../MicrometerRoutePolicyConfigrationTest.java     |  80 ++++++++++++
 .../SharedMicrometerRoutePolicyTest.java           |  70 +++++++++++
 components/camel-quartz/pom.xml                    |   1 +
 components/camel-zendesk/pom.xml                   |   1 +
 .../java/org/apache/camel/health/HealthCheck.java  |   8 +-
 .../impl/health/ReadinessAndLivenessTest.java      |  20 +++
 .../camel/impl/health/ContextHealthCheck.java      |   4 +-
 .../apache/camel/impl/health/RouteHealthCheck.java |   6 -
 .../support/ScheduledPollConsumerHealthCheck.java  |   2 +-
 .../apache/camel/util/xml/XmlPrettyPrinter.java    |   3 +
 .../ROOT/pages/camel-3x-upgrade-guide-3_21.adoc    |   7 ++
 .../ROOT/pages/camel-4-migration-guide.adoc        |   8 ++
 parent/pom.xml                                     |  49 +-------
 pom.xml                                            |   2 +-
 tooling/maven/camel-maven-plugin/pom.xml           |   1 +
 71 files changed, 500 insertions(+), 325 deletions(-)


[camel] 05/10: Merge branch 'main' of github.com:apache/camel

Posted by fm...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

fmariani pushed a commit to branch jbang-user-config
in repository https://gitbox.apache.org/repos/asf/camel.git

commit adc7ad08e50297ec773e6623189e9996327f89bb
Merge: 16bf1bfd80e 2552d61846c
Author: Croway <fe...@gmail.com>
AuthorDate: Tue Mar 7 18:05:54 2023 +0100

    Merge branch 'main' of github.com:apache/camel

 .../org/apache/camel/component/jms/tx/artemis-security.xml          | 6 +++++-
 components/camel-nitrite/pom.xml                                    | 1 +
 parent/pom.xml                                                      | 6 ------
 3 files changed, 6 insertions(+), 7 deletions(-)


[camel] 09/10: config commands

Posted by fm...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

fmariani pushed a commit to branch jbang-user-config
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 81bd09bb3463268e7c0c822bbb612cd4715cf143
Author: Croway <fe...@gmail.com>
AuthorDate: Tue Mar 7 18:22:39 2023 +0100

    config commands
---
 dsl/camel-jbang/camel-jbang-core/pom.xml           | 22 -----------
 .../dsl/jbang/core/commands/CamelJBangMain.java    |  7 +++-
 .../dsl/jbang/core/commands/ConfigCommand.java     | 18 +++++++++
 .../camel/dsl/jbang/core/commands/ConfigGet.java   | 30 +++++++++++++++
 .../camel/dsl/jbang/core/commands/ConfigList.java  | 22 +++++++++++
 .../camel/dsl/jbang/core/commands/ConfigSet.java   | 37 ++++++++++++++++++
 .../camel/dsl/jbang/core/commands/ConfigUnset.java | 27 +++++++++++++
 .../dsl/jbang/core/common/CommandLineHelper.java   | 44 ++++++++++++++++++++--
 8 files changed, 180 insertions(+), 27 deletions(-)

diff --git a/dsl/camel-jbang/camel-jbang-core/pom.xml b/dsl/camel-jbang/camel-jbang-core/pom.xml
index 052a3d2105d..82b382932f3 100644
--- a/dsl/camel-jbang/camel-jbang-core/pom.xml
+++ b/dsl/camel-jbang/camel-jbang-core/pom.xml
@@ -129,28 +129,6 @@
             <groupId>com.fasterxml.jackson.core</groupId>
             <artifactId>jackson-databind</artifactId>
         </dependency>
-
-        <!-- Test dependencies -->
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-api</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-engine</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-params</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.assertj</groupId>
-            <artifactId>assertj-core</artifactId>
-            <scope>test</scope>
-        </dependency>
     </dependencies>
 
 </project>
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 eb5ecc5f287..b7ad751d078 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
@@ -125,7 +125,12 @@ public class CamelJBangMain implements Callable<Integer> {
                 .addSubcommand("bind", new CommandLine(new Bind(main)))
                 .addSubcommand("pipe", new CommandLine(new Pipe(main)))
                 .addSubcommand("export", new CommandLine(new Export(main)))
-                .addSubcommand("completion", new CommandLine(new Complete(main)));
+                .addSubcommand("completion", new CommandLine(new Complete(main)))
+                .addSubcommand("config", new CommandLine(new ConfigCommand(main))
+                        .addSubcommand("list", new CommandLine(new ConfigList(main)))
+                        .addSubcommand("get", new CommandLine(new ConfigGet(main)))
+                        .addSubcommand("unset", new CommandLine(new ConfigUnset(main)))
+                        .addSubcommand("set", new CommandLine(new ConfigSet(main))));
 
         commandLine.getCommandSpec().versionProvider(() -> {
             CamelCatalog catalog = new DefaultCamelCatalog();
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ConfigCommand.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ConfigCommand.java
new file mode 100644
index 00000000000..0496e2fab69
--- /dev/null
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ConfigCommand.java
@@ -0,0 +1,18 @@
+package org.apache.camel.dsl.jbang.core.commands;
+
+import picocli.CommandLine;
+
+@CommandLine.Command(name = "config", description = "Interacts with camel-jbang config file")
+public class ConfigCommand extends CamelCommand {
+
+	public ConfigCommand(CamelJBangMain main) {
+		super(main);
+	}
+
+	@Override
+	public Integer call() throws Exception {
+		// defaults to list
+		new CommandLine(new ConfigList(getMain())).execute();
+		return 0;
+	}
+}
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ConfigGet.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ConfigGet.java
new file mode 100644
index 00000000000..f42e9591aed
--- /dev/null
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ConfigGet.java
@@ -0,0 +1,30 @@
+package org.apache.camel.dsl.jbang.core.commands;
+
+import org.apache.camel.dsl.jbang.core.common.CommandLineHelper;
+
+import picocli.CommandLine;
+
+@CommandLine.Command(name = "get",
+		description = "Displays user config value")
+public class ConfigGet extends CamelCommand {
+
+	@CommandLine.Parameters(description = "Configuration key")
+	private String key;
+
+	public ConfigGet(CamelJBangMain main) {
+		super(main);
+	}
+
+	@Override
+	public Integer call() throws Exception {
+		CommandLineHelper.loadProperties(properties -> {
+			if (properties.containsKey(key)) {
+				System.out.println(properties.get(key));
+			} else {
+				System.out.println(key + " key not found");
+			}
+		});
+
+		return 0;
+	}
+}
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ConfigList.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ConfigList.java
new file mode 100644
index 00000000000..cd7ed11bd2c
--- /dev/null
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ConfigList.java
@@ -0,0 +1,22 @@
+package org.apache.camel.dsl.jbang.core.commands;
+
+import org.apache.camel.dsl.jbang.core.common.CommandLineHelper;
+
+import picocli.CommandLine;
+
+@CommandLine.Command(name = "list",
+		description = "Displays user config overrides")
+public class ConfigList extends CamelCommand {
+
+	public ConfigList(CamelJBangMain main) {
+		super(main);
+	}
+
+	@Override
+	public Integer call() throws Exception {
+		CommandLineHelper.loadProperties(properties ->
+				properties.entrySet().forEach(entry -> System.out.println(entry.getKey())));
+
+		return 0;
+	}
+}
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ConfigSet.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ConfigSet.java
new file mode 100644
index 00000000000..ef977d0fe0a
--- /dev/null
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ConfigSet.java
@@ -0,0 +1,37 @@
+package org.apache.camel.dsl.jbang.core.commands;
+
+import org.apache.camel.dsl.jbang.core.common.CommandLineHelper;
+
+import picocli.CommandLine;
+
+@CommandLine.Command(name = "set",
+		description = "Set user config value")
+public class ConfigSet extends CamelCommand {
+
+	@CommandLine.Parameters(description = "Configuration parameter (ex. key=value)")
+	private String configuration;
+
+	public ConfigSet(CamelJBangMain main) {
+		super(main);
+	}
+
+	@Override
+	public Integer call() throws Exception {
+		CommandLineHelper.createPropertyFile();
+
+		if (configuration.split("=").length == 1) {
+			System.out.println("Configuration parameter not in key=value form");
+
+			return 1;
+		}
+
+		CommandLineHelper.loadProperties(properties -> {
+			String key = configuration.substring(0, configuration.indexOf("="));
+			String value = configuration.substring(configuration.indexOf("=") + 1, configuration.length());
+			properties.put(key, value);
+			CommandLineHelper.storeProperties(properties);
+		});
+
+		return 0;
+	}
+}
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ConfigUnset.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ConfigUnset.java
new file mode 100644
index 00000000000..3375eeaaabe
--- /dev/null
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ConfigUnset.java
@@ -0,0 +1,27 @@
+package org.apache.camel.dsl.jbang.core.commands;
+
+import org.apache.camel.dsl.jbang.core.common.CommandLineHelper;
+
+import picocli.CommandLine;
+
+@CommandLine.Command(name = "unset",
+		description = "Remove user config value")
+public class ConfigUnset extends CamelCommand {
+
+	@CommandLine.Parameters(description = "Configuration key")
+	private String key;
+
+	public ConfigUnset(CamelJBangMain main) {
+		super(main);
+	}
+
+	@Override
+	public Integer call() throws Exception {
+		CommandLineHelper.loadProperties(properties -> {
+			properties.remove(key);
+			CommandLineHelper.storeProperties(properties);
+		});
+
+		return 0;
+	}
+}
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/CommandLineHelper.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/CommandLineHelper.java
index 0856fdd55fc..b1d8f3f0268 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/CommandLineHelper.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/CommandLineHelper.java
@@ -16,11 +16,16 @@
  */
 package org.apache.camel.dsl.jbang.core.common;
 
+import org.apache.camel.util.IOHelper;
+
 import java.io.File;
 import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
 import java.util.Properties;
+import java.util.function.Consumer;
 
-import org.apache.camel.util.IOHelper;
 import picocli.CommandLine;
 
 /**
@@ -32,6 +37,20 @@ public class CommandLineHelper {
 
     public static void augmentWithUserConfiguration(CommandLine commandLine, String... args) {
         File file = new File(System.getProperty("user.home"), USER_CONFIG);
+        if (file.isFile() && file.exists()) {
+            commandLine.setDefaultValueProvider(new CamelUserConfigDefaultValueProvider(file));
+        }
+    }
+
+    public static void createPropertyFile() throws IOException {
+        File file = new File(System.getProperty("user.home"), CommandLineHelper.USER_CONFIG);
+        if (!file.exists()) {
+            file.createNewFile();
+        }
+    }
+
+    public static void loadProperties(Consumer<Properties> consumer) {
+        File file = new File(System.getProperty("user.home"), CommandLineHelper.USER_CONFIG);
         if (file.isFile() && file.exists()) {
             FileInputStream fis = null;
             try {
@@ -39,14 +58,27 @@ public class CommandLineHelper {
                 Properties prop = new Properties();
                 prop.load(fis);
                 IOHelper.close(fis);
-                if (!prop.isEmpty()) {
-                    commandLine.setDefaultValueProvider(new CamelUserConfigDefaultValueProvider(prop));
-                }
+                consumer.accept(prop);
             } catch (Exception e) {
                 throw new RuntimeException("Cannot load user configuration: " + file);
             } finally {
                 IOHelper.close(fis);
             }
+        } else {
+            System.out.println(CommandLineHelper.USER_CONFIG + " does not exists");
+        }
+    }
+
+    public static void storeProperties(Properties properties) {
+        File file = new File(System.getProperty("user.home"), CommandLineHelper.USER_CONFIG);
+        if (file.isFile() && file.exists()) {
+            try (FileOutputStream fos = new FileOutputStream(file)) {
+                properties.store(fos, null);
+            } catch (IOException ex) {
+                throw new RuntimeException(ex);
+            }
+        } else {
+            System.out.println(CommandLineHelper.USER_CONFIG + " does not exists");
         }
     }
 
@@ -56,6 +88,10 @@ public class CommandLineHelper {
             super(properties);
         }
 
+        public CamelUserConfigDefaultValueProvider(File file) {
+            super(file);
+        }
+
         @Override
         public String defaultValue(CommandLine.Model.ArgSpec arg) throws Exception {
             String value = super.defaultValue(arg);


[camel] 08/10: CAMEL-18508: camel-jbang - User config. WIP

Posted by fm...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

fmariani pushed a commit to branch jbang-user-config
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 0f231bc9e587a656b16fda31534e58c534c07363
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Tue Mar 7 15:34:16 2023 +0100

    CAMEL-18508: camel-jbang - User config. WIP
---
 .../dsl/jbang/core/common/CommandLineHelper.java   | 24 +++++++++++++++++++++-
 1 file changed, 23 insertions(+), 1 deletion(-)

diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/CommandLineHelper.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/CommandLineHelper.java
index b3fda856a4f..0856fdd55fc 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/CommandLineHelper.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/CommandLineHelper.java
@@ -40,7 +40,7 @@ public class CommandLineHelper {
                 prop.load(fis);
                 IOHelper.close(fis);
                 if (!prop.isEmpty()) {
-                    commandLine.setDefaultValueProvider(new CommandLine.PropertiesDefaultProvider(prop));
+                    commandLine.setDefaultValueProvider(new CamelUserConfigDefaultValueProvider(prop));
                 }
             } catch (Exception e) {
                 throw new RuntimeException("Cannot load user configuration: " + file);
@@ -50,4 +50,26 @@ public class CommandLineHelper {
         }
     }
 
+    private static class CamelUserConfigDefaultValueProvider extends CommandLine.PropertiesDefaultProvider {
+
+        public CamelUserConfigDefaultValueProvider(Properties properties) {
+            super(properties);
+        }
+
+        @Override
+        public String defaultValue(CommandLine.Model.ArgSpec arg) throws Exception {
+            String value = super.defaultValue(arg);
+            if (value != null) {
+                if (arg instanceof CommandLine.Model.OptionSpec) {
+                    // TODO: capture these default values that are in use
+                    // and find a way to log them only once (and have an option to turn this off)
+                    CommandLine.Model.OptionSpec os = (CommandLine.Model.OptionSpec) arg;
+                    String k = os.longestName();
+                    System.out.println(k + "=" + value);
+                }
+            }
+            return value;
+        }
+    }
+
 }