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 528079dcdb7 camel-jbang: Improve startup info and add dev console that can show jvm system properties 528079dcdb7 is described below commit 528079dcdb76b219cfbf149476071af40e432419 Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Thu Mar 6 19:56:10 2025 +0100 camel-jbang: Improve startup info and add dev console that can show jvm system properties --- .../apache/camel/catalog/dev-consoles.properties | 1 + .../catalog/dev-consoles/system-properties.json | 15 +++++ .../SystemPropertiesDevConsoleConfigurer.java | 63 +++++++++++++++++++ .../camel/dev-console/system-properties.json | 15 +++++ ...e.camel.impl.console.SystemPropertiesDevConsole | 2 + .../org/apache/camel/dev-console/system-properties | 2 + .../org/apache/camel/dev-consoles.properties | 2 +- .../impl/console/SystemPropertiesDevConsole.java | 73 ++++++++++++++++++++++ .../java/org/apache/camel/main/KameletMain.java | 25 +++++--- 9 files changed, 190 insertions(+), 8 deletions(-) diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles.properties b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles.properties index 7ce1a9dbffd..e33c068a992 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles.properties +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles.properties @@ -44,6 +44,7 @@ sftp source startup-recorder stub +system-properties thread top trace diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/system-properties.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/system-properties.json new file mode 100644 index 00000000000..159808b6361 --- /dev/null +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dev-consoles/system-properties.json @@ -0,0 +1,15 @@ +{ + "console": { + "kind": "console", + "group": "camel", + "name": "system-properties", + "title": "System Properties", + "description": "Displays Java System Properties", + "deprecated": false, + "javaType": "org.apache.camel.impl.console.SystemPropertiesDevConsole", + "groupId": "org.apache.camel", + "artifactId": "camel-console", + "version": "4.11.0-SNAPSHOT" + } +} + diff --git a/core/camel-console/src/generated/java/org/apache/camel/impl/console/SystemPropertiesDevConsoleConfigurer.java b/core/camel-console/src/generated/java/org/apache/camel/impl/console/SystemPropertiesDevConsoleConfigurer.java new file mode 100644 index 00000000000..e0f776268b3 --- /dev/null +++ b/core/camel-console/src/generated/java/org/apache/camel/impl/console/SystemPropertiesDevConsoleConfigurer.java @@ -0,0 +1,63 @@ +/* Generated by camel build tools - do NOT edit this file! */ +package org.apache.camel.impl.console; + +import javax.annotation.processing.Generated; +import java.util.Map; + +import org.apache.camel.CamelContext; +import org.apache.camel.spi.ExtendedPropertyConfigurerGetter; +import org.apache.camel.spi.PropertyConfigurerGetter; +import org.apache.camel.spi.ConfigurerStrategy; +import org.apache.camel.spi.GeneratedPropertyConfigurer; +import org.apache.camel.util.CaseInsensitiveMap; +import org.apache.camel.impl.console.SystemPropertiesDevConsole; + +/** + * Generated by camel build tools - do NOT edit this file! + */ +@Generated("org.apache.camel.maven.packaging.GenerateConfigurerMojo") +@SuppressWarnings("unchecked") +public class SystemPropertiesDevConsoleConfigurer extends org.apache.camel.support.component.PropertyConfigurerSupport implements GeneratedPropertyConfigurer, ExtendedPropertyConfigurerGetter { + + private static final Map<String, Object> ALL_OPTIONS; + static { + Map<String, Object> map = new CaseInsensitiveMap(); + map.put("CamelContext", org.apache.camel.CamelContext.class); + ALL_OPTIONS = map; + } + + @Override + public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) { + org.apache.camel.impl.console.SystemPropertiesDevConsole target = (org.apache.camel.impl.console.SystemPropertiesDevConsole) obj; + switch (ignoreCase ? name.toLowerCase() : name) { + case "camelcontext": + case "camelContext": target.setCamelContext(property(camelContext, org.apache.camel.CamelContext.class, value)); return true; + default: return false; + } + } + + @Override + public Map<String, Object> getAllOptions(Object target) { + return ALL_OPTIONS; + } + + @Override + public Class<?> getOptionType(String name, boolean ignoreCase) { + switch (ignoreCase ? name.toLowerCase() : name) { + case "camelcontext": + case "camelContext": return org.apache.camel.CamelContext.class; + default: return null; + } + } + + @Override + public Object getOptionValue(Object obj, String name, boolean ignoreCase) { + org.apache.camel.impl.console.SystemPropertiesDevConsole target = (org.apache.camel.impl.console.SystemPropertiesDevConsole) obj; + switch (ignoreCase ? name.toLowerCase() : name) { + case "camelcontext": + case "camelContext": return target.getCamelContext(); + default: return null; + } + } +} + diff --git a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/system-properties.json b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/system-properties.json new file mode 100644 index 00000000000..159808b6361 --- /dev/null +++ b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/system-properties.json @@ -0,0 +1,15 @@ +{ + "console": { + "kind": "console", + "group": "camel", + "name": "system-properties", + "title": "System Properties", + "description": "Displays Java System Properties", + "deprecated": false, + "javaType": "org.apache.camel.impl.console.SystemPropertiesDevConsole", + "groupId": "org.apache.camel", + "artifactId": "camel-console", + "version": "4.11.0-SNAPSHOT" + } +} + diff --git a/core/camel-console/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.impl.console.SystemPropertiesDevConsole b/core/camel-console/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.impl.console.SystemPropertiesDevConsole new file mode 100644 index 00000000000..879f0749dfb --- /dev/null +++ b/core/camel-console/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.impl.console.SystemPropertiesDevConsole @@ -0,0 +1,2 @@ +# Generated by camel build tools - do NOT edit this file! +class=org.apache.camel.impl.console.SystemPropertiesDevConsoleConfigurer diff --git a/core/camel-console/src/generated/resources/META-INF/services/org/apache/camel/dev-console/system-properties b/core/camel-console/src/generated/resources/META-INF/services/org/apache/camel/dev-console/system-properties new file mode 100644 index 00000000000..1f5eff38d69 --- /dev/null +++ b/core/camel-console/src/generated/resources/META-INF/services/org/apache/camel/dev-console/system-properties @@ -0,0 +1,2 @@ +# Generated by camel build tools - do NOT edit this file! +class=org.apache.camel.impl.console.SystemPropertiesDevConsole diff --git a/core/camel-console/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties b/core/camel-console/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties index 9d00d6a0c8c..a3f4a558aa9 100644 --- a/core/camel-console/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties +++ b/core/camel-console/src/generated/resources/META-INF/services/org/apache/camel/dev-consoles.properties @@ -1,5 +1,5 @@ # Generated by camel build tools - do NOT edit this file! -dev-consoles=bean blocked browse circuit-breaker consumer context debug endpoint event gc health inflight java-security jvm log memory properties receive reload rest route route-controller route-dump send service source startup-recorder thread top trace transformers type-converters variables +dev-consoles=bean blocked browse circuit-breaker consumer context debug endpoint event gc health inflight java-security jvm log memory properties receive reload rest route route-controller route-dump send service source startup-recorder system-properties thread top trace transformers type-converters variables groupId=org.apache.camel artifactId=camel-console version=4.11.0-SNAPSHOT diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/SystemPropertiesDevConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/SystemPropertiesDevConsole.java new file mode 100644 index 00000000000..bd0590ce938 --- /dev/null +++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/SystemPropertiesDevConsole.java @@ -0,0 +1,73 @@ +/* + * 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.impl.console; + +import java.util.Map; +import java.util.Properties; +import java.util.Set; +import java.util.TreeSet; + +import org.apache.camel.spi.Configurer; +import org.apache.camel.spi.annotations.DevConsole; +import org.apache.camel.support.console.AbstractDevConsole; +import org.apache.camel.util.json.JsonArray; +import org.apache.camel.util.json.JsonObject; + +@DevConsole(name = "system-properties", description = "Displays Java System Properties") +@Configurer(extended = true) +public class SystemPropertiesDevConsole extends AbstractDevConsole { + + public SystemPropertiesDevConsole() { + super("jvm", "system-properties", "Java System Properties", "Displays Java System Properties"); + } + + @Override + protected String doCallText(Map<String, Object> options) { + StringBuilder sb = new StringBuilder(); + + Properties p = System.getProperties(); + Set<String> keys = new TreeSet<>(p.stringPropertyNames()); + + sb.append("System Properties:"); + sb.append("\n"); + for (String k : keys) { + sb.append(String.format(" %s = %s\n", k, System.getProperty(k))); + } + sb.append("\n"); + + return sb.toString(); + } + + @Override + protected JsonObject doCallJson(Map<String, Object> options) { + JsonObject root = new JsonObject(); + + JsonArray arr = new JsonArray(); + root.put("systemProperties", arr); + + Properties p = System.getProperties(); + Set<String> keys = new TreeSet<>(p.stringPropertyNames()); + for (String k : keys) { + JsonObject jo = new JsonObject(); + jo.put(k, System.getProperty(k)); + arr.add(jo); + } + + return root; + } + +} 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 e8818feb271..72cb8c461a0 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 @@ -25,6 +25,7 @@ import java.util.Map; import java.util.Objects; import java.util.Optional; import java.util.TreeMap; +import java.util.stream.Stream; import org.w3c.dom.Document; @@ -478,10 +479,8 @@ public class KameletMain extends MainCommandLineSupport { mainConfigurationProperties.setAutoConfigurationFailFast(false); } - String info = startupInfo(); - if (info != null) { - LOG.info(info); - } + var infos = startupInfo(); + infos.forEach(LOG::info); answer.getCamelContextExtension().setRegistry(registry); if (silent || "*".equals(stubPattern)) { @@ -866,14 +865,26 @@ public class KameletMain extends MainCommandLineSupport { addInitialProperty("camel.component.kamelet.location", location); } - protected String startupInfo() { + protected Stream<String> startupInfo() { + List<String> infos = new ArrayList<>(); + StringBuilder sb = new StringBuilder(); + sb.append("Running ").append(System.getProperty("os.name")).append(" ").append(System.getProperty("os.version")); + sb.append(" (").append(System.getProperty("os.arch")).append(")"); + infos.add(sb.toString()); + + sb = new StringBuilder(); sb.append("Using Java ").append(System.getProperty("java.version")).append(" (") .append(System.getProperty("java.vm.name")).append(")"); sb.append(" with PID ").append(getPid()); - sb.append(". Started by ").append(System.getProperty("user.name")); + infos.add(sb.toString()); + + sb = new StringBuilder(); + sb.append("Started by ").append(System.getProperty("user.name")); sb.append(" in ").append(System.getProperty("user.dir")); - return sb.toString(); + infos.add(sb.toString()); + + return infos.stream(); } @Override