This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch gradle in repository https://gitbox.apache.org/repos/asf/camel.git
commit c3abdaf4782132e9fefe11ea144a8d924e7c36ef Author: Claus Ibsen <[email protected]> AuthorDate: Sat Feb 28 13:48:50 2026 +0100 CAMEL-23102: camel-jbang - Automatic keep up to date list of Camel FactoryFinder as known dependencies --- .../apache/camel/component/avro/AvroListener.java | 10 +++------- .../org/apache/camel/component/cron/CronHelper.java | 9 ++++----- .../language/csimple/joor/JoorCSimpleCompiler.java | 3 +-- .../camel/component/knative/KnativeComponent.java | 20 +++++++------------- .../apache/camel/openapi/RestOpenApiSupport.java | 3 +-- .../platform/http/PlatformHttpComponent.java | 13 ++++--------- .../reactive/streams/ReactiveStreamsHelper.java | 21 ++++----------------- .../camel/component/rest/RestApiEndpoint.java | 10 +++++----- .../apache/camel/component/rest/RestEndpoint.java | 19 +++++-------------- .../org/apache/camel/spring/SpringCamelContext.java | 3 +-- 10 files changed, 35 insertions(+), 76 deletions(-) diff --git a/components/camel-avro-rpc/camel-avro-rpc-component/src/main/java/org/apache/camel/component/avro/AvroListener.java b/components/camel-avro-rpc/camel-avro-rpc-component/src/main/java/org/apache/camel/component/avro/AvroListener.java index 8e5dacbbec51..9c15ec507650 100644 --- a/components/camel-avro-rpc/camel-avro-rpc-component/src/main/java/org/apache/camel/component/avro/AvroListener.java +++ b/components/camel-avro-rpc/camel-avro-rpc-component/src/main/java/org/apache/camel/component/avro/AvroListener.java @@ -30,8 +30,8 @@ import org.apache.camel.CamelContext; import org.apache.camel.Exchange; import org.apache.camel.ExchangePattern; import org.apache.camel.component.avro.spi.AvroRpcHttpServerFactory; -import org.apache.camel.spi.FactoryFinder; import org.apache.camel.support.ExchangeHelper; +import org.apache.camel.support.ResolverHelper; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -82,12 +82,8 @@ public class AvroListener { private static Server createServer(AvroConfiguration configuration, CamelContext camelContext, SpecificResponder responder) throws Exception { if (AVRO_HTTP_TRANSPORT.equalsIgnoreCase(configuration.getTransport().name())) { - AvroRpcHttpServerFactory factory = camelContext - .getCamelContextExtension() - .getFactoryFinder(FactoryFinder.DEFAULT_PATH) - .newInstance("avro-rpc-http-server-factory", AvroRpcHttpServerFactory.class) - .orElseThrow(() -> new IllegalStateException( - "AvroRpcHttpServerFactory is neither set on this endpoint neither found in Camel Registry or FactoryFinder.")); + AvroRpcHttpServerFactory factory = ResolverHelper.resolveMandatoryService(camelContext, + "avro-rpc-http-server-factory", AvroRpcHttpServerFactory.class, "camel-avro-rpc"); return factory.create(responder, configuration.getPort()); } else if (AVRO_NETTY_TRANSPORT.equalsIgnoreCase(configuration.getTransport().name())) { return new NettyServer(responder, new InetSocketAddress(configuration.getHost(), configuration.getPort())); diff --git a/components/camel-cron/src/main/java/org/apache/camel/component/cron/CronHelper.java b/components/camel-cron/src/main/java/org/apache/camel/component/cron/CronHelper.java index 55942a21795d..fbcf39ca0db5 100644 --- a/components/camel-cron/src/main/java/org/apache/camel/component/cron/CronHelper.java +++ b/components/camel-cron/src/main/java/org/apache/camel/component/cron/CronHelper.java @@ -18,13 +18,13 @@ package org.apache.camel.component.cron; import org.apache.camel.CamelContext; import org.apache.camel.component.cron.api.CamelCronService; -import org.apache.camel.spi.FactoryFinder; import org.apache.camel.support.CamelContextHelper; +import org.apache.camel.support.ResolverHelper; import org.apache.camel.util.ObjectHelper; public final class CronHelper { - private static final String RESOURCE_PATH = "META-INF/services/org/apache/camel/cron/"; - private static final String FACTORY_KEY = "cron-service"; + + private static final String FACTORY_KEY = "cron/cron-service"; private CronHelper() { } @@ -45,8 +45,7 @@ public final class CronHelper { } // Fallback to factory finder - FactoryFinder finder = context.getCamelContextExtension().getFactoryFinder(RESOURCE_PATH); - return finder.newInstance(FACTORY_KEY, CamelCronService.class).orElse(null); + return ResolverHelper.resolveBootstrapService(context, FACTORY_KEY, CamelCronService.class).orElse(null); } } diff --git a/components/camel-csimple-joor/src/main/java/org/apache/camel/language/csimple/joor/JoorCSimpleCompiler.java b/components/camel-csimple-joor/src/main/java/org/apache/camel/language/csimple/joor/JoorCSimpleCompiler.java index 1ba78af5813e..1fa390fd4e7d 100644 --- a/components/camel-csimple-joor/src/main/java/org/apache/camel/language/csimple/joor/JoorCSimpleCompiler.java +++ b/components/camel-csimple-joor/src/main/java/org/apache/camel/language/csimple/joor/JoorCSimpleCompiler.java @@ -168,9 +168,8 @@ public class JoorCSimpleCompiler extends ServiceSupport implements CSimpleCompil protected void doStart() throws Exception { // check if camel-attachment is on classpath which then includes custom csimple functions if (camelContext != null) { - Optional<SimpleLanguageFunctionFactory> factory = ResolverHelper.resolveService( + Optional<SimpleLanguageFunctionFactory> factory = ResolverHelper.resolveBootstrapService( camelContext, - camelContext.getCamelContextExtension().getBootstrapFactoryFinder(), SimpleLanguageFunctionFactory.FACTORY + "/camel-attachments", SimpleLanguageFunctionFactory.class); if (factory.isPresent()) { diff --git a/components/camel-knative/camel-knative-component/src/main/java/org/apache/camel/component/knative/KnativeComponent.java b/components/camel-knative/camel-knative-component/src/main/java/org/apache/camel/component/knative/KnativeComponent.java index 7a96ef3e3de9..1eee1f19497a 100644 --- a/components/camel-knative/camel-knative-component/src/main/java/org/apache/camel/component/knative/KnativeComponent.java +++ b/components/camel-knative/camel-knative-component/src/main/java/org/apache/camel/component/knative/KnativeComponent.java @@ -30,6 +30,7 @@ import org.apache.camel.spi.Metadata; import org.apache.camel.spi.annotations.Component; import org.apache.camel.support.CamelContextHelper; import org.apache.camel.support.HealthCheckComponent; +import org.apache.camel.support.ResolverHelper; import org.apache.camel.support.service.ServiceHelper; import org.apache.camel.util.ObjectHelper; import org.apache.camel.util.PropertiesHelper; @@ -290,12 +291,9 @@ public class KnativeComponent extends HealthCheckComponent { if (producerFactory == null) { this.producerFactory = CamelContextHelper.lookup(getCamelContext(), protocol.name(), KnativeProducerFactory.class); if (this.producerFactory == null) { - this.producerFactory = getCamelContext() - .getCamelContextExtension() - .getBootstrapFactoryFinder(Knative.KNATIVE_TRANSPORT_RESOURCE_PATH) - .newInstance(protocol.name() + "-producer", KnativeProducerFactory.class) - .orElseThrow(() -> new IllegalArgumentException( - "Cannot create KnativeProducerFactory. Make sure camel-knative-http JAR is on classpath.")); + String key = "knative/transport/" + protocol.name() + "-producer"; + this.producerFactory = ResolverHelper.resolveMandatoryBootstrapService(getCamelContext(), key, + KnativeProducerFactory.class, "camel-knative-http"); if (configuration.getTransportOptions() != null) { setProperties(producerFactory, new HashMap<>(configuration.getTransportOptions())); } @@ -303,7 +301,6 @@ public class KnativeComponent extends HealthCheckComponent { } LOGGER.debug("Using Knative producer factory: {} for protocol: {}", producerFactory, protocol.name()); } - return producerFactory; } @@ -311,12 +308,9 @@ public class KnativeComponent extends HealthCheckComponent { if (consumerFactory == null) { this.consumerFactory = CamelContextHelper.lookup(getCamelContext(), protocol.name(), KnativeConsumerFactory.class); if (this.consumerFactory == null) { - this.consumerFactory = getCamelContext() - .getCamelContextExtension() - .getBootstrapFactoryFinder(Knative.KNATIVE_TRANSPORT_RESOURCE_PATH) - .newInstance(protocol.name() + "-consumer", KnativeConsumerFactory.class) - .orElseThrow(() -> new IllegalArgumentException( - "Cannot create KnativeConsumerFactory. Make sure camel-knative-http JAR is on classpath.")); + String key = "knative/transport/" + protocol.name() + "-consumer"; + this.consumerFactory = ResolverHelper.resolveMandatoryBootstrapService(getCamelContext(), key, + KnativeConsumerFactory.class, "camel-knative-http"); if (configuration.getTransportOptions() != null) { setProperties(consumerFactory, new HashMap<>(configuration.getTransportOptions())); } diff --git a/components/camel-openapi-java/src/main/java/org/apache/camel/openapi/RestOpenApiSupport.java b/components/camel-openapi-java/src/main/java/org/apache/camel/openapi/RestOpenApiSupport.java index d4b0de1c21d5..6bfa861e7864 100644 --- a/components/camel-openapi-java/src/main/java/org/apache/camel/openapi/RestOpenApiSupport.java +++ b/components/camel-openapi-java/src/main/java/org/apache/camel/openapi/RestOpenApiSupport.java @@ -300,9 +300,8 @@ public class RestOpenApiSupport { } protected RestDefinitionsResolver createJmxRestDefinitionsResolver(CamelContext camelContext) { - return ResolverHelper.resolveMandatoryService( + return ResolverHelper.resolveMandatoryBootstrapService( camelContext, - camelContext.getCamelContextExtension().getBootstrapFactoryFinder(), JMX_REST_DEFINITION_RESOLVER, RestDefinitionsResolver.class, "camel-openapi-java"); diff --git a/components/camel-platform-http/src/main/java/org/apache/camel/component/platform/http/PlatformHttpComponent.java b/components/camel-platform-http/src/main/java/org/apache/camel/component/platform/http/PlatformHttpComponent.java index c272ac263a08..2ac0a76b8afb 100644 --- a/components/camel-platform-http/src/main/java/org/apache/camel/component/platform/http/PlatformHttpComponent.java +++ b/components/camel-platform-http/src/main/java/org/apache/camel/component/platform/http/PlatformHttpComponent.java @@ -29,7 +29,6 @@ import org.apache.camel.Consumer; import org.apache.camel.Endpoint; import org.apache.camel.Processor; import org.apache.camel.component.platform.http.spi.PlatformHttpEngine; -import org.apache.camel.spi.FactoryFinder; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.RestApiConsumerFactory; import org.apache.camel.spi.RestConfiguration; @@ -38,6 +37,7 @@ import org.apache.camel.spi.RestOpenApiConsumerFactory; import org.apache.camel.spi.annotations.Component; import org.apache.camel.support.CamelContextHelper; import org.apache.camel.support.HeaderFilterStrategyComponent; +import org.apache.camel.support.ResolverHelper; import org.apache.camel.support.RestComponentHelper; import org.apache.camel.support.service.ServiceHelper; import org.apache.camel.util.FileUtil; @@ -338,14 +338,9 @@ public class PlatformHttpComponent extends HeaderFilterStrategyComponent if (engine == null) { LOG.debug("Lookup platform http engine from factory"); - - engine = getCamelContext() - .getCamelContextExtension() - .getFactoryFinder(FactoryFinder.DEFAULT_PATH) - .newInstance(PlatformHttpConstants.PLATFORM_HTTP_ENGINE_FACTORY, PlatformHttpEngine.class) - .orElseThrow(() -> new IllegalStateException( - "PlatformHttpEngine is neither set on this endpoint neither found in Camel Registry or FactoryFinder.")); - + engine = ResolverHelper.resolveMandatoryService(getCamelContext(), + PlatformHttpConstants.PLATFORM_HTTP_ENGINE_FACTORY, PlatformHttpEngine.class, + "camel-platform-http-vertx"); localEngine = true; } } diff --git a/components/camel-reactive-streams/src/main/java/org/apache/camel/component/reactive/streams/ReactiveStreamsHelper.java b/components/camel-reactive-streams/src/main/java/org/apache/camel/component/reactive/streams/ReactiveStreamsHelper.java index e15379bbf783..b074fc24b968 100644 --- a/components/camel-reactive-streams/src/main/java/org/apache/camel/component/reactive/streams/ReactiveStreamsHelper.java +++ b/components/camel-reactive-streams/src/main/java/org/apache/camel/component/reactive/streams/ReactiveStreamsHelper.java @@ -23,12 +23,13 @@ import org.apache.camel.component.reactive.streams.api.CamelReactiveStreamsServi import org.apache.camel.component.reactive.streams.api.CamelReactiveStreamsServiceFactory; import org.apache.camel.component.reactive.streams.api.DispatchCallback; import org.apache.camel.component.reactive.streams.engine.ReactiveStreamsEngineConfiguration; -import org.apache.camel.spi.FactoryFinder; import org.apache.camel.support.CamelContextHelper; import org.apache.camel.support.DefaultExchange; +import org.apache.camel.support.ResolverHelper; import org.apache.camel.util.ObjectHelper; public final class ReactiveStreamsHelper { + private ReactiveStreamsHelper() { } @@ -114,21 +115,7 @@ public final class ReactiveStreamsHelper { } public static CamelReactiveStreamsServiceFactory resolveServiceFactory(CamelContext context, String serviceType) { - try { - FactoryFinder finder - = context.getCamelContextExtension().getFactoryFinder(ReactiveStreamsConstants.SERVICE_PATH); - Class<?> serviceClass = finder.findClass(serviceType).orElse(null); - if (serviceClass != null) { - return (CamelReactiveStreamsServiceFactory) context.getInjector().newInstance(serviceClass); - } else { - throw new IllegalStateException( - "Class referenced in '" + ReactiveStreamsConstants.SERVICE_PATH + serviceType + "' not found"); - } - } catch (Exception e) { - throw new IllegalStateException( - "Unable to create the reactive stream service defined in '" + ReactiveStreamsConstants.SERVICE_PATH - + serviceType + "'", - e); - } + return ResolverHelper.resolveMandatoryService(context, "reactive-streams/" + serviceType, + CamelReactiveStreamsServiceFactory.class, null); } } diff --git a/components/camel-rest/src/main/java/org/apache/camel/component/rest/RestApiEndpoint.java b/components/camel-rest/src/main/java/org/apache/camel/component/rest/RestApiEndpoint.java index 61148135361c..4eeef1a0d522 100644 --- a/components/camel-rest/src/main/java/org/apache/camel/component/rest/RestApiEndpoint.java +++ b/components/camel-rest/src/main/java/org/apache/camel/component/rest/RestApiEndpoint.java @@ -26,7 +26,6 @@ import org.apache.camel.ExchangePattern; import org.apache.camel.NoSuchBeanException; import org.apache.camel.Processor; import org.apache.camel.Producer; -import org.apache.camel.spi.FactoryFinder; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.RestApiConsumerFactory; import org.apache.camel.spi.RestApiProcessorFactory; @@ -36,6 +35,7 @@ import org.apache.camel.spi.UriParam; import org.apache.camel.spi.UriPath; import org.apache.camel.support.CamelContextHelper; import org.apache.camel.support.DefaultEndpoint; +import org.apache.camel.support.ResolverHelper; import org.apache.camel.util.HostUtils; import org.apache.camel.util.ObjectHelper; import org.slf4j.Logger; @@ -146,8 +146,8 @@ public class RestApiEndpoint extends DefaultEndpoint { if (name == null) { name = DEFAULT_API_COMPONENT_NAME; //use openapi first } - FactoryFinder finder = getCamelContext().getCamelContextExtension().getFactoryFinder(RESOURCE_PATH); - factory = finder.newInstance(name, RestApiProcessorFactory.class).orElse(null); + factory = ResolverHelper.resolveService(getCamelContext(), "restapi/" + name, RestApiProcessorFactory.class) + .orElse(null); } if (factory == null) { @@ -155,8 +155,8 @@ public class RestApiEndpoint extends DefaultEndpoint { if (name == null) { name = "swagger"; //use swagger as fallback } - FactoryFinder finder = getCamelContext().getCamelContextExtension().getFactoryFinder(RESOURCE_PATH); - factory = finder.newInstance(name, RestApiProcessorFactory.class).orElse(null); + factory = ResolverHelper.resolveService(getCamelContext(), "restapi/" + name, RestApiProcessorFactory.class) + .orElse(null); } if (factory != null) { diff --git a/components/camel-rest/src/main/java/org/apache/camel/component/rest/RestEndpoint.java b/components/camel-rest/src/main/java/org/apache/camel/component/rest/RestEndpoint.java index 5a686150b655..0a241412c69a 100644 --- a/components/camel-rest/src/main/java/org/apache/camel/component/rest/RestEndpoint.java +++ b/components/camel-rest/src/main/java/org/apache/camel/component/rest/RestEndpoint.java @@ -23,11 +23,9 @@ import org.apache.camel.Category; import org.apache.camel.Component; import org.apache.camel.Consumer; import org.apache.camel.ExchangePattern; -import org.apache.camel.NoFactoryAvailableException; import org.apache.camel.NoSuchBeanException; import org.apache.camel.Processor; import org.apache.camel.Producer; -import org.apache.camel.spi.FactoryFinder; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.RestConfiguration; import org.apache.camel.spi.RestConsumerFactory; @@ -39,6 +37,7 @@ import org.apache.camel.spi.UriPath; import org.apache.camel.support.CamelContextHelper; import org.apache.camel.support.DefaultEndpoint; import org.apache.camel.support.PluginHelper; +import org.apache.camel.support.ResolverHelper; import org.apache.camel.support.component.PropertyConfigurerSupport; import org.apache.camel.util.HostUtils; import org.apache.camel.util.MimeTypeHelper; @@ -351,18 +350,10 @@ public class RestEndpoint extends DefaultEndpoint { return null; } LOG.debug("Discovering camel-openapi-java on classpath for using api-doc: {}", apiDoc); - try { - FactoryFinder finder = getCamelContext().getCamelContextExtension().getFactoryFinder(RESOURCE_PATH); - RestProducerFactory apiDocFactory = finder.newInstance(DEFAULT_API_COMPONENT_NAME, RestProducerFactory.class) - .orElse(null); - if (apiDocFactory == null) { - throw new NoFactoryAvailableException("Cannot find camel-openapi-java on classpath"); - } - parameters.put("apiDoc", apiDoc); - return apiDocFactory; - } catch (NoFactoryAvailableException e) { - throw new IllegalStateException("Cannot find camel-openapi-java on classpath to use with api-doc: " + apiDoc); - } + RestProducerFactory apiDocFactory = ResolverHelper.resolveMandatoryService(getCamelContext(), + "rest/" + DEFAULT_API_COMPONENT_NAME, RestProducerFactory.class, "camel-openapi-java"); + parameters.put("apiDoc", apiDoc); + return apiDocFactory; } private record ProducerFactoryResult(RestProducerFactory factory, String name) { diff --git a/components/camel-spring-parent/camel-spring/src/main/java/org/apache/camel/spring/SpringCamelContext.java b/components/camel-spring-parent/camel-spring/src/main/java/org/apache/camel/spring/SpringCamelContext.java index ee490b001bb5..9c7726e45254 100644 --- a/components/camel-spring-parent/camel-spring/src/main/java/org/apache/camel/spring/SpringCamelContext.java +++ b/components/camel-spring-parent/camel-spring/src/main/java/org/apache/camel/spring/SpringCamelContext.java @@ -256,9 +256,8 @@ public class SpringCamelContext extends DefaultCamelContext @Override protected ModelJAXBContextFactory createModelJAXBContextFactory() { - return ResolverHelper.resolveMandatoryService( + return ResolverHelper.resolveMandatoryBootstrapService( getCamelContextReference(), - getCamelContextExtension().getBootstrapFactoryFinder(), ModelJAXBContextFactory.FACTORY + "-spring", ModelJAXBContextFactory.class, "camel-spring-xml");
