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) {
