This is an automated email from the ASF dual-hosted git repository. jiriondrusek pushed a commit to branch camel-main in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
commit 86544d1ea548e925c14d72d520dad33467e6c363 Author: James Netherton <jamesnether...@gmail.com> AuthorDate: Fri Mar 8 08:48:10 2024 +0000 Fix catalog JSON resolution in native mode --- docs/modules/ROOT/pages/reference/extensions/core.adoc | 8 ++++++++ .../quarkus/core/deployment/CamelNativeImageProcessor.java | 7 ++++++- .../main/java/org/apache/camel/quarkus/core/CamelConfig.java | 11 +++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/docs/modules/ROOT/pages/reference/extensions/core.adoc b/docs/modules/ROOT/pages/reference/extensions/core.adoc index 014d098b7d..4ca4a1b84c 100644 --- a/docs/modules/ROOT/pages/reference/extensions/core.adoc +++ b/docs/modules/ROOT/pages/reference/extensions/core.adoc @@ -208,6 +208,14 @@ Setting this to `false` helps to reduce the size of the native image. In JVM mod | `boolean` | `true` +|icon:lock[title=Fixed at build time] [[quarkus.camel.runtime-catalog.transformers]]`link:#quarkus.camel.runtime-catalog.transformers[quarkus.camel.runtime-catalog.transformers]` + +If `true` the Runtime Camel Catalog embedded in the application will contain JSON schemas of Camel transformers available in the application; otherwise transformer JSON schemas will not be available in the Runtime Camel Catalog and any attempt to access those will result in a RuntimeException. + +Setting this to `false` helps to reduce the size of the native image. In JVM mode, there is no real benefit of setting this flag to `false` except for making the behavior consistent with native mode. +| `boolean` +| `true` + |icon:lock[title=Fixed at build time] [[quarkus.camel.routes-discovery.enabled]]`link:#quarkus.camel.routes-discovery.enabled[quarkus.camel.routes-discovery.enabled]` Enable automatic discovery of routes during static initialization. diff --git a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelNativeImageProcessor.java b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelNativeImageProcessor.java index 3319d86b62..4711587b18 100644 --- a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelNativeImageProcessor.java +++ b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelNativeImageProcessor.java @@ -44,6 +44,7 @@ import org.apache.camel.TypeConverter; import org.apache.camel.impl.engine.DefaultComponentResolver; import org.apache.camel.impl.engine.DefaultDataFormatResolver; import org.apache.camel.impl.engine.DefaultLanguageResolver; +import org.apache.camel.impl.engine.DefaultTransformerResolver; import org.apache.camel.quarkus.core.CamelConfig; import org.apache.camel.quarkus.core.CamelConfig.ReflectionConfig; import org.apache.camel.quarkus.core.CamelConfigFlags; @@ -179,7 +180,7 @@ public class CamelNativeImageProcessor { .forEach(service -> { String packageName = getPackageName(service.type); - String jsonPath = String.format("%s/%s.json", packageName.replace('.', '/'), service.name); + String jsonPath = String.format("META-INF/%s/%s.json", packageName.replace('.', '/'), service.name); if (config.runtimeCatalog.components && service.path.startsWith(DefaultComponentResolver.RESOURCE_PATH)) { @@ -193,6 +194,10 @@ public class CamelNativeImageProcessor { && service.path.startsWith(DefaultLanguageResolver.LANGUAGE_RESOURCE_PATH)) { resources.add(new NativeImageResourceBuildItem(jsonPath)); } + if (config.runtimeCatalog.transformers + && service.path.startsWith(DefaultTransformerResolver.DATA_TYPE_TRANSFORMER_RESOURCE_PATH)) { + resources.add(new NativeImageResourceBuildItem(jsonPath)); + } }); if (config.runtimeCatalog.models) { diff --git a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelConfig.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelConfig.java index a03ca09958..7ba39b5430 100644 --- a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelConfig.java +++ b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelConfig.java @@ -339,6 +339,17 @@ public class CamelConfig { */ @ConfigItem(defaultValue = "true") public boolean models; + + /** + * If {@code true} the Runtime Camel Catalog embedded in the application will contain JSON schemas of Camel + * transformers available in the application; otherwise transformer JSON schemas will not be available in the + * Runtime Camel Catalog and any attempt to access those will result in a RuntimeException. + * <p> + * Setting this to {@code false} helps to reduce the size of the native image. In JVM mode, there is no real + * benefit of setting this flag to {@code false} except for making the behavior consistent with native mode. + */ + @ConfigItem(defaultValue = "true") + public boolean transformers; } /**