This is an automated email from the ASF dual-hosted git repository. gnodet pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
The following commit(s) were added to refs/heads/master by this push: new a94fcca Upgrade to camel 3.2.0 a94fcca is described below commit a94fcca655355e0caafed2cf0d990e94d223754b Author: Guillaume Nodet <gno...@gmail.com> AuthorDate: Wed Apr 8 16:39:32 2020 +0200 Upgrade to camel 3.2.0 --- docs/modules/ROOT/pages/cdi.adoc | 2 +- .../pages/list-of-camel-quarkus-extensions.adoc | 4 +- .../main/java/org/acme/observability/Routes.java | 2 +- .../org/acme/observability/ObservabilityTest.java | 2 +- .../src/main/java/org/acme/timer/TimerRoute.java | 2 +- .../src/main/java/org/acme/timer/TimerRoute.java | 2 +- .../src/main/resources/routes/my-routes.xml | 2 +- .../src/main/java/org/acme/timer/TimerRoute.java | 2 +- .../quarkus/core/deployment/BuildProcessor.java | 13 ++ .../core/deployment/NativeImageProcessor.java | 34 +++- extensions-core/core/runtime/pom.xml | 12 ++ .../org/apache/camel/quarkus/core/BaseModel.java | 59 +----- .../org/apache/camel/quarkus/core/CamelMain.java | 8 +- .../camel/quarkus/core/CamelMainRecorder.java | 1 - .../apache/camel/quarkus/core/CamelRecorder.java | 2 +- .../quarkus/core/DisabledValidateReifier.java | 6 +- .../camel/quarkus/core/FastCamelContext.java | 225 ++++++++++++--------- .../org/apache/camel/quarkus/core/FastModel.java | 195 ------------------ .../camel/quarkus/core/FastTypeConverter.java | 11 +- .../component/xml/jaxb/XmlJaxbRecorder.java | 2 +- .../avro-rpc/deployment}/pom.xml | 27 +-- .../component/avro/deployment/AvroProcessor.java | 58 ++++++ extensions-jvm/avro-rpc/integration-test/pom.xml | 82 ++++++++ .../quarkus/component/avro/it/AvroResource.java | 15 +- .../camel/quarkus/component/avro/it/AvroTest.java | 8 - .../avro-rpc/pom.xml | 32 +-- .../avro-rpc}/runtime/pom.xml | 15 +- .../camel/quarkus/component/avro/AvroRecorder.java | 14 ++ .../main/resources/META-INF/quarkus-extension.yaml | 29 +++ .../quarkus/component/avro/it/AvroResource.java | 15 +- .../camel/quarkus/component/avro/it/AvroTest.java | 8 - extensions-jvm/pom.xml | 1 + extensions-support/debezium/runtime/pom.xml | 4 + extensions/attachments/runtime/pom.xml | 1 + .../braintree/graal/BraintreeRecorder.java | 5 +- extensions/file/runtime/pom.xml | 1 + extensions/http/runtime/pom.xml | 1 + extensions/jackson/runtime/pom.xml | 1 + extensions/jaxb/runtime/pom.xml | 1 + extensions/pom.xml | 3 +- .../component/qute/QuteComponentConfigurer.java | 32 ++- .../component/qute/QuteEndpointConfigurer.java | 36 +++- .../org/apache/camel/component/qute/qute.json | 1 + .../reactive/streams/ReactiveStreamsRecorder.java | 10 +- .../component/rest/QuarkusRestComponent.java | 3 +- .../component/rest/QuarkusRestEndpoint.java | 9 +- extensions/servlet/runtime/pom.xml | 1 + .../src/main/resources/application.properties | 1 - .../src/main/resources/routes/my-routes.xml | 2 +- .../src/main/resources/routes/my-routes.xml | 2 +- .../camel/quarkus/component/file/it/FileTest.java | 2 +- integration-tests/pom.xml | 3 +- pom.xml | 9 +- poms/bom/pom.xml | 75 +++++++ .../org/apache/camel/quarkus/maven/CqCatalog.java | 21 +- .../quarkus/maven/PrepareCatalogQuarkusMojo.java | 2 +- 56 files changed, 631 insertions(+), 485 deletions(-) diff --git a/docs/modules/ROOT/pages/cdi.adoc b/docs/modules/ROOT/pages/cdi.adoc index e9f1420..f858973 100644 --- a/docs/modules/ROOT/pages/cdi.adoc +++ b/docs/modules/ROOT/pages/cdi.adoc @@ -15,7 +15,7 @@ import org.eclipse.microprofile.config.inject.ConfigProperty; @ApplicationScoped <1> public class TimerRoute extends RouteBuilder { - @ConfigProperty(name = "timer.period", defaultValue = "1s") <2> + @ConfigProperty(name = "timer.period", defaultValue = "1000") <2> String period; @Inject diff --git a/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc b/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc index df584d0..1d86eb5 100644 --- a/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc +++ b/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc @@ -41,7 +41,7 @@ Level | Since | Description `amqp:destinationType:destinationName` | Native + Stable | 1.0.0-M6 | Messaging with AMQP protocol using Apache QPid Client. -| link:https://camel.apache.org/components/latest/avro-component.html[Avro] (camel-quarkus-avro) + +| link:https://camel.apache.org/components/latest/avro-component.html[Avro] (camel-quarkus-avro-rpc) + `avro:transport:host:port/messageName` | JVM + Preview | 1.0.0-M6 | Working with Apache Avro for data serialization. @@ -299,7 +299,7 @@ Level | Since | Description | link:https://camel.apache.org/components/latest/google-pubsub-component.html[Google Pubsub] (camel-quarkus-google-pubsub) + `google-pubsub:projectId:destinationName` | JVM + - Preview | 1.0.0-M6 | Messaging client for Google Cloud Platform PubSub Service + Preview | 1.0.0-M6 | Messaging client for Google Cloud Platform PubSub Service Built on top of the Google Cloud Pub/Sub libraries. | link:https://camel.apache.org/components/latest/google-sheets-component.html[Google Sheets] (camel-quarkus-google-sheets) + `google-sheets:apiName/methodName` | Native + diff --git a/examples/observability/src/main/java/org/acme/observability/Routes.java b/examples/observability/src/main/java/org/acme/observability/Routes.java index c51196f..8f1be8f 100644 --- a/examples/observability/src/main/java/org/acme/observability/Routes.java +++ b/examples/observability/src/main/java/org/acme/observability/Routes.java @@ -23,7 +23,7 @@ public class Routes extends RouteBuilder { @Override public void configure() throws Exception { // Invokes a simple greeting endpoint every 10 seconds - from("timer:greeting?period=10s") + from("timer:greeting?period=10000") .to("netty-http:http://localhost:8099/greeting"); from("netty-http:0.0.0.0:8099/greeting") diff --git a/examples/observability/src/test/java/org/acme/observability/ObservabilityTest.java b/examples/observability/src/test/java/org/acme/observability/ObservabilityTest.java index 8d31c53..e1dd736 100644 --- a/examples/observability/src/test/java/org/acme/observability/ObservabilityTest.java +++ b/examples/observability/src/test/java/org/acme/observability/ObservabilityTest.java @@ -37,7 +37,7 @@ public class ObservabilityTest { .then() .statusCode(200) .body( - "'camel.context.status;camelContext=camel-quarkus-observability'", is(1)); + "'camel.context.status;camelContext=camel-quarkus-observability'", is(3)); } @Test diff --git a/examples/timer-log-cdi/src/main/java/org/acme/timer/TimerRoute.java b/examples/timer-log-cdi/src/main/java/org/acme/timer/TimerRoute.java index 8052005..0e0056f 100644 --- a/examples/timer-log-cdi/src/main/java/org/acme/timer/TimerRoute.java +++ b/examples/timer-log-cdi/src/main/java/org/acme/timer/TimerRoute.java @@ -32,7 +32,7 @@ import org.eclipse.microprofile.config.inject.ConfigProperty; public class TimerRoute extends RouteBuilder { /** {@code timer.period} is defined in {@code src/main/resources/application.properties} */ - @ConfigProperty(name = "timer.period", defaultValue = "1s") + @ConfigProperty(name = "timer.period", defaultValue = "1000") String period; /** An injected bean */ diff --git a/examples/timer-log-spring/src/main/java/org/acme/timer/TimerRoute.java b/examples/timer-log-spring/src/main/java/org/acme/timer/TimerRoute.java index 21c07bd..a7cdd61 100644 --- a/examples/timer-log-spring/src/main/java/org/acme/timer/TimerRoute.java +++ b/examples/timer-log-spring/src/main/java/org/acme/timer/TimerRoute.java @@ -31,7 +31,7 @@ public class TimerRoute extends RouteBuilder { * {@code timer.period} is defined in {@code src/main/resources/application.properties} */ @Value("timer.period") - String period = "1s"; + String period = "1000"; /** * An injected bean diff --git a/examples/timer-log-xml/src/main/resources/routes/my-routes.xml b/examples/timer-log-xml/src/main/resources/routes/my-routes.xml index 42fd73f..ed63c39 100644 --- a/examples/timer-log-xml/src/main/resources/routes/my-routes.xml +++ b/examples/timer-log-xml/src/main/resources/routes/my-routes.xml @@ -24,7 +24,7 @@ http://camel.apache.org/schema/spring/camel-spring.xsd"> <route id="xml-route"> - <from uri="timer:from-xml?period=1s"/> + <from uri="timer:from-xml?period=1000"/> <log message="Hello XML!"/> </route> diff --git a/examples/timer-log/src/main/java/org/acme/timer/TimerRoute.java b/examples/timer-log/src/main/java/org/acme/timer/TimerRoute.java index 70b8bd7..0a3b0b9 100644 --- a/examples/timer-log/src/main/java/org/acme/timer/TimerRoute.java +++ b/examples/timer-log/src/main/java/org/acme/timer/TimerRoute.java @@ -22,7 +22,7 @@ public class TimerRoute extends RouteBuilder { @Override public void configure() throws Exception { - from("timer:foo?period=1s") + from("timer:foo?period=1000") .log("Hello World"); } } diff --git a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/BuildProcessor.java b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/BuildProcessor.java index 7595070..94bb313 100644 --- a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/BuildProcessor.java +++ b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/BuildProcessor.java @@ -40,6 +40,7 @@ import io.quarkus.deployment.annotations.Overridable; import io.quarkus.deployment.annotations.Record; import io.quarkus.deployment.builditem.ApplicationArchivesBuildItem; import io.quarkus.deployment.builditem.CombinedIndexBuildItem; +import io.quarkus.deployment.builditem.IndexDependencyBuildItem; import io.quarkus.deployment.builditem.ServiceStartBuildItem; import io.quarkus.deployment.builditem.ShutdownContextBuildItem; import io.quarkus.deployment.recording.RecorderContext; @@ -100,6 +101,12 @@ class BuildProcessor { * Build steps related to camel core. */ public static class Core { + // TODO: remove when https://issues.apache.org/jira/browse/CAMEL-14851 is fixed + @BuildStep + IndexDependencyBuildItem endpointDslIndex() { + return new IndexDependencyBuildItem("org.apache.camel", "camel-endpointdsl"); + } + @BuildStep BeanRegistrationPhaseBuildItem.BeanConfiguratorBuildItem containerBeans( BeanRegistrationPhaseBuildItem beanRegistrationPhase, @@ -156,6 +163,12 @@ class BuildProcessor { "META-INF/services/org/apache/camel/language/*", "META-INF/services/org/apache/camel/dataformat/*", "META-INF/services/org/apache/camel/cron/*")); + + services.produce(new CamelServicePatternBuildItem( + CamelServiceDestination.DISCOVERY, + false, + "META-INF/services/org/apache/camel/configurer/avro-component", + "META-INF/services/org/apache/camel/configurer/avro-endpoint")); } @BuildStep diff --git a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/NativeImageProcessor.java b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/NativeImageProcessor.java index 0daef50..c055309 100644 --- a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/NativeImageProcessor.java +++ b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/NativeImageProcessor.java @@ -33,6 +33,7 @@ import io.quarkus.deployment.builditem.CombinedIndexBuildItem; import io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBuildItem; import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem; import io.quarkus.deployment.builditem.nativeimage.ReflectiveMethodBuildItem; +import io.quarkus.deployment.builditem.nativeimage.RuntimeReinitializedClassBuildItem; import org.apache.camel.CamelContext; import org.apache.camel.Component; import org.apache.camel.Consumer; @@ -85,7 +86,7 @@ public class NativeImageProcessor { PropertiesComponent.class, DataFormat.class); - @BuildStep + // @BuildStep void reflectiveItems( CombinedIndexBuildItem combinedIndex, BuildProducer<ReflectiveClassBuildItem> reflectiveClass, @@ -138,7 +139,7 @@ public class NativeImageProcessor { } - @BuildStep + // @BuildStep void camelServices( List<CamelServiceBuildItem> camelServices, BuildProducer<ReflectiveClassBuildItem> reflectiveClass) { @@ -292,16 +293,16 @@ public class NativeImageProcessor { // camelRoutesBuilders.forEach(camelRoutesBuilderClassBuildItem -> { reflectiveClass.produce( - new ReflectiveClassBuildItem(true, true, camelRoutesBuilderClassBuildItem.getDotName().toString())); + new ReflectiveClassBuildItem(false, false, camelRoutesBuilderClassBuildItem.getDotName().toString())); }); - reflectiveClass.produce(new ReflectiveClassBuildItem( - true, - false, - org.apache.camel.main.DefaultConfigurationProperties.class, - org.apache.camel.main.MainConfigurationProperties.class, - org.apache.camel.main.HystrixConfigurationProperties.class, - org.apache.camel.main.RestConfigurationProperties.class)); + // reflectiveClass.produce(new ReflectiveClassBuildItem( + // true, + // false, + // org.apache.camel.main.DefaultConfigurationProperties.class, + // org.apache.camel.main.MainConfigurationProperties.class, + // org.apache.camel.main.HystrixConfigurationProperties.class, + // org.apache.camel.main.RestConfigurationProperties.class)); // TODO: The classes below are needed to fix https://github.com/apache/camel-quarkus/issues/1005 // but we need to investigate why it does not fail with Java 1.8 @@ -314,4 +315,17 @@ public class NativeImageProcessor { org.apache.camel.spi.RestConfiguration.class)); } } + + @BuildStep + void process(BuildProducer<RuntimeReinitializedClassBuildItem> reinitialized) { + for (String s : Arrays.asList( + "sun.security.jca.JCAUtil", + "sun.security.jca.JCAUtil$CachedSecureRandomHolder", + "sun.security.provider.SecureRandom$SeederHolder", + "sun.security.provider.SeedGenerator", + "java.security.SecureRandom", + "java.net.DefaultDatagramSocketImplFactory")) { + reinitialized.produce(new RuntimeReinitializedClassBuildItem(s)); + } + } } diff --git a/extensions-core/core/runtime/pom.xml b/extensions-core/core/runtime/pom.xml index 57b7f16..32715da 100644 --- a/extensions-core/core/runtime/pom.xml +++ b/extensions-core/core/runtime/pom.xml @@ -87,6 +87,18 @@ </dependency> <dependency> <groupId>org.apache.camel</groupId> + <artifactId>camel-core-languages</artifactId> + </dependency> + <dependency> + <groupId>org.apache.camel</groupId> + <artifactId>camel-endpointdsl</artifactId> + </dependency> + <dependency> + <groupId>org.apache.camel</groupId> + <artifactId>camel-componentdsl</artifactId> + </dependency> + <dependency> + <groupId>org.apache.camel</groupId> <artifactId>camel-core-catalog</artifactId> </dependency> <dependency> diff --git a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/BaseModel.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/BaseModel.java index 0a11942..2ccfc61 100644 --- a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/BaseModel.java +++ b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/BaseModel.java @@ -16,28 +16,13 @@ */ package org.apache.camel.quarkus.core; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.function.Function; import org.apache.camel.CamelContext; import org.apache.camel.ExtendedCamelContext; -import org.apache.camel.FailedToStartRouteException; -import org.apache.camel.model.DataFormatDefinition; -import org.apache.camel.model.HystrixConfigurationDefinition; -import org.apache.camel.model.Model; -import org.apache.camel.model.ProcessorDefinition; -import org.apache.camel.model.ProcessorDefinitionHelper; -import org.apache.camel.model.Resilience4jConfigurationDefinition; -import org.apache.camel.model.RouteDefinition; -import org.apache.camel.model.RouteDefinitionHelper; -import org.apache.camel.model.RouteFilters; +import org.apache.camel.model.*; import org.apache.camel.model.cloud.ServiceCallConfigurationDefinition; import org.apache.camel.model.rest.RestDefinition; import org.apache.camel.model.transformer.TransformerDefinition; @@ -80,7 +65,7 @@ public abstract class BaseModel implements Model { removeRouteDefinitions(list); this.routeDefinitions.addAll(list); if (shouldStartRoutes()) { - startRouteDefinitions(list); + getCamelContext().adapt(ModelCamelContext.class).startRouteDefinitions(list); } } @@ -256,7 +241,7 @@ public abstract class BaseModel implements Model { } @Override - public <T extends ProcessorDefinition> T getProcessorDefinition(String id, Class<T> type) { + public <T extends ProcessorDefinition<T>> T getProcessorDefinition(String id, Class<T> type) { ProcessorDefinition answer = getProcessorDefinition(id); if (answer != null) { return type.cast(answer); @@ -295,11 +280,6 @@ public abstract class BaseModel implements Model { } @Override - public void startRouteDefinitions() throws Exception { - startRouteDefinitions(routeDefinitions); - } - - @Override public void setRouteFilterPattern(String include, String exclude) { setRouteFilter(RouteFilters.filterByPattern(include, exclude)); } @@ -314,37 +294,6 @@ public abstract class BaseModel implements Model { this.routeFilter = routeFilter; } - protected void startRouteDefinitions(Collection<RouteDefinition> list) throws Exception { - if (list != null) { - for (RouteDefinition route : list) { - startRoute(route); - } - } - } - - public void startRoute(RouteDefinition routeDefinition) throws Exception { - prepare(routeDefinition); - start(routeDefinition); - } - - protected void prepare(RouteDefinition routeDefinition) throws Exception { - // assign ids to the routes and validate that the id's is all unique - RouteDefinitionHelper.forceAssignIds(camelContext, routeDefinitions); - String duplicate = RouteDefinitionHelper.validateUniqueIds(routeDefinition, routeDefinitions); - if (duplicate != null) { - throw new FailedToStartRouteException(routeDefinition.getId(), - "duplicate id detected: " + duplicate + ". Please correct ids to be unique among all your routes."); - } - - // must ensure route is prepared, before we can start it - if (!routeDefinition.isPrepared()) { - RouteDefinitionHelper.prepareRoute(camelContext, routeDefinition); - routeDefinition.markPrepared(); - } - } - - protected abstract void start(RouteDefinition routeDefinition) throws Exception; - /** * Should we start newly added routes? */ diff --git a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelMain.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelMain.java index a83862c..34cfa37 100644 --- a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelMain.java +++ b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelMain.java @@ -41,12 +41,18 @@ public class CamelMain extends BaseMainSupport implements CamelContextAware { } @Override + protected void doInit() throws Exception { + super.doInit(); + postProcessCamelContext(getCamelContext()); + getCamelContext().init(); + } + + @Override protected void doStart() throws Exception { for (MainListener listener : listeners) { listener.beforeStart(this); } - postProcessCamelContext(getCamelContext()); getCamelContext().start(); for (MainListener listener : listeners) { diff --git a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelMainRecorder.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelMainRecorder.java index ec0d238..8542ee6 100644 --- a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelMainRecorder.java +++ b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelMainRecorder.java @@ -93,7 +93,6 @@ public class CamelMainRecorder { }); try { - main.getValue().init(); main.getValue().start(); } catch (Exception e) { throw new RuntimeException(e); diff --git a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRecorder.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRecorder.java index 56c37e5..95770b0 100644 --- a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRecorder.java +++ b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRecorder.java @@ -80,7 +80,7 @@ public class CamelRecorder { context.setTypeConverterRegistry(typeConverterRegistry.getValue()); context.setLoadTypeConverters(false); context.setModelJAXBContextFactory(contextFactory.getValue()); - context.init(); + context.build(); // register to the container beanContainer.instance(CamelProducers.class).setContext(context); diff --git a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledValidateReifier.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledValidateReifier.java index 911bfe7..a9b8144 100644 --- a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledValidateReifier.java +++ b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledValidateReifier.java @@ -17,15 +17,15 @@ package org.apache.camel.quarkus.core; import org.apache.camel.Processor; +import org.apache.camel.Route; import org.apache.camel.model.ProcessorDefinition; import org.apache.camel.model.ValidateDefinition; import org.apache.camel.reifier.ProcessorReifier; -import org.apache.camel.spi.RouteContext; public class DisabledValidateReifier extends ProcessorReifier<ValidateDefinition> { - public DisabledValidateReifier(RouteContext routeContext, ProcessorDefinition<?> definition) { - super(routeContext, (ValidateDefinition) definition); + public DisabledValidateReifier(Route route, ProcessorDefinition<?> definition) { + super(route, (ValidateDefinition) definition); } @Override diff --git a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java index f0d0493..768a48f 100644 --- a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java +++ b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java @@ -24,105 +24,33 @@ import java.util.Map; import java.util.concurrent.ExecutorService; import java.util.function.Function; -import org.apache.camel.AsyncProcessor; -import org.apache.camel.CatalogCamelContext; -import org.apache.camel.Component; -import org.apache.camel.Endpoint; -import org.apache.camel.Processor; -import org.apache.camel.TypeConverter; +import org.apache.camel.*; +import org.apache.camel.builder.AdviceWithRouteBuilder; import org.apache.camel.catalog.RuntimeCamelCatalog; import org.apache.camel.catalog.impl.DefaultRuntimeCamelCatalog; import org.apache.camel.component.microprofile.config.CamelMicroProfilePropertiesSource; import org.apache.camel.health.HealthCheckRegistry; import org.apache.camel.impl.DefaultExecutorServiceManager; -import org.apache.camel.impl.engine.AbstractCamelContext; -import org.apache.camel.impl.engine.BeanProcessorFactoryResolver; -import org.apache.camel.impl.engine.BeanProxyFactoryResolver; -import org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager; -import org.apache.camel.impl.engine.DefaultBeanIntrospection; -import org.apache.camel.impl.engine.DefaultCamelBeanPostProcessor; -import org.apache.camel.impl.engine.DefaultCamelContextNameStrategy; -import org.apache.camel.impl.engine.DefaultClassResolver; -import org.apache.camel.impl.engine.DefaultComponentResolver; -import org.apache.camel.impl.engine.DefaultConfigurerResolver; -import org.apache.camel.impl.engine.DefaultDataFormatResolver; -import org.apache.camel.impl.engine.DefaultEndpointRegistry; -import org.apache.camel.impl.engine.DefaultInflightRepository; -import org.apache.camel.impl.engine.DefaultInjector; -import org.apache.camel.impl.engine.DefaultLanguageResolver; -import org.apache.camel.impl.engine.DefaultMessageHistoryFactory; -import org.apache.camel.impl.engine.DefaultNodeIdFactory; -import org.apache.camel.impl.engine.DefaultPackageScanClassResolver; -import org.apache.camel.impl.engine.DefaultPackageScanResourceResolver; -import org.apache.camel.impl.engine.DefaultProcessorFactory; -import org.apache.camel.impl.engine.DefaultReactiveExecutor; -import org.apache.camel.impl.engine.DefaultRouteController; -import org.apache.camel.impl.engine.DefaultStreamCachingStrategy; -import org.apache.camel.impl.engine.DefaultTracer; -import org.apache.camel.impl.engine.DefaultTransformerRegistry; -import org.apache.camel.impl.engine.DefaultUnitOfWorkFactory; -import org.apache.camel.impl.engine.DefaultValidatorRegistry; -import org.apache.camel.impl.engine.EndpointKey; -import org.apache.camel.impl.engine.HeadersMapFactoryResolver; -import org.apache.camel.impl.engine.RestRegistryFactoryResolver; +import org.apache.camel.impl.engine.*; import org.apache.camel.impl.health.DefaultHealthCheckRegistry; import org.apache.camel.impl.transformer.TransformerKey; import org.apache.camel.impl.validator.ValidatorKey; -import org.apache.camel.model.DataFormatDefinition; -import org.apache.camel.model.HystrixConfigurationDefinition; -import org.apache.camel.model.Model; -import org.apache.camel.model.ModelCamelContext; -import org.apache.camel.model.ProcessorDefinition; -import org.apache.camel.model.Resilience4jConfigurationDefinition; -import org.apache.camel.model.RouteDefinition; +import org.apache.camel.model.*; import org.apache.camel.model.cloud.ServiceCallConfigurationDefinition; +import org.apache.camel.model.language.ExpressionDefinition; import org.apache.camel.model.rest.RestDefinition; import org.apache.camel.model.transformer.TransformerDefinition; import org.apache.camel.model.validator.ValidatorDefinition; import org.apache.camel.processor.MulticastProcessor; -import org.apache.camel.spi.AsyncProcessorAwaitManager; -import org.apache.camel.spi.BeanIntrospection; -import org.apache.camel.spi.BeanProcessorFactory; -import org.apache.camel.spi.BeanProxyFactory; -import org.apache.camel.spi.CamelBeanPostProcessor; -import org.apache.camel.spi.CamelContextNameStrategy; -import org.apache.camel.spi.ClassResolver; -import org.apache.camel.spi.ComponentResolver; -import org.apache.camel.spi.ConfigurerResolver; -import org.apache.camel.spi.DataFormat; -import org.apache.camel.spi.DataFormatResolver; -import org.apache.camel.spi.EndpointRegistry; -import org.apache.camel.spi.ExecutorServiceManager; -import org.apache.camel.spi.FactoryFinderResolver; -import org.apache.camel.spi.HeadersMapFactory; -import org.apache.camel.spi.InflightRepository; -import org.apache.camel.spi.Injector; -import org.apache.camel.spi.Language; -import org.apache.camel.spi.LanguageResolver; -import org.apache.camel.spi.ManagementNameStrategy; -import org.apache.camel.spi.MessageHistoryFactory; -import org.apache.camel.spi.ModelJAXBContextFactory; -import org.apache.camel.spi.ModelToXMLDumper; -import org.apache.camel.spi.NodeIdFactory; -import org.apache.camel.spi.PackageScanClassResolver; -import org.apache.camel.spi.PackageScanResourceResolver; -import org.apache.camel.spi.ProcessorFactory; -import org.apache.camel.spi.PropertiesComponent; -import org.apache.camel.spi.ReactiveExecutor; -import org.apache.camel.spi.Registry; -import org.apache.camel.spi.RestRegistryFactory; -import org.apache.camel.spi.RouteController; -import org.apache.camel.spi.ShutdownStrategy; -import org.apache.camel.spi.StreamCachingStrategy; -import org.apache.camel.spi.Tracer; -import org.apache.camel.spi.TransformerRegistry; -import org.apache.camel.spi.TypeConverterRegistry; -import org.apache.camel.spi.UnitOfWorkFactory; -import org.apache.camel.spi.UuidGenerator; -import org.apache.camel.spi.ValidatorRegistry; -import org.apache.camel.spi.XMLRoutesDefinitionLoader; +import org.apache.camel.reifier.RouteReifier; +import org.apache.camel.reifier.errorhandler.ErrorHandlerReifier; +import org.apache.camel.reifier.language.ExpressionReifier; +import org.apache.camel.reifier.transformer.TransformerReifier; +import org.apache.camel.reifier.validator.ValidatorReifier; +import org.apache.camel.spi.*; import org.apache.camel.support.CamelContextHelper; import org.apache.camel.util.IOHelper; +import org.apache.camel.util.ObjectHelper; public class FastCamelContext extends AbstractCamelContext implements CatalogCamelContext, ModelCamelContext { private final Model model; @@ -285,17 +213,25 @@ public class FastCamelContext extends AbstractCamelContext implements CatalogCam @Override protected HeadersMapFactory createHeadersMapFactory() { - return new HeadersMapFactoryResolver().resolve(this); + return new BaseServiceResolver<>(HeadersMapFactory.FACTORY, HeadersMapFactory.class) + .resolve(getCamelContextReference()) + .orElseGet(DefaultHeadersMapFactory::new); } @Override protected BeanProxyFactory createBeanProxyFactory() { - return new BeanProxyFactoryResolver().resolve(this); + return new BaseServiceResolver<>(BeanProxyFactory.FACTORY, BeanProxyFactory.class) + .resolve(getCamelContextReference()) + .orElseThrow(() -> new IllegalArgumentException("Cannot find BeanProxyFactory on classpath. " + + "Add camel-bean to classpath.")); } @Override protected BeanProcessorFactory createBeanProcessorFactory() { - return new BeanProcessorFactoryResolver().resolve(this); + return new BaseServiceResolver<>(BeanProcessorFactory.FACTORY, BeanProcessorFactory.class) + .resolve(getCamelContextReference()) + .orElseThrow(() -> new IllegalArgumentException("Cannot find BeanProcessorFactory on classpath. " + + "Add camel-bean to classpath.")); } @Override @@ -357,7 +293,10 @@ public class FastCamelContext extends AbstractCamelContext implements CatalogCam @Override protected RestRegistryFactory createRestRegistryFactory() { - return new RestRegistryFactoryResolver().resolve(this); + return new BaseServiceResolver<>(RestRegistryFactory.FACTORY, RestRegistryFactory.class) + .resolve(getCamelContextReference()) + .orElseThrow(() -> new IllegalArgumentException("Cannot find RestRegistryFactory on classpath. " + + "Add camel-rest to classpath.")); } @Override @@ -388,8 +327,9 @@ public class FastCamelContext extends AbstractCamelContext implements CatalogCam @Override public AsyncProcessor createMulticast(Collection<Processor> processors, ExecutorService executor, boolean shutdownExecutorService) { - return new MulticastProcessor(this, processors, null, true, executor, shutdownExecutorService, - false, false, 0L, null, false, false); + return new MulticastProcessor(getCamelContextReference(), null, processors, null, + true, executor, shutdownExecutorService, false, false, + 0, null, false, false); } @Override @@ -398,6 +338,24 @@ public class FastCamelContext extends AbstractCamelContext implements CatalogCam } @Override + protected HealthCheckRegistry createHealthCheckRegistry() { + return new DefaultHealthCheckRegistry(this); + } + + @Override + protected ComponentNameResolver createComponentNameResolver() { + return new DefaultComponentNameResolver(); + } + + @Override + protected RestBindingJaxbDataFormatFactory createRestBindingJaxbDataFormatFactory() { + return new BaseServiceResolver<>(RestBindingJaxbDataFormatFactory.FACTORY, RestBindingJaxbDataFormatFactory.class) + .resolve(getCamelContextReference()) + .orElseThrow(() -> new IllegalArgumentException("Cannot find RestBindingJaxbDataFormatFactory on classpath. " + + "Add camel-jaxb to classpath.")); + } + + @Override public void setTypeConverterRegistry(TypeConverterRegistry typeConverterRegistry) { super.setTypeConverterRegistry(typeConverterRegistry); @@ -506,13 +464,22 @@ public class FastCamelContext extends AbstractCamelContext implements CatalogCam return null; } + @Override + public Processor createErrorHandler(Route route, Processor processor) throws Exception { + return ErrorHandlerReifier.reifier(route, route.getErrorHandlerFactory()) + .createErrorHandler(processor); + } + // // ModelCamelContext // @Override public void startRouteDefinitions() throws Exception { - model.startRouteDefinitions(); + List<RouteDefinition> routeDefinitions = model.getRouteDefinitions(); + if (routeDefinitions != null) { + startRouteDefinitions(routeDefinitions); + } } @Override @@ -576,7 +543,7 @@ public class FastCamelContext extends AbstractCamelContext implements CatalogCam } @Override - public <T extends ProcessorDefinition> T getProcessorDefinition(String id, Class<T> type) { + public <T extends ProcessorDefinition<T>> T getProcessorDefinition(String id, Class<T> type) { return model.getProcessorDefinition(id, type); } @@ -674,4 +641,78 @@ public class FastCamelContext extends AbstractCamelContext implements CatalogCam public Function<RouteDefinition, Boolean> getRouteFilter() { return model.getRouteFilter(); } + + @Override + public void startRouteDefinitions(List<RouteDefinition> routeDefinitions) throws Exception { + // indicate we are staring the route using this thread so + // we are able to query this if needed + boolean alreadyStartingRoutes = isStartingRoutes(); + if (!alreadyStartingRoutes) { + setStartingRoutes(true); + } + try { + RouteDefinitionHelper.forceAssignIds(getCamelContextReference(), routeDefinitions); + for (RouteDefinition routeDefinition : routeDefinitions) { + // assign ids to the routes and validate that the id's is all unique + String duplicate = RouteDefinitionHelper.validateUniqueIds(routeDefinition, routeDefinitions); + if (duplicate != null) { + throw new FailedToStartRouteException(routeDefinition.getId(), + "duplicate id detected: " + duplicate + ". Please correct ids to be unique among all your routes."); + } + + // must ensure route is prepared, before we can start it + if (!routeDefinition.isPrepared()) { + RouteDefinitionHelper.prepareRoute(getCamelContextReference(), routeDefinition); + routeDefinition.markPrepared(); + } + + Route route = new RouteReifier(getCamelContextReference(), routeDefinition).createRoute(); + RouteService routeService = new RouteService(route); + startRouteService(routeService, true); + } + } finally { + if (!alreadyStartingRoutes) { + setStartingRoutes(false); + } + } + } + + @Override + public Expression createExpression(ExpressionDefinition definition) { + return ExpressionReifier.reifier(this, definition).createExpression(); + } + + @Override + public Predicate createPredicate(ExpressionDefinition definition) { + return ExpressionReifier.reifier(this, definition).createPredicate(); + } + + @Override + public RouteDefinition adviceWith(RouteDefinition definition, AdviceWithRouteBuilder builder) throws Exception { + return RouteReifier.adviceWith(definition, this, builder); + } + + @Override + public void registerValidator(ValidatorDefinition def) { + model.getValidators().add(def); + Validator validator = ValidatorReifier.reifier(this, def).createValidator(); + getValidatorRegistry().put(createValidatorKey(def), validator); + } + + private static ValueHolder<String> createValidatorKey(ValidatorDefinition def) { + return new ValidatorKey(new DataType(def.getType())); + } + + @Override + public void registerTransformer(TransformerDefinition def) { + model.getTransformers().add(def); + Transformer transformer = TransformerReifier.reifier(this, def).createTransformer(); + getTransformerRegistry().put(createTransformerKey(def), transformer); + } + + private static ValueHolder<String> createTransformerKey(TransformerDefinition def) { + return ObjectHelper.isNotEmpty(def.getScheme()) ? new TransformerKey(def.getScheme()) + : new TransformerKey(new DataType(def.getFromType()), new DataType(def.getToType())); + } + } diff --git a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastModel.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastModel.java index 847cfcc..fd299a8 100644 --- a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastModel.java +++ b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastModel.java @@ -16,206 +16,11 @@ */ package org.apache.camel.quarkus.core; -import java.util.ArrayList; -import java.util.List; - import org.apache.camel.CamelContext; -import org.apache.camel.ErrorHandlerFactory; -import org.apache.camel.ExtendedCamelContext; -import org.apache.camel.NamedNode; -import org.apache.camel.Navigate; -import org.apache.camel.Processor; -import org.apache.camel.Route; -import org.apache.camel.Service; -import org.apache.camel.impl.engine.AbstractCamelContext; -import org.apache.camel.impl.engine.BaseRouteService; -import org.apache.camel.impl.engine.DefaultRouteContext; -import org.apache.camel.model.OnCompletionDefinition; -import org.apache.camel.model.OnExceptionDefinition; -import org.apache.camel.model.ProcessorDefinition; -import org.apache.camel.model.RouteDefinition; -import org.apache.camel.model.RouteDefinitionHelper; -import org.apache.camel.processor.channel.DefaultChannel; -import org.apache.camel.reifier.RouteReifier; -import org.apache.camel.support.CamelContextHelper; public class FastModel extends BaseModel { public FastModel(CamelContext camelContext) { super(camelContext); } - @Override - protected void start(RouteDefinition routeDefinition) throws Exception { - // indicate we are staring the route using this thread so - // we are able to query this if needed - CamelContext camelContext = getCamelContext(); - AbstractCamelContext mcc = camelContext.adapt(AbstractCamelContext.class); - mcc.setStartingRoutes(true); - try { - String id = routeDefinition.idOrCreate(camelContext.adapt(ExtendedCamelContext.class).getNodeIdFactory()); - FastRouteContext routeContext = new FastRouteContext(camelContext, routeDefinition, id); - Route route = new RouteReifier(routeContext, routeDefinition).createRoute(); - FastRouteService routeService = createRouteService(route); - mcc.startRouteService(routeService, true); - } finally { - // we are done staring routes - mcc.setStartingRoutes(false); - } - } - - private FastRouteService createRouteService(Route route) { - Integer startupOrder; - String description; - boolean autoStartup; - boolean contextScopedErrorHandler; - List<Service> routeScopedServices; - - RouteDefinition definition = (RouteDefinition) route.getRouteContext().getRoute(); - startupOrder = definition.getStartupOrder(); - description = RouteDefinitionHelper.getRouteMessage(definition.toString()); - - if (!route.getCamelContext().isAutoStartup()) { - autoStartup = false; - } else if (definition.getAutoStartup() == null) { - // should auto startup by default - autoStartup = true; - } else { - Boolean isAutoStartup = CamelContextHelper.parseBoolean(route.getCamelContext(), definition.getAutoStartup()); - autoStartup = isAutoStartup != null && isAutoStartup; - } - - if (!definition.isContextScopedErrorHandler()) { - contextScopedErrorHandler = false; - } else if (definition.getErrorHandlerRef() != null) { - // if error handler ref is configured it may refer to a context scoped, so we need to check this first - // the XML DSL will configure error handlers using refs, so we need this additional test - ErrorHandlerFactory routeScoped = route.getRouteContext().getErrorHandlerFactory(); - ErrorHandlerFactory contextScoped = route.getCamelContext().adapt(ExtendedCamelContext.class) - .getErrorHandlerFactory(); - contextScopedErrorHandler = contextScoped != null && routeScoped == contextScoped; - } else { - contextScopedErrorHandler = true; - } - - List<Service> services = new ArrayList<>(); - for (ProcessorDefinition<?> output : definition.getOutputs()) { - if (output instanceof OnExceptionDefinition) { - OnExceptionDefinition onExceptionDefinition = (OnExceptionDefinition) output; - if (onExceptionDefinition.isRouteScoped()) { - Processor errorHandler = route.getRouteContext().getOnException(onExceptionDefinition.getId()); - if (errorHandler instanceof Service) { - services.add((Service) errorHandler); - } - } - } else if (output instanceof OnCompletionDefinition) { - OnCompletionDefinition onCompletionDefinition = (OnCompletionDefinition) output; - if (onCompletionDefinition.isRouteScoped()) { - Processor onCompletionProcessor = route.getRouteContext().getOnCompletion(onCompletionDefinition.getId()); - if (onCompletionProcessor instanceof Service) { - services.add((Service) onCompletionProcessor); - } - } - } - } - routeScopedServices = services; - - FastRouteService routeService = new FastRouteService(route); - routeService.setStartupOrder(startupOrder); - routeService.setDescription(description); - routeService.setAutoStartup(autoStartup); - routeService.setContextScopedErrorHandler(contextScopedErrorHandler); - routeService.setRouteScopedServices(routeScopedServices); - return routeService; - } - - static class FastRouteContext extends DefaultRouteContext { - - private NamedNode route; - - public FastRouteContext(CamelContext camelContext, NamedNode route, String routeId) { - super(camelContext, null, routeId); - this.route = route; - } - - @Override - public NamedNode getRoute() { - return route; - } - - @SuppressWarnings("unchecked") - private void clearModel(Processor nav) { - if (nav instanceof DefaultChannel) { - DefaultChannel channel = (DefaultChannel) nav; - channel.setDefinition(null); - } - if (nav instanceof Navigate) { - List<Processor> children = ((Navigate<Processor>) nav).next(); - if (children != null) { - for (Processor p : children) { - clearModel(p); - } - } - } - } - - } - - static class FastRouteService extends BaseRouteService { - - private Integer startupOrder; - private String description; - private boolean autoStartup; - private boolean contextScopedErrorHandler; - private List<Service> routeScopedServices; - - public FastRouteService(Route route) { - super(route); - } - - public void setStartupOrder(Integer startupOrder) { - this.startupOrder = startupOrder; - } - - public void setDescription(String description) { - this.description = description; - } - - public void setAutoStartup(boolean autoStartup) { - this.autoStartup = autoStartup; - } - - public void setContextScopedErrorHandler(boolean contextScopedErrorHandler) { - this.contextScopedErrorHandler = contextScopedErrorHandler; - } - - public void setRouteScopedServices(List<Service> routeScopedServices) { - this.routeScopedServices = routeScopedServices; - } - - @Override - public Integer getStartupOrder() { - return startupOrder; - } - - @Override - protected String getRouteDescription() { - return description; - } - - @Override - public boolean isAutoStartup() { - return autoStartup; - } - - @Override - public boolean isContextScopedErrorHandler() { - return contextScopedErrorHandler; - } - - @Override - protected void doGetRouteScopedServices(List<Service> services) { - services.addAll(routeScopedServices); - } - } - } diff --git a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastTypeConverter.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastTypeConverter.java index 178250f..6492338 100644 --- a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastTypeConverter.java +++ b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastTypeConverter.java @@ -29,15 +29,16 @@ public class FastTypeConverter extends DefaultTypeConverter { } @Override - protected void doStart() throws Exception { + protected void doInit() throws Exception { + super.doInit(); + } + + @Override + public void loadCoreAndFastTypeConverters() throws Exception { for (TypeConverterLoader loader : getCamelContext().getRegistry().findByType(TypeConverterLoader.class)) { LOG.debug("TypeConverterLoader: {} loading converters", loader); loader.load(this); } } - @Override - public void loadCoreAndFastTypeConverters() throws Exception { - throw new UnsupportedOperationException(); - } } diff --git a/extensions-core/xml-jaxb/runtime/src/main/java/org/apache/camel/quarkus/component/xml/jaxb/XmlJaxbRecorder.java b/extensions-core/xml-jaxb/runtime/src/main/java/org/apache/camel/quarkus/component/xml/jaxb/XmlJaxbRecorder.java index 3cb9e69..260da00 100644 --- a/extensions-core/xml-jaxb/runtime/src/main/java/org/apache/camel/quarkus/component/xml/jaxb/XmlJaxbRecorder.java +++ b/extensions-core/xml-jaxb/runtime/src/main/java/org/apache/camel/quarkus/component/xml/jaxb/XmlJaxbRecorder.java @@ -21,10 +21,10 @@ import javax.xml.bind.JAXBException; import io.quarkus.runtime.RuntimeValue; import io.quarkus.runtime.annotations.Recorder; import org.apache.camel.RuntimeCamelException; -import org.apache.camel.impl.DefaultModelJAXBContextFactory; import org.apache.camel.spi.ModelJAXBContextFactory; import org.apache.camel.spi.ModelToXMLDumper; import org.apache.camel.spi.XMLRoutesDefinitionLoader; +import org.apache.camel.xml.jaxb.DefaultModelJAXBContextFactory; import org.apache.camel.xml.jaxb.JaxbModelToXMLDumper; import org.apache.camel.xml.jaxb.JaxbXMLRoutesDefinitionLoader; import org.graalvm.nativeimage.ImageInfo; diff --git a/extensions/file/runtime/pom.xml b/extensions-jvm/avro-rpc/deployment/pom.xml similarity index 73% copy from extensions/file/runtime/pom.xml copy to extensions-jvm/avro-rpc/deployment/pom.xml index 197d38a..4310cab 100644 --- a/extensions/file/runtime/pom.xml +++ b/extensions-jvm/avro-rpc/deployment/pom.xml @@ -17,27 +17,25 @@ limitations under the License. --> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.apache.camel.quarkus</groupId> - <artifactId>camel-quarkus-file-parent</artifactId> + <artifactId>camel-quarkus-avro-rpc-parent</artifactId> <version>1.1.0-SNAPSHOT</version> <relativePath>../pom.xml</relativePath> </parent> - <artifactId>camel-quarkus-file</artifactId> - <name>Camel Quarkus :: File :: Runtime</name> - - <properties> - <firstVersion>0.4.0</firstVersion> - </properties> + <artifactId>camel-quarkus-avro-rpc-deployment</artifactId> + <name>Camel Quarkus :: Avro RPC :: Deployment</name> <dependencyManagement> <dependencies> <dependency> <groupId>org.apache.camel.quarkus</groupId> - <artifactId>camel-quarkus-bom</artifactId> + <artifactId>camel-quarkus-bom-deployment</artifactId> <version>${project.version}</version> <type>pom</type> <scope>import</scope> @@ -48,21 +46,17 @@ <dependencies> <dependency> <groupId>org.apache.camel.quarkus</groupId> - <artifactId>camel-quarkus-core</artifactId> + <artifactId>camel-quarkus-core-deployment</artifactId> </dependency> <dependency> - <groupId>org.apache.camel</groupId> - <artifactId>camel-file</artifactId> + <groupId>org.apache.camel.quarkus</groupId> + <artifactId>camel-quarkus-avro-rpc</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> - <groupId>io.quarkus</groupId> - <artifactId>quarkus-bootstrap-maven-plugin</artifactId> - </plugin> - <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> @@ -77,4 +71,5 @@ </plugin> </plugins> </build> + </project> diff --git a/extensions-jvm/avro-rpc/deployment/src/main/java/org/apache/camel/quarkus/component/avro/deployment/AvroProcessor.java b/extensions-jvm/avro-rpc/deployment/src/main/java/org/apache/camel/quarkus/component/avro/deployment/AvroProcessor.java new file mode 100644 index 0000000..ec58a38 --- /dev/null +++ b/extensions-jvm/avro-rpc/deployment/src/main/java/org/apache/camel/quarkus/component/avro/deployment/AvroProcessor.java @@ -0,0 +1,58 @@ +/* + * 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.quarkus.component.avro.deployment; + +import io.quarkus.deployment.annotations.BuildStep; +import io.quarkus.deployment.annotations.ExecutionTime; +import io.quarkus.deployment.annotations.Record; +import io.quarkus.deployment.builditem.FeatureBuildItem; +import io.quarkus.deployment.pkg.steps.NativeBuild; +import org.apache.camel.component.avro.AvroComponent; +import org.apache.camel.quarkus.component.avro.AvroRecorder; +import org.apache.camel.quarkus.core.JvmOnlyRecorder; +import org.apache.camel.quarkus.core.deployment.CamelBeanBuildItem; +import org.jboss.logging.Logger; + +class AvroProcessor { + + private static final Logger LOG = Logger.getLogger(AvroProcessor.class); + private static final String FEATURE = "camel-avro-rpc"; + + @BuildStep + FeatureBuildItem feature() { + return new FeatureBuildItem(FEATURE); + } + + /** + * Remove this once this extension starts supporting the native mode. + */ + @BuildStep(onlyIf = NativeBuild.class) + @Record(value = ExecutionTime.RUNTIME_INIT) + void warnJvmInNative(JvmOnlyRecorder recorder) { + JvmOnlyRecorder.warnJvmInNative(LOG, FEATURE); // warn at build time + recorder.warnJvmInNative(FEATURE); // warn at runtime + } + + @Record(ExecutionTime.STATIC_INIT) + @BuildStep + CamelBeanBuildItem avroComponent(AvroRecorder recorder) { + return new CamelBeanBuildItem( + "avro-rpc", + AvroComponent.class.getName(), + recorder.createAvroComponent()); + } +} diff --git a/extensions-jvm/avro-rpc/integration-test/pom.xml b/extensions-jvm/avro-rpc/integration-test/pom.xml new file mode 100644 index 0000000..b76aa68 --- /dev/null +++ b/extensions-jvm/avro-rpc/integration-test/pom.xml @@ -0,0 +1,82 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + 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. + +--> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.camel.quarkus</groupId> + <artifactId>camel-quarkus-avro-rpc-parent</artifactId> + <version>1.1.0-SNAPSHOT</version> + </parent> + + <artifactId>camel-quarkus-avro-rpc-integration-test</artifactId> + <name>Camel Quarkus :: Avro RPC :: Integration Test</name> + <description>Integration tests for Camel Quarkus Avro extension</description> + + <properties> + <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd --> + <!-- The following rule tells mvnd to build the listed deployment modules before this module. --> + <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not --> + <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. --> + <!-- Please update rule whenever you change the dependencies of this module by running --> + <!-- mvn process-resources -Pformat from the root directory --> + <mvnd.builder.rule>camel-quarkus-avro-rpc-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule> + </properties> + + <dependencies> + <dependency> + <groupId>org.apache.camel.quarkus</groupId> + <artifactId>camel-quarkus-avro-rpc</artifactId> + </dependency> + <dependency> + <groupId>io.quarkus</groupId> + <artifactId>quarkus-resteasy</artifactId> + </dependency> + + <!-- test dependencies --> + <dependency> + <groupId>io.quarkus</groupId> + <artifactId>quarkus-junit5</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>io.rest-assured</groupId> + <artifactId>rest-assured</artifactId> + <scope>test</scope> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>io.quarkus</groupId> + <artifactId>quarkus-maven-plugin</artifactId> + <executions> + <execution> + <goals> + <goal>build</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> +</project> diff --git a/extensions-jvm/avro/integration-test/src/main/java/org/apache/camel/quarkus/component/avro/it/AvroResource.java b/extensions-jvm/avro-rpc/integration-test/src/main/java/org/apache/camel/quarkus/component/avro/it/AvroResource.java similarity index 74% copy from extensions-jvm/avro/integration-test/src/main/java/org/apache/camel/quarkus/component/avro/it/AvroResource.java copy to extensions-jvm/avro-rpc/integration-test/src/main/java/org/apache/camel/quarkus/component/avro/it/AvroResource.java index 0ba3eb3..99f5473 100644 --- a/extensions-jvm/avro/integration-test/src/main/java/org/apache/camel/quarkus/component/avro/it/AvroResource.java +++ b/extensions-jvm/avro-rpc/integration-test/src/main/java/org/apache/camel/quarkus/component/avro/it/AvroResource.java @@ -33,8 +33,7 @@ public class AvroResource { private static final Logger LOG = Logger.getLogger(AvroResource.class); - private static final String COMPONENT_AVRO = "avro"; - private static final String DATAFORMAT_AVRO = "avro"; + private static final String COMPONENT_AVRO = "avro-rpc"; @Inject CamelContext context; @@ -49,16 +48,4 @@ public class AvroResource { LOG.warnf("Could not load [%s] from the Camel context", COMPONENT_AVRO); return Response.status(500, COMPONENT_AVRO + " could not be loaded from the Camel context").build(); } - - @Path("/load/dataformat/avro") - @GET - @Produces(MediaType.TEXT_PLAIN) - public Response loadDataformatAvro() throws Exception { - /* This is an autogenerated test */ - if (context.getComponent(DATAFORMAT_AVRO) != null) { - return Response.ok().build(); - } - LOG.warnf("Could not load [%s] from the Camel context", DATAFORMAT_AVRO); - return Response.status(500, DATAFORMAT_AVRO + " could not be loaded from the Camel context").build(); - } } diff --git a/extensions-jvm/avro/integration-test/src/test/java/org/apache/camel/quarkus/component/avro/it/AvroTest.java b/extensions-jvm/avro-rpc/integration-test/src/test/java/org/apache/camel/quarkus/component/avro/it/AvroTest.java similarity index 85% copy from extensions-jvm/avro/integration-test/src/test/java/org/apache/camel/quarkus/component/avro/it/AvroTest.java copy to extensions-jvm/avro-rpc/integration-test/src/test/java/org/apache/camel/quarkus/component/avro/it/AvroTest.java index 417bee2..346a3c9 100644 --- a/extensions-jvm/avro/integration-test/src/test/java/org/apache/camel/quarkus/component/avro/it/AvroTest.java +++ b/extensions-jvm/avro-rpc/integration-test/src/test/java/org/apache/camel/quarkus/component/avro/it/AvroTest.java @@ -31,12 +31,4 @@ class AvroTest { .statusCode(200); } - @Test - public void loadDataformatAvro() { - /* A simple autogenerated test */ - RestAssured.get("/avro/load/dataformat/avro") - .then() - .statusCode(200); - } - } diff --git a/integration-tests/core-main-xml-jaxb/src/main/resources/routes/my-routes.xml b/extensions-jvm/avro-rpc/pom.xml similarity index 51% copy from integration-tests/core-main-xml-jaxb/src/main/resources/routes/my-routes.xml copy to extensions-jvm/avro-rpc/pom.xml index 482befb..2bf4bd8 100644 --- a/integration-tests/core-main-xml-jaxb/src/main/resources/routes/my-routes.xml +++ b/extensions-jvm/avro-rpc/pom.xml @@ -17,18 +17,24 @@ limitations under the License. --> -<routes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xmlns="http://camel.apache.org/schema/spring" - xsi:schemaLocation=" - http://camel.apache.org/schema/spring - http://camel.apache.org/schema/spring/camel-spring.xsd"> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.camel.quarkus</groupId> + <artifactId>camel-quarkus-build-parent</artifactId> + <version>1.1.0-SNAPSHOT</version> + <relativePath>../../poms/build-parent/pom.xml</relativePath> + </parent> - <route id="my-xml-route"> - <from uri="timer:from-xml?period=3s"/> - <setBody> - <constant>Hello World!!!</constant> - </setBody> - <to uri="log:from-xml"/> - </route> + <artifactId>camel-quarkus-avro-rpc-parent</artifactId> + <name>Camel Quarkus :: Avro RPC</name> + <packaging>pom</packaging> -</routes> \ No newline at end of file + <modules> + <module>deployment</module> + <module>runtime</module> + <module>integration-test</module> + </modules> +</project> diff --git a/extensions/attachments/runtime/pom.xml b/extensions-jvm/avro-rpc/runtime/pom.xml similarity index 82% copy from extensions/attachments/runtime/pom.xml copy to extensions-jvm/avro-rpc/runtime/pom.xml index 8decf13..f7dfabf 100644 --- a/extensions/attachments/runtime/pom.xml +++ b/extensions-jvm/avro-rpc/runtime/pom.xml @@ -17,20 +17,23 @@ limitations under the License. --> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.apache.camel.quarkus</groupId> - <artifactId>camel-quarkus-attachments-parent</artifactId> + <artifactId>camel-quarkus-avro-rpc-parent</artifactId> <version>1.1.0-SNAPSHOT</version> <relativePath>../pom.xml</relativePath> </parent> - <artifactId>camel-quarkus-attachments</artifactId> - <name>Camel Quarkus :: Attachments :: Runtime</name> + <artifactId>camel-quarkus-avro-rpc</artifactId> + <name>Camel Quarkus :: Avro RPC :: Runtime</name> + <description>Working with Apache Avro for data serialization.</description> <properties> - <firstVersion>0.3.0</firstVersion> + <firstVersion>1.0.0-M6</firstVersion> </properties> <dependencyManagement> @@ -52,7 +55,7 @@ </dependency> <dependency> <groupId>org.apache.camel</groupId> - <artifactId>camel-attachments</artifactId> + <artifactId>camel-avro-rpc</artifactId> </dependency> </dependencies> diff --git a/extensions-jvm/avro-rpc/runtime/src/main/java/org/apache/camel/quarkus/component/avro/AvroRecorder.java b/extensions-jvm/avro-rpc/runtime/src/main/java/org/apache/camel/quarkus/component/avro/AvroRecorder.java new file mode 100644 index 0000000..6fbb1b6 --- /dev/null +++ b/extensions-jvm/avro-rpc/runtime/src/main/java/org/apache/camel/quarkus/component/avro/AvroRecorder.java @@ -0,0 +1,14 @@ +package org.apache.camel.quarkus.component.avro; + +import io.quarkus.runtime.RuntimeValue; +import io.quarkus.runtime.annotations.Recorder; +import org.apache.camel.component.avro.AvroComponent; + +@Recorder +public class AvroRecorder { + + public RuntimeValue<?> createAvroComponent() { + return new RuntimeValue<>(new AvroComponent()); + } + +} diff --git a/extensions-jvm/avro-rpc/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions-jvm/avro-rpc/runtime/src/main/resources/META-INF/quarkus-extension.yaml new file mode 100644 index 0000000..def5c36 --- /dev/null +++ b/extensions-jvm/avro-rpc/runtime/src/main/resources/META-INF/quarkus-extension.yaml @@ -0,0 +1,29 @@ +# +# 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. +# + +--- +name: "Avro RPC" +description: "Working with Apache Avro for RPC." +metadata: + unlisted: true + keywords: + - "messaging" + - "transformation" + guide: "https://camel.apache.org/components/latest/avro-rpc-component.html" + categories: + - "integration" + status: "preview" diff --git a/extensions-jvm/avro/integration-test/src/main/java/org/apache/camel/quarkus/component/avro/it/AvroResource.java b/extensions-jvm/avro/integration-test/src/main/java/org/apache/camel/quarkus/component/avro/it/AvroResource.java index 0ba3eb3..ec520f6 100644 --- a/extensions-jvm/avro/integration-test/src/main/java/org/apache/camel/quarkus/component/avro/it/AvroResource.java +++ b/extensions-jvm/avro/integration-test/src/main/java/org/apache/camel/quarkus/component/avro/it/AvroResource.java @@ -33,29 +33,16 @@ public class AvroResource { private static final Logger LOG = Logger.getLogger(AvroResource.class); - private static final String COMPONENT_AVRO = "avro"; private static final String DATAFORMAT_AVRO = "avro"; @Inject CamelContext context; - @Path("/load/component/avro") - @GET - @Produces(MediaType.TEXT_PLAIN) - public Response loadComponentAvro() throws Exception { - /* This is an autogenerated test */ - if (context.getComponent(COMPONENT_AVRO) != null) { - return Response.ok().build(); - } - LOG.warnf("Could not load [%s] from the Camel context", COMPONENT_AVRO); - return Response.status(500, COMPONENT_AVRO + " could not be loaded from the Camel context").build(); - } - @Path("/load/dataformat/avro") @GET @Produces(MediaType.TEXT_PLAIN) public Response loadDataformatAvro() throws Exception { /* This is an autogenerated test */ - if (context.getComponent(DATAFORMAT_AVRO) != null) { + if (context.resolveDataFormat(DATAFORMAT_AVRO) != null) { return Response.ok().build(); } LOG.warnf("Could not load [%s] from the Camel context", DATAFORMAT_AVRO); diff --git a/extensions-jvm/avro/integration-test/src/test/java/org/apache/camel/quarkus/component/avro/it/AvroTest.java b/extensions-jvm/avro/integration-test/src/test/java/org/apache/camel/quarkus/component/avro/it/AvroTest.java index 417bee2..78229a0 100644 --- a/extensions-jvm/avro/integration-test/src/test/java/org/apache/camel/quarkus/component/avro/it/AvroTest.java +++ b/extensions-jvm/avro/integration-test/src/test/java/org/apache/camel/quarkus/component/avro/it/AvroTest.java @@ -24,14 +24,6 @@ import org.junit.jupiter.api.Test; class AvroTest { @Test - public void loadComponentAvro() { - /* A simple autogenerated test */ - RestAssured.get("/avro/load/component/avro") - .then() - .statusCode(200); - } - - @Test public void loadDataformatAvro() { /* A simple autogenerated test */ RestAssured.get("/avro/load/dataformat/avro") diff --git a/extensions-jvm/pom.xml b/extensions-jvm/pom.xml index 640e14d..fddc738 100644 --- a/extensions-jvm/pom.xml +++ b/extensions-jvm/pom.xml @@ -35,6 +35,7 @@ <modules> <!-- extensions a..z; do not remove this comment, it is important when sorting via mvn process-resources -Pformat --> <module>avro</module> + <module>avro-rpc</module> <module>aws2-cw</module> <module>aws2-ddb</module> <module>aws2-ec2</module> diff --git a/extensions-support/debezium/runtime/pom.xml b/extensions-support/debezium/runtime/pom.xml index cde95af..3682b66 100644 --- a/extensions-support/debezium/runtime/pom.xml +++ b/extensions-support/debezium/runtime/pom.xml @@ -64,6 +64,10 @@ </exclusion> </exclusions> </dependency> + <dependency> + <groupId>io.debezium</groupId> + <artifactId>debezium-api</artifactId> + </dependency> </dependencies> <build> diff --git a/extensions/attachments/runtime/pom.xml b/extensions/attachments/runtime/pom.xml index 8decf13..18dad3e 100644 --- a/extensions/attachments/runtime/pom.xml +++ b/extensions/attachments/runtime/pom.xml @@ -28,6 +28,7 @@ <artifactId>camel-quarkus-attachments</artifactId> <name>Camel Quarkus :: Attachments :: Runtime</name> + <description>Support for attachments on Camel messages.</description> <properties> <firstVersion>0.3.0</firstVersion> diff --git a/extensions/braintree/runtime/src/main/java/org/apache/camel/quarkus/component/braintree/graal/BraintreeRecorder.java b/extensions/braintree/runtime/src/main/java/org/apache/camel/quarkus/component/braintree/graal/BraintreeRecorder.java index cb87a09..3647646 100644 --- a/extensions/braintree/runtime/src/main/java/org/apache/camel/quarkus/component/braintree/graal/BraintreeRecorder.java +++ b/extensions/braintree/runtime/src/main/java/org/apache/camel/quarkus/component/braintree/graal/BraintreeRecorder.java @@ -19,6 +19,7 @@ package org.apache.camel.quarkus.component.braintree.graal; import io.quarkus.runtime.RuntimeValue; import io.quarkus.runtime.annotations.Recorder; import org.apache.camel.component.braintree.BraintreeComponent; +import org.apache.camel.component.braintree.BraintreeConfiguration; @Recorder public class BraintreeRecorder { @@ -30,7 +31,9 @@ public class BraintreeRecorder { */ public RuntimeValue<BraintreeComponent> configureBraintreeComponent() { BraintreeComponent component = new BraintreeComponent(); - component.setLogHandlerEnabled(false); + BraintreeConfiguration configuration = new BraintreeConfiguration(); + configuration.setLogHandlerEnabled(false); + component.setConfiguration(configuration); return new RuntimeValue<>(component); } } diff --git a/extensions/file/runtime/pom.xml b/extensions/file/runtime/pom.xml index 197d38a..f5031b8 100644 --- a/extensions/file/runtime/pom.xml +++ b/extensions/file/runtime/pom.xml @@ -28,6 +28,7 @@ <artifactId>camel-quarkus-file</artifactId> <name>Camel Quarkus :: File :: Runtime</name> + <description>The file component provides access to the file system.</description> <properties> <firstVersion>0.4.0</firstVersion> diff --git a/extensions/http/runtime/pom.xml b/extensions/http/runtime/pom.xml index e3f4400..3e66559 100644 --- a/extensions/http/runtime/pom.xml +++ b/extensions/http/runtime/pom.xml @@ -28,6 +28,7 @@ <artifactId>camel-quarkus-http</artifactId> <name>Camel Quarkus :: HTTP :: Runtime</name> + <description>The http component provides support for the HTTP/HTTPS protocols.</description> <properties> <firstVersion>1.0.0-M3</firstVersion> diff --git a/extensions/jackson/runtime/pom.xml b/extensions/jackson/runtime/pom.xml index c9c6f6b..d91b059 100644 --- a/extensions/jackson/runtime/pom.xml +++ b/extensions/jackson/runtime/pom.xml @@ -27,6 +27,7 @@ <artifactId>camel-quarkus-jackson</artifactId> <name>Camel Quarkus :: Jackson :: Runtime</name> + <description>Provides support for the Jackson dataformat.</description> <properties> <firstVersion>0.3.0</firstVersion> diff --git a/extensions/jaxb/runtime/pom.xml b/extensions/jaxb/runtime/pom.xml index 9a74934..158b29f 100644 --- a/extensions/jaxb/runtime/pom.xml +++ b/extensions/jaxb/runtime/pom.xml @@ -28,6 +28,7 @@ <artifactId>camel-quarkus-jaxb</artifactId> <name>Camel Quarkus :: JAXB extension :: Runtime</name> + <description>The jaxb extensions provides JAXB support for Camel.</description> <properties> <firstVersion>1.0.0-M5</firstVersion> diff --git a/extensions/pom.xml b/extensions/pom.xml index 7fe8c7f..13333ac 100644 --- a/extensions/pom.xml +++ b/extensions/pom.xml @@ -98,7 +98,8 @@ <module>mail</module> <module>microprofile-health</module> <module>microprofile-metrics</module> - <module>mongodb</module> +<!-- Disable MongoDB until quarkus uses mongbd 4.x --> +<!-- <module>mongodb</module>--> <module>mustache</module> <module>netty</module> <module>netty-http</module> diff --git a/extensions/qute/component/src/generated/java/org/apache/camel/component/qute/QuteComponentConfigurer.java b/extensions/qute/component/src/generated/java/org/apache/camel/component/qute/QuteComponentConfigurer.java index 37d5e07..0e903b1 100644 --- a/extensions/qute/component/src/generated/java/org/apache/camel/component/qute/QuteComponentConfigurer.java +++ b/extensions/qute/component/src/generated/java/org/apache/camel/component/qute/QuteComponentConfigurer.java @@ -1,29 +1,55 @@ /* Generated by camel build tools - do NOT edit this file! */ package org.apache.camel.component.qute; +import java.util.Map; + import org.apache.camel.CamelContext; import org.apache.camel.spi.GeneratedPropertyConfigurer; +import org.apache.camel.spi.PropertyConfigurerGetter; +import org.apache.camel.util.CaseInsensitiveMap; import org.apache.camel.support.component.PropertyConfigurerSupport; /** * Generated by camel build tools - do NOT edit this file! */ @SuppressWarnings("unchecked") -public class QuteComponentConfigurer extends PropertyConfigurerSupport implements GeneratedPropertyConfigurer { +public class QuteComponentConfigurer extends PropertyConfigurerSupport implements GeneratedPropertyConfigurer, PropertyConfigurerGetter { @Override public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) { QuteComponent target = (QuteComponent) obj; switch (ignoreCase ? name.toLowerCase() : name) { - case "lazystartproducer": - case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true; case "basicpropertybinding": case "basicPropertyBinding": target.setBasicPropertyBinding(property(camelContext, boolean.class, value)); return true; + case "lazystartproducer": + case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true; case "quteengine": case "quteEngine": target.setQuteEngine(property(camelContext, io.quarkus.qute.Engine.class, value)); return true; default: return false; } } + @Override + public Map<String, Object> getAllOptions(Object target) { + Map<String, Object> answer = new CaseInsensitiveMap(); + answer.put("basicPropertyBinding", boolean.class); + answer.put("lazyStartProducer", boolean.class); + answer.put("quteEngine", io.quarkus.qute.Engine.class); + return answer; + } + + @Override + public Object getOptionValue(Object obj, String name, boolean ignoreCase) { + QuteComponent target = (QuteComponent) obj; + switch (ignoreCase ? name.toLowerCase() : name) { + case "basicpropertybinding": + case "basicPropertyBinding": return target.isBasicPropertyBinding(); + case "lazystartproducer": + case "lazyStartProducer": return target.isLazyStartProducer(); + case "quteengine": + case "quteEngine": return target.getQuteEngine(); + default: return null; + } + } } diff --git a/extensions/qute/component/src/generated/java/org/apache/camel/component/qute/QuteEndpointConfigurer.java b/extensions/qute/component/src/generated/java/org/apache/camel/component/qute/QuteEndpointConfigurer.java index 86093a9..059e63e 100644 --- a/extensions/qute/component/src/generated/java/org/apache/camel/component/qute/QuteEndpointConfigurer.java +++ b/extensions/qute/component/src/generated/java/org/apache/camel/component/qute/QuteEndpointConfigurer.java @@ -1,31 +1,61 @@ /* Generated by camel build tools - do NOT edit this file! */ package org.apache.camel.component.qute; +import java.util.Map; + import org.apache.camel.CamelContext; import org.apache.camel.spi.GeneratedPropertyConfigurer; +import org.apache.camel.spi.PropertyConfigurerGetter; +import org.apache.camel.util.CaseInsensitiveMap; import org.apache.camel.support.component.PropertyConfigurerSupport; /** * Generated by camel build tools - do NOT edit this file! */ @SuppressWarnings("unchecked") -public class QuteEndpointConfigurer extends PropertyConfigurerSupport implements GeneratedPropertyConfigurer { +public class QuteEndpointConfigurer extends PropertyConfigurerSupport implements GeneratedPropertyConfigurer, PropertyConfigurerGetter { @Override public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) { QuteEndpoint target = (QuteEndpoint) obj; switch (ignoreCase ? name.toLowerCase() : name) { + case "basicpropertybinding": + case "basicPropertyBinding": target.setBasicPropertyBinding(property(camelContext, boolean.class, value)); return true; case "contentcache": case "contentCache": target.setContentCache(property(camelContext, boolean.class, value)); return true; case "encoding": target.setEncoding(property(camelContext, java.lang.String.class, value)); return true; case "lazystartproducer": case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true; - case "basicpropertybinding": - case "basicPropertyBinding": target.setBasicPropertyBinding(property(camelContext, boolean.class, value)); return true; case "synchronous": target.setSynchronous(property(camelContext, boolean.class, value)); return true; default: return false; } } + @Override + public Map<String, Object> getAllOptions(Object target) { + Map<String, Object> answer = new CaseInsensitiveMap(); + answer.put("basicPropertyBinding", boolean.class); + answer.put("contentCache", boolean.class); + answer.put("encoding", java.lang.String.class); + answer.put("lazyStartProducer", boolean.class); + answer.put("synchronous", boolean.class); + return answer; + } + + @Override + public Object getOptionValue(Object obj, String name, boolean ignoreCase) { + QuteEndpoint target = (QuteEndpoint) obj; + switch (ignoreCase ? name.toLowerCase() : name) { + case "basicpropertybinding": + case "basicPropertyBinding": return target.isBasicPropertyBinding(); + case "contentcache": + case "contentCache": return target.isContentCache(); + case "encoding": return target.getEncoding(); + case "lazystartproducer": + case "lazyStartProducer": return target.isLazyStartProducer(); + case "synchronous": return target.isSynchronous(); + default: return null; + } + } } diff --git a/extensions/qute/component/src/generated/resources/org/apache/camel/component/qute/qute.json b/extensions/qute/component/src/generated/resources/org/apache/camel/component/qute/qute.json index c50c6d4..486d247 100644 --- a/extensions/qute/component/src/generated/resources/org/apache/camel/component/qute/qute.json +++ b/extensions/qute/component/src/generated/resources/org/apache/camel/component/qute/qute.json @@ -1,6 +1,7 @@ { "component": { "kind": "component", + "name": "qute", "scheme": "qute", "extendsScheme": "", "syntax": "qute:resourceUri", diff --git a/extensions/reactive-streams/runtime/src/main/java/org/apache/camel/quarkus/component/reactive/streams/ReactiveStreamsRecorder.java b/extensions/reactive-streams/runtime/src/main/java/org/apache/camel/quarkus/component/reactive/streams/ReactiveStreamsRecorder.java index 2e731d3..9b2b597 100644 --- a/extensions/reactive-streams/runtime/src/main/java/org/apache/camel/quarkus/component/reactive/streams/ReactiveStreamsRecorder.java +++ b/extensions/reactive-streams/runtime/src/main/java/org/apache/camel/quarkus/component/reactive/streams/ReactiveStreamsRecorder.java @@ -25,6 +25,7 @@ import org.apache.camel.component.reactive.streams.ReactiveStreamsComponent; import org.apache.camel.component.reactive.streams.api.CamelReactiveStreamsService; import org.apache.camel.component.reactive.streams.api.CamelReactiveStreamsServiceFactory; import org.apache.camel.component.reactive.streams.engine.DefaultCamelReactiveStreamsServiceFactory; +import org.apache.camel.component.reactive.streams.engine.ReactiveStreamsEngineConfiguration; import org.apache.camel.support.service.ServiceHelper; @Recorder @@ -63,10 +64,17 @@ public class ReactiveStreamsRecorder { @Override public CamelReactiveStreamsService getReactiveStreamsService() { synchronized (this.lock) { + if (getReactiveStreamsEngineConfiguration() == null) { + ReactiveStreamsEngineConfiguration reactiveStreamsEngineConfiguration = new ReactiveStreamsEngineConfiguration(); + reactiveStreamsEngineConfiguration.setThreadPoolMaxSize(getThreadPoolMaxSize()); + reactiveStreamsEngineConfiguration.setThreadPoolMinSize(getThreadPoolMinSize()); + reactiveStreamsEngineConfiguration.setThreadPoolName(getThreadPoolName()); + setReactiveStreamsEngineConfiguration(reactiveStreamsEngineConfiguration); + } if (reactiveStreamService == null) { this.reactiveStreamService = reactiveStreamServiceFactory.newInstance( getCamelContext(), - getInternalEngineConfiguration()); + getReactiveStreamsEngineConfiguration()); try { // Start the service and add it to the Camel context to expose managed attributes diff --git a/extensions/rest/runtime/src/main/java/org/apache/camel/quarkus/component/rest/QuarkusRestComponent.java b/extensions/rest/runtime/src/main/java/org/apache/camel/quarkus/component/rest/QuarkusRestComponent.java index 13925b9..86c3316 100644 --- a/extensions/rest/runtime/src/main/java/org/apache/camel/quarkus/component/rest/QuarkusRestComponent.java +++ b/extensions/rest/runtime/src/main/java/org/apache/camel/quarkus/component/rest/QuarkusRestComponent.java @@ -42,8 +42,7 @@ public class QuarkusRestComponent extends RestComponent { RestConfiguration config = new RestConfiguration(); mergeConfigurations(getCamelContext(), config, findGlobalRestConfiguration()); - mergeConfigurations(getCamelContext(), config, getCamelContext().getRestConfiguration(cname, false)); - mergeConfigurations(getCamelContext(), config, getCamelContext().getRestConfiguration(pname, false)); + mergeConfigurations(getCamelContext(), config, getCamelContext().getRestConfiguration()); // if no explicit host was given, then fallback and use default configured host String h = getAndRemoveOrResolveReferenceParameter(parameters, "host", String.class, getHost()); diff --git a/extensions/rest/runtime/src/main/java/org/apache/camel/quarkus/component/rest/QuarkusRestEndpoint.java b/extensions/rest/runtime/src/main/java/org/apache/camel/quarkus/component/rest/QuarkusRestEndpoint.java index 6c1281c..94f5aa0 100644 --- a/extensions/rest/runtime/src/main/java/org/apache/camel/quarkus/component/rest/QuarkusRestEndpoint.java +++ b/extensions/rest/runtime/src/main/java/org/apache/camel/quarkus/component/rest/QuarkusRestEndpoint.java @@ -29,6 +29,7 @@ import org.apache.camel.component.rest.RestEndpoint; import org.apache.camel.spi.FactoryFinder; import org.apache.camel.spi.RestConfiguration; import org.apache.camel.spi.RestProducerFactory; +import org.apache.camel.support.CamelContextHelper; import org.apache.camel.util.ObjectHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -172,13 +173,7 @@ public class QuarkusRestEndpoint extends RestEndpoint { if (factory != null) { LOG.debug("Using RestProducerFactory: {}", factory); - RestConfiguration config = getCamelContext().getRestConfiguration(pname, false); - if (config == null) { - config = getCamelContext().getRestConfiguration(); - } - if (config == null) { - config = getCamelContext().getRestConfiguration(pname, true); - } + RestConfiguration config = CamelContextHelper.getRestConfiguration(getCamelContext(), pname); Producer producer; if (apiDocFactory != null) { diff --git a/extensions/servlet/runtime/pom.xml b/extensions/servlet/runtime/pom.xml index 1566ec5..d470ac2 100644 --- a/extensions/servlet/runtime/pom.xml +++ b/extensions/servlet/runtime/pom.xml @@ -27,6 +27,7 @@ <artifactId>camel-quarkus-servlet</artifactId> <name>Camel Quarkus :: Servlet :: Runtime</name> + <description>Camel servlet transport support.</description> <properties> <firstVersion>0.2.0</firstVersion> diff --git a/integration-tests/braintree/src/main/resources/application.properties b/integration-tests/braintree/src/main/resources/application.properties index 41539a4..0f2c1c2 100644 --- a/integration-tests/braintree/src/main/resources/application.properties +++ b/integration-tests/braintree/src/main/resources/application.properties @@ -15,7 +15,6 @@ ## limitations under the License. ## --------------------------------------------------------------------------- -camel.component.braintree.configuration = #class:org.apache.camel.component.braintree.BraintreeConfiguration camel.component.braintree.configuration.environment=SANDBOX camel.component.braintree.configuration.merchantId={{env:BRAINTREE_MERCHANT_ID}} camel.component.braintree.configuration.publicKey={{env:BRAINTREE_PUBLIC_KEY}} diff --git a/integration-tests/core-main-xml-io/src/main/resources/routes/my-routes.xml b/integration-tests/core-main-xml-io/src/main/resources/routes/my-routes.xml index 482befb..e491c29 100644 --- a/integration-tests/core-main-xml-io/src/main/resources/routes/my-routes.xml +++ b/integration-tests/core-main-xml-io/src/main/resources/routes/my-routes.xml @@ -24,7 +24,7 @@ http://camel.apache.org/schema/spring/camel-spring.xsd"> <route id="my-xml-route"> - <from uri="timer:from-xml?period=3s"/> + <from uri="timer:from-xml?period=3000"/> <setBody> <constant>Hello World!!!</constant> </setBody> diff --git a/integration-tests/core-main-xml-jaxb/src/main/resources/routes/my-routes.xml b/integration-tests/core-main-xml-jaxb/src/main/resources/routes/my-routes.xml index 482befb..e491c29 100644 --- a/integration-tests/core-main-xml-jaxb/src/main/resources/routes/my-routes.xml +++ b/integration-tests/core-main-xml-jaxb/src/main/resources/routes/my-routes.xml @@ -24,7 +24,7 @@ http://camel.apache.org/schema/spring/camel-spring.xsd"> <route id="my-xml-route"> - <from uri="timer:from-xml?period=3s"/> + <from uri="timer:from-xml?period=3000"/> <setBody> <constant>Hello World!!!</constant> </setBody> diff --git a/integration-tests/file/src/test/java/org/apache/camel/quarkus/component/file/it/FileTest.java b/integration-tests/file/src/test/java/org/apache/camel/quarkus/component/file/it/FileTest.java index ace21af..3546687 100644 --- a/integration-tests/file/src/test/java/org/apache/camel/quarkus/component/file/it/FileTest.java +++ b/integration-tests/file/src/test/java/org/apache/camel/quarkus/component/file/it/FileTest.java @@ -61,7 +61,7 @@ class FileTest { @Test public void fileWatchCreateUpdate() throws IOException, InterruptedException { - final Path dir = Files.createTempDirectory(FileTest.class.getSimpleName()).toAbsolutePath().normalize(); + final Path dir = Files.createTempDirectory(FileTest.class.getSimpleName()).toRealPath(); RestAssured.given() .queryParam("path", dir.toString()) .get("/file-watch/get-events") diff --git a/integration-tests/pom.xml b/integration-tests/pom.xml index b8c962d..156b46b 100644 --- a/integration-tests/pom.xml +++ b/integration-tests/pom.xml @@ -91,7 +91,8 @@ <module>mail</module> <module>messaging</module> <module>microprofile</module> - <module>mongodb</module> +<!-- Disable MongoDB until quarkus uses mongbd 4.x --> +<!-- <module>mongodb</module>--> <module>mustache</module> <module>netty</module> <module>olingo4</module> diff --git a/pom.xml b/pom.xml index 35c243f..828843e 100644 --- a/pom.xml +++ b/pom.xml @@ -45,7 +45,7 @@ <awssdk1.version>1.11.714</awssdk1.version> <awssdk1-swf-libs.version>1.11.22</awssdk1-swf-libs.version> <awssdk2.version>2.10.67</awssdk2.version> - <camel.version>3.1.0</camel.version> + <camel.version>3.2.0</camel.version> <freemarker.version>2.3.30</freemarker.version> <google-http-client.version>1.22.0</google-http-client.version> <guava.version>26.0-jre</guava.version> @@ -65,7 +65,8 @@ <retrofit.version>2.5.0</retrofit.version> <!-- Keep spring.version aligned with the version used by Camel --> <spring.version>5.2.3.RELEASE</spring.version> - <snakeyaml.version>1.25</snakeyaml.version> + <!-- TODO: not aligned with quarkus, needed to get snakeyaml dataformat to work --> + <snakeyaml.version>1.26</snakeyaml.version> <xalan.version>2.7.2</xalan.version> <xerces.version>2.12.0</xerces.version> <xstream.version>1.4.11</xstream.version> @@ -91,6 +92,8 @@ <build-helper-maven-plugin.version>3.0.0</build-helper-maven-plugin.version> <exec-maven-plugin.version>1.6.0</exec-maven-plugin.version> + <google-auth-library-credentials.version>0.19.0</google-auth-library-credentials.version> + <google-auth-library-oauth2-http.version>0.19.0</google-auth-library-oauth2-http.version> <groovy-maven-plugin.version>2.1.1</groovy-maven-plugin.version> <groovy.version>3.0.2</groovy.version> <jandex-maven-plugin.version>1.0.7</jandex-maven-plugin.version> @@ -108,6 +111,8 @@ <!-- NOTE: We pin to this version due to https://github.com/apache/camel-quarkus/issues/723 --> <maven-surefire-plugin.version>2.22.2</maven-surefire-plugin.version> <cq-plugin.version>0.2.0</cq-plugin.version> + <protobuf-java.version>3.11.0</protobuf-java.version> + <proto-google-common-protos.version>1.17.0</proto-google-common-protos.version> <rpkgtests-maven-plugin.version>0.6.0</rpkgtests-maven-plugin.version> <!-- maven-release-plugin --> diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml index b1bc1ee..0e65b85 100644 --- a/poms/bom/pom.xml +++ b/poms/bom/pom.xml @@ -134,6 +134,11 @@ </dependency> <dependency> <groupId>org.apache.camel</groupId> + <artifactId>camel-avro-rpc</artifactId> + <version>${camel.version}</version> + </dependency> + <dependency> + <groupId>org.apache.camel</groupId> <artifactId>camel-aws-ec2</artifactId> <version>${camel.version}</version> </dependency> @@ -324,6 +329,11 @@ </dependency> <dependency> <groupId>org.apache.camel</groupId> + <artifactId>camel-componentdsl</artifactId> + <version>${camel.version}</version> + </dependency> + <dependency> + <groupId>org.apache.camel</groupId> <artifactId>camel-consul</artifactId> <version>${camel.version}</version> </dependency> @@ -349,6 +359,11 @@ </dependency> <dependency> <groupId>org.apache.camel</groupId> + <artifactId>camel-core-languages</artifactId> + <version>${camel.version}</version> + </dependency> + <dependency> + <groupId>org.apache.camel</groupId> <artifactId>camel-couchbase</artifactId> <version>${camel.version}</version> </dependency> @@ -1054,6 +1069,11 @@ </dependency> <dependency> <groupId>org.apache.camel.quarkus</groupId> + <artifactId>camel-quarkus-avro-rpc</artifactId> + <version>${camel-quarkus.version}</version> + </dependency> + <dependency> + <groupId>org.apache.camel.quarkus</groupId> <artifactId>camel-quarkus-aws-commons</artifactId> <version>${camel-quarkus.version}</version> </dependency> @@ -1891,6 +1911,21 @@ <version>${jackson.version}</version> </dependency> <dependency> + <groupId>com.google.api.grpc</groupId> + <artifactId>proto-google-common-protos</artifactId> + <version>${proto-google-common-protos.version}</version> + </dependency> + <dependency> + <groupId>com.google.auth</groupId> + <artifactId>google-auth-library-credentials</artifactId> + <version>${google-auth-library-credentials.version}</version> + </dependency> + <dependency> + <groupId>com.google.auth</groupId> + <artifactId>google-auth-library-oauth2-http</artifactId> + <version>${google-auth-library-oauth2-http.version}</version> + </dependency> + <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>${gson.version}</version> @@ -1912,6 +1947,11 @@ </exclusions> </dependency> <dependency> + <groupId>com.google.protobuf</groupId> + <artifactId>protobuf-java</artifactId> + <version>${protobuf-java.version}</version> + </dependency> + <dependency> <groupId>com.orbitz.consul</groupId> <artifactId>consul-client</artifactId> <version>${consul-client.version}</version> @@ -1943,6 +1983,16 @@ <version>${xstream.version}</version> </dependency> <dependency> + <groupId>io.debezium</groupId> + <artifactId>debezium-api</artifactId> + <version>1.1.0.Final</version> + </dependency> + <dependency> + <groupId>io.fabric8</groupId> + <artifactId>kubernetes-client</artifactId> + <version>4.9.0</version> + </dependency> + <dependency> <groupId>javax.xml.ws</groupId> <artifactId>jaxws-api</artifactId> <version>${java.xml.ws.version}</version> @@ -1964,6 +2014,11 @@ <version>${ahc.version}</version> </dependency> <dependency> + <groupId>org.codehaus.mojo</groupId> + <artifactId>animal-sniffer-annotations</artifactId> + <version>1.18</version> + </dependency> + <dependency> <groupId>org.codehaus.woodstox</groupId> <artifactId>stax2-api</artifactId> <version>${stax2.version}</version> @@ -2020,6 +2075,16 @@ <version>${snakeyaml.version}</version> </dependency> <dependency> + <groupId>org.threeten</groupId> + <artifactId>threetenbp</artifactId> + <version>1.4.0</version> + </dependency> + <dependency> + <groupId>software.amazon.awssdk</groupId> + <artifactId>annotations</artifactId> + <version>${awssdk2.version}</version><!-- override the version set in the quarkus BOM --> + </dependency> + <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>apache-client</artifactId> <version>${awssdk2.version}</version><!-- override the version set in the quarkus BOM --> @@ -2031,6 +2096,11 @@ </dependency> <dependency> <groupId>software.amazon.awssdk</groupId> + <artifactId>http-client-spi</artifactId> + <version>${awssdk2.version}</version><!-- override the version set in the quarkus BOM --> + </dependency> + <dependency> + <groupId>software.amazon.awssdk</groupId> <artifactId>netty-nio-client</artifactId> <version>${awssdk2.version}</version><!-- override the version set in the quarkus BOM --> </dependency> @@ -2040,6 +2110,11 @@ <version>${awssdk2.version}</version><!-- override the version set in the quarkus BOM --> </dependency> <dependency> + <groupId>software.amazon.awssdk</groupId> + <artifactId>utils</artifactId> + <version>${awssdk2.version}</version><!-- override the version set in the quarkus BOM --> + </dependency> + <dependency> <groupId>xalan</groupId> <artifactId>xalan</artifactId> <version>${xalan.version}</version> diff --git a/tooling/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/CqCatalog.java b/tooling/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/CqCatalog.java index 3fdbf73..c4d4099 100644 --- a/tooling/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/CqCatalog.java +++ b/tooling/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/CqCatalog.java @@ -20,9 +20,7 @@ import java.io.IOException; import java.io.InputStream; import java.nio.file.Files; import java.nio.file.Path; -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; +import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -56,7 +54,7 @@ public class CqCatalog { this.catalog = new DefaultCamelCatalog(true); } - public String toCamelArtifactIdBase(String cqArtifactIdBase) { + public String toCamelComponentArtifactIdBase(String cqArtifactIdBase) { if ("core".equals(cqArtifactIdBase)) { return "base"; } else if ("reactive-executor".equals(cqArtifactIdBase)) { @@ -66,12 +64,21 @@ public class CqCatalog { } } + public List<String> toCamelArtifactIdBase(String cqArtifactIdBase) { + if ("core".equals(cqArtifactIdBase)) { + return Arrays.asList("camel-base", "camel-core-languages"); + } else if ("reactive-executor".equals(cqArtifactIdBase)) { + return Collections.singletonList("camel-reactive-executor-vertx"); + } else { + return Collections.singletonList("camel-" + cqArtifactIdBase); + } + } + public List<WrappedModel> filterModels(String artifactIdBase) { - artifactIdBase = toCamelArtifactIdBase(artifactIdBase); - final String camelArtifactId = "camel-" + artifactIdBase; + List<String> camelArtifactIds = toCamelArtifactIdBase(artifactIdBase); return Stream.of(Kind.values()) .flatMap(kind -> kind.all(this)) - .filter(wrappedModel -> wrappedModel.getArtifactId().equals(camelArtifactId)) + .filter(wrappedModel -> camelArtifactIds.contains(wrappedModel.getArtifactId())) .collect(Collectors.toList()); } diff --git a/tooling/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/PrepareCatalogQuarkusMojo.java b/tooling/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/PrepareCatalogQuarkusMojo.java index 3fe41dd..00a8782 100644 --- a/tooling/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/PrepareCatalogQuarkusMojo.java +++ b/tooling/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/PrepareCatalogQuarkusMojo.java @@ -217,7 +217,7 @@ public class PrepareCatalogQuarkusMojo extends AbstractMojo { ("compile".equals(dep.getScope()) || dep.getScope() == null)) .findFirst(); if (artifact.isPresent()) { - camelComponentArtifactId = catalog.toCamelArtifactIdBase(artifact.get().getArtifactId()); + camelComponentArtifactId = catalog.toCamelComponentArtifactIdBase(artifact.get().getArtifactId()); } } final Properties props = runtimePom.getProperties() != null ? runtimePom.getProperties() : new Properties();