This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch worktree-more-tui-3 in repository https://gitbox.apache.org/repos/asf/camel.git
commit 5251bad643fb7cef374b613e651ef2b99668d445 Author: Claus Ibsen <[email protected]> AuthorDate: Tue May 19 21:25:15 2026 +0200 CAMEL-23553: Fix RestRegistry lazy plugin resolution RestRegistry is registered as a lazy plugin but isContextPluginInUse() always returns false for lazy plugins, so VertxPlatformHttpConsumer and MultiRestConsumer never resolved the registry even when camel-rest was on the classpath. Make the lazy resolution return null gracefully when camel-rest is absent instead of throwing, so callers can use PluginHelper.getRestRegistry() directly with a null-check. Co-Authored-By: Claude Opus 4.6 <[email protected]> --- .../component/platform/http/vertx/VertxPlatformHttpConsumer.java | 4 +--- .../java/org/apache/camel/component/webhook/MultiRestConsumer.java | 5 +++-- .../java/org/apache/camel/impl/engine/AbstractCamelContext.java | 3 +++ .../org/apache/camel/impl/engine/DefaultCamelContextExtension.java | 5 ++++- .../org/apache/camel/impl/engine/DefaultContextPluginManager.java | 6 +++++- .../main/java/org/apache/camel/impl/engine/SimpleCamelContext.java | 6 +++--- 6 files changed, 19 insertions(+), 10 deletions(-) diff --git a/components/camel-platform-http-vertx/src/main/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpConsumer.java b/components/camel-platform-http-vertx/src/main/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpConsumer.java index d5a248039cd4..44c01643e995 100644 --- a/components/camel-platform-http-vertx/src/main/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpConsumer.java +++ b/components/camel-platform-http-vertx/src/main/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpConsumer.java @@ -116,9 +116,7 @@ public class VertxPlatformHttpConsumer extends DefaultConsumer super.doInit(); // camel-rest is optional - if (getEndpoint().getCamelContext().getCamelContextExtension().isContextPluginInUse(RestRegistry.class)) { - restRegistry = PluginHelper.getRestRegistry(getEndpoint().getCamelContext()); - } + restRegistry = PluginHelper.getRestRegistry(getEndpoint().getCamelContext()); methods = Method.parseList(getEndpoint().getHttpMethodRestrict()); path = configureEndpointPath(getEndpoint()); // in vertx-web we should replace path parameters from {xxx} to :xxx syntax diff --git a/components/camel-webhook/src/main/java/org/apache/camel/component/webhook/MultiRestConsumer.java b/components/camel-webhook/src/main/java/org/apache/camel/component/webhook/MultiRestConsumer.java index aed461854e55..93fe0c47721a 100644 --- a/components/camel-webhook/src/main/java/org/apache/camel/component/webhook/MultiRestConsumer.java +++ b/components/camel-webhook/src/main/java/org/apache/camel/component/webhook/MultiRestConsumer.java @@ -52,8 +52,9 @@ public class MultiRestConsumer extends DefaultConsumer { null, null, null, config, Collections.emptyMap()); configurer.configure(consumer); - if (context.getCamelContextExtension().isContextPluginInUse(RestRegistry.class)) { - PluginHelper.getRestRegistry(context).addRestService(consumer, false, url, url, path, null, method, + RestRegistry rr = PluginHelper.getRestRegistry(context); + if (rr != null) { + rr.addRestService(consumer, false, url, url, path, null, method, null, null, null, null, null, null, null, null); } diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java index a66f12105837..9df88ddebe8e 100644 --- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java +++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java @@ -4348,6 +4348,9 @@ public abstract class AbstractCamelContext extends BaseService protected RestRegistry createRestRegistry() { RestRegistryFactory factory = camelContextExtension.getRestRegistryFactory(); + if (factory == null) { + return null; + } return factory.createRegistry(); } diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java index 9a78f6580a1c..1ad1b4f4cba2 100644 --- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java +++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java @@ -776,7 +776,10 @@ class DefaultCamelContextExtension implements ExtendedCamelContext { lock.lock(); try { if (restRegistryFactory == null) { - setRestRegistryFactory(camelContext.createRestRegistryFactory()); + RestRegistryFactory factory = camelContext.createRestRegistryFactory(); + if (factory != null) { + setRestRegistryFactory(factory); + } } } finally { lock.unlock(); diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultContextPluginManager.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultContextPluginManager.java index e1d3181ba359..c3e2746b0631 100644 --- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultContextPluginManager.java +++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultContextPluginManager.java @@ -41,7 +41,11 @@ public class DefaultContextPluginManager implements PluginManager { } if (extension instanceof Supplier supplier) { extension = supplier.get(); - addContextPlugin(type, (T) extension); + if (extension != null) { + addContextPlugin(type, (T) extension); + } else { + extensions.remove(type); + } } return (T) extension; } diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/SimpleCamelContext.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/SimpleCamelContext.java index 7bf67d739dd5..089c8c20298d 100644 --- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/SimpleCamelContext.java +++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/SimpleCamelContext.java @@ -613,10 +613,10 @@ public class SimpleCamelContext extends AbstractCamelContext { @Override protected RestRegistryFactory createRestRegistryFactory() { - return ResolverHelper.resolveMandatoryBootstrapService(getCamelContextReference(), + return ResolverHelper.resolveBootstrapService(getCamelContextReference(), RestRegistryFactory.FACTORY, - RestRegistryFactory.class, - "camel-rest"); + RestRegistryFactory.class) + .orElse(null); } @Override
