This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch port2 in repository https://gitbox.apache.org/repos/asf/camel.git
commit 68096ac6babf71be2fa03c8e69fa30dedb38abed Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Wed May 21 15:42:35 2025 +0200 CAMEL-22017: camel-jbang - Add management-port option to specify a dedicated port instead of default. --- .../apache/camel/dsl/jbang/core/commands/Export.java | 2 ++ .../dsl/jbang/core/commands/ExportBaseCommand.java | 19 ++++++++++++++++++- .../dsl/jbang/core/commands/ExportCamelMain.java | 5 +++++ .../camel/dsl/jbang/core/commands/ExportQuarkus.java | 6 +++++- .../dsl/jbang/core/commands/ExportSpringBoot.java | 4 ++++ .../org/apache/camel/dsl/jbang/core/commands/Run.java | 12 ++++++++++-- .../camel/main/download/MainHttpServerFactory.java | 2 +- .../camel/main/util/CamelJBangSettingsHelper.java | 2 +- 8 files changed, 46 insertions(+), 6 deletions(-) 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 597c6f3b514..9bd75723c11 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 @@ -168,6 +168,8 @@ public class Export extends ExportBaseCommand { cmd.dependencies = this.dependencies; cmd.runtime = this.runtime; cmd.name = this.name; + cmd.port = this.port; + cmd.managementPort = this.managementPort; cmd.gav = this.gav; cmd.mavenSettings = this.mavenSettings; cmd.mavenSettingsSecurity = this.mavenSettingsSecurity; diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java index a32d6b4d44c..6d5207cf685 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java @@ -119,6 +119,10 @@ public abstract class ExportBaseCommand extends CamelCommand { description = "Embeds a local HTTP server on this port", defaultValue = "8080") int port; + @CommandLine.Option(names = { "--management-port" }, + description = "To use a dedicated port for HTTP management") + int managementPort = -1; + @CommandLine.Option(names = { "--gav" }, description = "The Maven group:artifact:version") protected String gav; @@ -341,6 +345,7 @@ public abstract class ExportBaseCommand extends CamelCommand { run.files = files; run.name = name; run.port = port; + run.managementPort = managementPort; run.excludes = excludes; run.openapi = openapi; run.download = download; @@ -950,7 +955,19 @@ public abstract class ExportBaseCommand extends CamelCommand { protected static int httpServerPort(Path settings) { try { List<String> lines = RuntimeUtil.loadPropertiesLines(settings); - String port = lines.stream().filter(l -> l.startsWith("camel.jbang.platform-http.port=")) + String port = lines.stream().filter(l -> l.startsWith("camel.server.port=")) + .map(s -> StringHelper.after(s, "=")).findFirst().orElse("-1"); + return Integer.parseInt(port); + } catch (Exception e) { + // ignore + } + return -1; + } + + protected static int httpManagementPort(Path settings) { + try { + List<String> lines = RuntimeUtil.loadPropertiesLines(settings); + String port = lines.stream().filter(l -> l.startsWith("camel.management.port=")) .map(s -> StringHelper.after(s, "=")).findFirst().orElse("-1"); return Integer.parseInt(port); } catch (Exception e) { diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportCamelMain.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportCamelMain.java index 851274b6402..d448e94e4d2 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportCamelMain.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportCamelMain.java @@ -130,6 +130,11 @@ class ExportCamelMain extends Export { prop.put("camel.server.health-check-enabled", "true"); } } + port = httpManagementPort(settings); + if (port != -1) { + prop.put("camel.management.enabled", "true"); + prop.put("camel.management.port", port); + } return prop; }); // create main class diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportQuarkus.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportQuarkus.java index 9801a31bee0..c7b11b57262 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportQuarkus.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportQuarkus.java @@ -110,9 +110,13 @@ class ExportQuarkus extends Export { if (port == -1) { port = 8080; } - if (port != -1 && port != 8080) { + if (port != 8080) { prop.put("quarkus.http.port", port); } + port = httpManagementPort(settings); + if (port != -1) { + prop.put("quarkus.management.port", port); + } return prop; }); // copy docker files diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportSpringBoot.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportSpringBoot.java index 3fce795c388..b105842234e 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportSpringBoot.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportSpringBoot.java @@ -128,6 +128,10 @@ class ExportSpringBoot extends Export { if (port != -1 && port != 8080) { prop.put("server.port", port); } + port = httpManagementPort(settings); + if (port != -1) { + prop.put("management.server.port", port); + } return prop; }); if ("maven".equals(buildTool)) { 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 dd77c36cd02..4044403564e 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 @@ -291,6 +291,9 @@ public class Run extends CamelCommand { @Option(names = { "--port" }, description = "Embeds a local HTTP server on this port", defaultValue = "8080") int port; + @Option(names = { "--management-port" }, description = "To use a dedicated port for HTTP management") + int managementPort = -1; + @Option(names = { "--console" }, defaultValue = "false", description = "Developer console at /q/dev on local HTTP server (port 8080 by default)") boolean console; @@ -698,9 +701,12 @@ public class Run extends CamelCommand { () -> maxSeconds > 0 ? String.valueOf(maxSeconds) : null); writeSetting(main, profileProperties, "camel.main.durationMaxIdleSeconds", () -> maxIdleSeconds > 0 ? String.valueOf(maxIdleSeconds) : null); - writeSetting(main, profileProperties, "camel.jbang.platform-http.port", + writeSetting(main, profileProperties, "camel.server.port", () -> port > 0 && port != 8080 ? String.valueOf(port) : null); - writeSetting(main, profileProperties, "camel.jbang.jfr", jfr || jfrProfile != null ? "jfr" : null); // TODO: "true" instead of "jfr" ? + if (managementPort != -1) { + writeSetting(main, profileProperties, "camel.management.port", () -> String.valueOf(managementPort)); + } + writeSetting(main, profileProperties, "camel.jbang.jfr", jfr || jfrProfile != null ? "jfr" : null); writeSetting(main, profileProperties, "camel.jbang.jfr-profile", jfrProfile != null ? jfrProfile : null); writeSetting(main, profileProperties, "camel.jbang.kameletsVersion", kameletsVersion); @@ -1032,6 +1038,7 @@ public class Run extends CamelCommand { eq.name = this.name; eq.verbose = this.verbose; eq.port = this.port; + eq.managementPort = this.managementPort; eq.gav = this.gav; if (eq.gav == null) { if (eq.name == null) { @@ -1115,6 +1122,7 @@ public class Run extends CamelCommand { eq.name = this.name; eq.verbose = this.verbose; eq.port = this.port; + eq.managementPort = this.managementPort; eq.gav = this.gav; eq.repositories = this.repositories; if (eq.gav == null) { diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/MainHttpServerFactory.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/MainHttpServerFactory.java index a596b08c03d..7f76d5722c0 100644 --- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/MainHttpServerFactory.java +++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/MainHttpServerFactory.java @@ -31,7 +31,7 @@ public class MainHttpServerFactory { if (server == null) { // need to capture that we use a http-server HttpServerConfigurationProperties config = new HttpServerConfigurationProperties(null); - CamelJBangSettingsHelper.writeSettingsIfNotExists("camel.jbang.platform-http.port", + CamelJBangSettingsHelper.writeSettingsIfNotExists("camel.server.port", String.valueOf(config.getPort())); if (!silent) { try { diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/util/CamelJBangSettingsHelper.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/util/CamelJBangSettingsHelper.java index 725d84fda1b..c02869fb345 100644 --- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/util/CamelJBangSettingsHelper.java +++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/util/CamelJBangSettingsHelper.java @@ -24,7 +24,7 @@ import java.nio.charset.StandardCharsets; import org.apache.camel.util.IOHelper; /** - * When running we need to store + * When running we need to store some information */ public final class CamelJBangSettingsHelper {