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

davsclaus pushed a commit to branch jt
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 62b546447512f037ef1f7369cab3e8067ca3d242
Author: Claus Ibsen <[email protected]>
AuthorDate: Thu Aug 14 09:38:40 2025 +0200

    CAMEL-22205: camel-jbang: Document all camel.jbang options for tooling
---
 .../main/camel-main-configuration-metadata.json    | 16 +++++++--------
 .../org/apache/camel/catalog/CamelCatalog.java     |  6 ++++++
 .../catalog/CamelCatalogJSonSchemaResolver.java    |  6 ++++++
 .../apache/camel/catalog/DefaultCamelCatalog.java  |  6 ++++++
 .../org/apache/camel/catalog/CamelCatalogTest.java |  6 ++++++
 .../apache/camel/catalog/JSonSchemaResolver.java   |  7 +++++++
 .../camel/catalog/impl/AbstractCamelCatalog.java   | 10 +++++++++
 .../impl/CamelContextJSonSchemaResolver.java       | 24 ++++++++++++++++++++++
 .../camel-main-configuration-metadata.json         | 16 +++++++--------
 .../camel/yaml/io/ModelJSonSchemaResolver.java     | 11 ++++++++++
 10 files changed, 92 insertions(+), 16 deletions(-)

diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/main/camel-main-configuration-metadata.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/main/camel-main-configuration-metadata.json
index c829bfc6bf3..6d91d8826a1 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/main/camel-main-configuration-metadata.json
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/main/camel-main-configuration-metadata.json
@@ -423,13 +423,13 @@
     { "name": "camel.vault.kubernetes.secrets", "description": "Specify the 
secret names (or pattern) to check for updates. Multiple secrets can be 
separated by comma.", "sourceType": 
"org.apache.camel.vault.KubernetesVaultConfiguration", "type": "string", 
"javaType": "java.lang.String" },
     { "name": "camel.vault.kubernetescm.configmaps", "description": "Specify 
the configmap names (or pattern) to check for updates. Multiple configmaps can 
be separated by comma.", "sourceType": 
"org.apache.camel.vault.KubernetesConfigMapVaultConfiguration", "type": 
"string", "javaType": "java.lang.String" },
     { "name": "camel.vault.kubernetescm.refreshEnabled", "description": 
"Whether to automatically reload Camel upon configmaps being updated in 
Kubernetes Cluster.", "sourceType": 
"org.apache.camel.vault.KubernetesConfigMapVaultConfiguration", "type": 
"boolean", "javaType": "boolean", "defaultValue": "false" },
-    { "name": "camel.vault.springConfig.label", "description": null, 
"sourceType": "org.apache.camel.vault.SpringCloudConfigConfiguration", "type": 
"string", "javaType": "java.lang.String" },
-    { "name": "camel.vault.springConfig.password", "description": null, 
"sourceType": "org.apache.camel.vault.SpringCloudConfigConfiguration", "type": 
"string", "javaType": "java.lang.String" },
-    { "name": "camel.vault.springConfig.profile", "description": null, 
"sourceType": "org.apache.camel.vault.SpringCloudConfigConfiguration", "type": 
"string", "javaType": "java.lang.String" },
-    { "name": "camel.vault.springConfig.refreshEnabled", "description": null, 
"sourceType": "org.apache.camel.vault.SpringCloudConfigConfiguration", "type": 
"boolean", "javaType": "boolean", "defaultValue": "false" },
-    { "name": "camel.vault.springConfig.refreshPeriod", "description": null, 
"sourceType": "org.apache.camel.vault.SpringCloudConfigConfiguration", "type": 
"integer", "javaType": "long", "defaultValue": 30000 },
-    { "name": "camel.vault.springConfig.token", "description": null, 
"sourceType": "org.apache.camel.vault.SpringCloudConfigConfiguration", "type": 
"string", "javaType": "java.lang.String" },
-    { "name": "camel.vault.springConfig.uris", "description": null, 
"sourceType": "org.apache.camel.vault.SpringCloudConfigConfiguration", "type": 
"string", "javaType": "java.lang.String", "defaultValue": 
"http:\/\/localhost:8888" },
-    { "name": "camel.vault.springConfig.username", "description": null, 
"sourceType": "org.apache.camel.vault.SpringCloudConfigConfiguration", "type": 
"string", "javaType": "java.lang.String", "defaultValue": "user" }
+    { "name": "camel.vault.springConfig.label", "sourceType": 
"org.apache.camel.vault.SpringCloudConfigConfiguration", "type": "string", 
"javaType": "java.lang.String" },
+    { "name": "camel.vault.springConfig.password", "sourceType": 
"org.apache.camel.vault.SpringCloudConfigConfiguration", "type": "string", 
"javaType": "java.lang.String" },
+    { "name": "camel.vault.springConfig.profile", "sourceType": 
"org.apache.camel.vault.SpringCloudConfigConfiguration", "type": "string", 
"javaType": "java.lang.String" },
+    { "name": "camel.vault.springConfig.refreshEnabled", "sourceType": 
"org.apache.camel.vault.SpringCloudConfigConfiguration", "type": "boolean", 
"javaType": "boolean", "defaultValue": "false" },
+    { "name": "camel.vault.springConfig.refreshPeriod", "sourceType": 
"org.apache.camel.vault.SpringCloudConfigConfiguration", "type": "integer", 
"javaType": "long", "defaultValue": 30000 },
+    { "name": "camel.vault.springConfig.token", "sourceType": 
"org.apache.camel.vault.SpringCloudConfigConfiguration", "type": "string", 
"javaType": "java.lang.String" },
+    { "name": "camel.vault.springConfig.uris", "sourceType": 
"org.apache.camel.vault.SpringCloudConfigConfiguration", "type": "string", 
"javaType": "java.lang.String", "defaultValue": "http:\/\/localhost:8888" },
+    { "name": "camel.vault.springConfig.username", "sourceType": 
"org.apache.camel.vault.SpringCloudConfigConfiguration", "type": "string", 
"javaType": "java.lang.String", "defaultValue": "user" }
   ]
 }
diff --git 
a/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/CamelCatalog.java
 
b/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/CamelCatalog.java
index cf2d2056a42..6efc1461315 100644
--- 
a/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/CamelCatalog.java
+++ 
b/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/CamelCatalog.java
@@ -29,6 +29,7 @@ import org.apache.camel.tooling.model.ComponentModel;
 import org.apache.camel.tooling.model.DataFormatModel;
 import org.apache.camel.tooling.model.DevConsoleModel;
 import org.apache.camel.tooling.model.EipModel;
+import org.apache.camel.tooling.model.JBangModel;
 import org.apache.camel.tooling.model.Kind;
 import org.apache.camel.tooling.model.LanguageModel;
 import org.apache.camel.tooling.model.MainModel;
@@ -608,6 +609,11 @@ public interface CamelCatalog {
      */
     MainModel mainModel();
 
+    /**
+     * @return the requested jbang model or {@code null} in case it is not 
available in this {@link CamelCatalog}
+     */
+    JBangModel jbangModel();
+
     /**
      * Lookup the model for the given kind and name
      *
diff --git 
a/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/CamelCatalogJSonSchemaResolver.java
 
b/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/CamelCatalogJSonSchemaResolver.java
index fb01ee50468..fce96a27414 100644
--- 
a/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/CamelCatalogJSonSchemaResolver.java
+++ 
b/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/CamelCatalogJSonSchemaResolver.java
@@ -132,6 +132,12 @@ public class CamelCatalogJSonSchemaResolver implements 
JSonSchemaResolver {
         return loadResourceFromVersionManager(file);
     }
 
+    @Override
+    public String getJBangJsonSchema() {
+        final String file = 
"org/apache/camel/catalog/jbang/camel-jbang-configuration-metadata.json";
+        return loadResourceFromVersionManager(file);
+    }
+
     @Override
     public String getOtherJSonSchema(String name) {
         final String file = 
camelCatalog.getRuntimeProvider().getOtherJSonSchemaDirectory() + "/" + name + 
EXTENSION;
diff --git 
a/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java
 
b/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java
index f1216c952d9..d312026b25f 100644
--- 
a/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java
+++ 
b/catalog/camel-catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java
@@ -40,6 +40,7 @@ import org.apache.camel.tooling.model.ComponentModel;
 import org.apache.camel.tooling.model.DataFormatModel;
 import org.apache.camel.tooling.model.DevConsoleModel;
 import org.apache.camel.tooling.model.EipModel;
+import org.apache.camel.tooling.model.JBangModel;
 import org.apache.camel.tooling.model.JsonMapper;
 import org.apache.camel.tooling.model.LanguageModel;
 import org.apache.camel.tooling.model.MainModel;
@@ -419,6 +420,11 @@ public class DefaultCamelCatalog extends 
AbstractCachingCamelCatalog implements
         return cache("main-model", "main-model", k -> super.mainModel());
     }
 
+    @Override
+    public JBangModel jbangModel() {
+        return cache("jbang-model", "jbang-model", k -> super.jbangModel());
+    }
+
     @Override
     public Set<String> findModelLabels() {
         return cache(FIND_MODEL_LABELS, () -> findLabels(this::findModelNames, 
this::eipModel));
diff --git 
a/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
 
b/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
index 8a6f1e0bcf8..e2636a2c1a3 100644
--- 
a/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
+++ 
b/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
@@ -212,12 +212,18 @@ public class CamelCatalogTest {
     public void testMain() {
         String schema = catalog.mainJsonSchema();
         assertNotNull(schema);
+
+        var model = catalog.mainModel();
+        assertNotNull(model);
     }
 
     @Test
     public void testJBang() {
         String schema = catalog.jbangJsonSchema();
         assertNotNull(schema);
+
+        var model = catalog.jbangModel();
+        assertNotNull(model);
     }
 
     @Test
diff --git 
a/core/camel-api/src/main/java/org/apache/camel/catalog/JSonSchemaResolver.java 
b/core/camel-api/src/main/java/org/apache/camel/catalog/JSonSchemaResolver.java
index 0027f93d1df..7b8c99f4c57 100644
--- 
a/core/camel-api/src/main/java/org/apache/camel/catalog/JSonSchemaResolver.java
+++ 
b/core/camel-api/src/main/java/org/apache/camel/catalog/JSonSchemaResolver.java
@@ -89,6 +89,13 @@ public interface JSonSchemaResolver {
      */
     String getMainJsonSchema();
 
+    /**
+     * Returns the camel-jbang json schema
+     *
+     * @return the camel-jbang json schema
+     */
+    String getJBangJsonSchema();
+
     /**
      * Returns the pojo bean information as JSON format.
      *
diff --git 
a/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/AbstractCamelCatalog.java
 
b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/AbstractCamelCatalog.java
index 238dde62451..a5599694e1b 100644
--- 
a/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/AbstractCamelCatalog.java
+++ 
b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/AbstractCamelCatalog.java
@@ -52,6 +52,7 @@ import org.apache.camel.tooling.model.ComponentModel;
 import org.apache.camel.tooling.model.DataFormatModel;
 import org.apache.camel.tooling.model.DevConsoleModel;
 import org.apache.camel.tooling.model.EipModel;
+import org.apache.camel.tooling.model.JBangModel;
 import org.apache.camel.tooling.model.JsonMapper;
 import org.apache.camel.tooling.model.LanguageModel;
 import org.apache.camel.tooling.model.MainModel;
@@ -163,6 +164,15 @@ public abstract class AbstractCamelCatalog {
         return json != null ? JsonMapper.generateMainModel(json) : null;
     }
 
+    public String jbangJSonSchema() {
+        return getJSonSchemaResolver().getJBangJsonSchema();
+    }
+
+    public JBangModel jbangModel() {
+        String json = jbangJSonSchema();
+        return json != null ? JsonMapper.generateJBangModel(json) : null;
+    }
+
     public SuggestionStrategy getSuggestionStrategy() {
         return suggestionStrategy;
     }
diff --git 
a/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/CamelContextJSonSchemaResolver.java
 
b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/CamelContextJSonSchemaResolver.java
index a737401dd8f..402d22eed0e 100644
--- 
a/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/CamelContextJSonSchemaResolver.java
+++ 
b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/CamelContextJSonSchemaResolver.java
@@ -140,4 +140,28 @@ public class CamelContextJSonSchemaResolver implements 
JSonSchemaResolver {
         }
         return null;
     }
+
+    @Override
+    public String getJBangJsonSchema() {
+        String path = "META-INF/camel-jbang-configuration-metadata.json";
+        InputStream is = null;
+        if (classLoader != null) {
+            is = classLoader.getResourceAsStream(path);
+        }
+        if (is == null) {
+            ClassResolver resolver = camelContext.getClassResolver();
+            is = resolver.loadResourceAsStream(path);
+        }
+        if (is != null) {
+            try {
+                return IOHelper.loadText(is);
+            } catch (IOException e) {
+                // ignore
+            } finally {
+                IOHelper.close(is);
+            }
+        }
+        return null;
+    }
+
 }
diff --git 
a/core/camel-main/src/generated/resources/META-INF/camel-main-configuration-metadata.json
 
b/core/camel-main/src/generated/resources/META-INF/camel-main-configuration-metadata.json
index c829bfc6bf3..6d91d8826a1 100644
--- 
a/core/camel-main/src/generated/resources/META-INF/camel-main-configuration-metadata.json
+++ 
b/core/camel-main/src/generated/resources/META-INF/camel-main-configuration-metadata.json
@@ -423,13 +423,13 @@
     { "name": "camel.vault.kubernetes.secrets", "description": "Specify the 
secret names (or pattern) to check for updates. Multiple secrets can be 
separated by comma.", "sourceType": 
"org.apache.camel.vault.KubernetesVaultConfiguration", "type": "string", 
"javaType": "java.lang.String" },
     { "name": "camel.vault.kubernetescm.configmaps", "description": "Specify 
the configmap names (or pattern) to check for updates. Multiple configmaps can 
be separated by comma.", "sourceType": 
"org.apache.camel.vault.KubernetesConfigMapVaultConfiguration", "type": 
"string", "javaType": "java.lang.String" },
     { "name": "camel.vault.kubernetescm.refreshEnabled", "description": 
"Whether to automatically reload Camel upon configmaps being updated in 
Kubernetes Cluster.", "sourceType": 
"org.apache.camel.vault.KubernetesConfigMapVaultConfiguration", "type": 
"boolean", "javaType": "boolean", "defaultValue": "false" },
-    { "name": "camel.vault.springConfig.label", "description": null, 
"sourceType": "org.apache.camel.vault.SpringCloudConfigConfiguration", "type": 
"string", "javaType": "java.lang.String" },
-    { "name": "camel.vault.springConfig.password", "description": null, 
"sourceType": "org.apache.camel.vault.SpringCloudConfigConfiguration", "type": 
"string", "javaType": "java.lang.String" },
-    { "name": "camel.vault.springConfig.profile", "description": null, 
"sourceType": "org.apache.camel.vault.SpringCloudConfigConfiguration", "type": 
"string", "javaType": "java.lang.String" },
-    { "name": "camel.vault.springConfig.refreshEnabled", "description": null, 
"sourceType": "org.apache.camel.vault.SpringCloudConfigConfiguration", "type": 
"boolean", "javaType": "boolean", "defaultValue": "false" },
-    { "name": "camel.vault.springConfig.refreshPeriod", "description": null, 
"sourceType": "org.apache.camel.vault.SpringCloudConfigConfiguration", "type": 
"integer", "javaType": "long", "defaultValue": 30000 },
-    { "name": "camel.vault.springConfig.token", "description": null, 
"sourceType": "org.apache.camel.vault.SpringCloudConfigConfiguration", "type": 
"string", "javaType": "java.lang.String" },
-    { "name": "camel.vault.springConfig.uris", "description": null, 
"sourceType": "org.apache.camel.vault.SpringCloudConfigConfiguration", "type": 
"string", "javaType": "java.lang.String", "defaultValue": 
"http:\/\/localhost:8888" },
-    { "name": "camel.vault.springConfig.username", "description": null, 
"sourceType": "org.apache.camel.vault.SpringCloudConfigConfiguration", "type": 
"string", "javaType": "java.lang.String", "defaultValue": "user" }
+    { "name": "camel.vault.springConfig.label", "sourceType": 
"org.apache.camel.vault.SpringCloudConfigConfiguration", "type": "string", 
"javaType": "java.lang.String" },
+    { "name": "camel.vault.springConfig.password", "sourceType": 
"org.apache.camel.vault.SpringCloudConfigConfiguration", "type": "string", 
"javaType": "java.lang.String" },
+    { "name": "camel.vault.springConfig.profile", "sourceType": 
"org.apache.camel.vault.SpringCloudConfigConfiguration", "type": "string", 
"javaType": "java.lang.String" },
+    { "name": "camel.vault.springConfig.refreshEnabled", "sourceType": 
"org.apache.camel.vault.SpringCloudConfigConfiguration", "type": "boolean", 
"javaType": "boolean", "defaultValue": "false" },
+    { "name": "camel.vault.springConfig.refreshPeriod", "sourceType": 
"org.apache.camel.vault.SpringCloudConfigConfiguration", "type": "integer", 
"javaType": "long", "defaultValue": 30000 },
+    { "name": "camel.vault.springConfig.token", "sourceType": 
"org.apache.camel.vault.SpringCloudConfigConfiguration", "type": "string", 
"javaType": "java.lang.String" },
+    { "name": "camel.vault.springConfig.uris", "sourceType": 
"org.apache.camel.vault.SpringCloudConfigConfiguration", "type": "string", 
"javaType": "java.lang.String", "defaultValue": "http:\/\/localhost:8888" },
+    { "name": "camel.vault.springConfig.username", "sourceType": 
"org.apache.camel.vault.SpringCloudConfigConfiguration", "type": "string", 
"javaType": "java.lang.String", "defaultValue": "user" }
   ]
 }
diff --git 
a/core/camel-yaml-io/src/main/java/org/apache/camel/yaml/io/ModelJSonSchemaResolver.java
 
b/core/camel-yaml-io/src/main/java/org/apache/camel/yaml/io/ModelJSonSchemaResolver.java
index 0f78b2ed679..fbbec6f79b6 100644
--- 
a/core/camel-yaml-io/src/main/java/org/apache/camel/yaml/io/ModelJSonSchemaResolver.java
+++ 
b/core/camel-yaml-io/src/main/java/org/apache/camel/yaml/io/ModelJSonSchemaResolver.java
@@ -152,6 +152,17 @@ class ModelJSonSchemaResolver implements 
JSonSchemaResolver {
         return null;
     }
 
+    @Override
+    public String getJBangJsonSchema() {
+        try {
+            String path = "META-INF/camel-jbang-configuration-metadata.json";
+            return doLoadResource(path);
+        } catch (Exception e) {
+            // ignore
+        }
+        return null;
+    }
+
     private String doLoadResource(String path) throws IOException {
         InputStream is = null;
         if (classLoader != null) {

Reply via email to