You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2026/05/19 19:25:37 UTC
(camel) 01/01: CAMEL-23553: Fix RestRegistry lazy plugin resolution
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 <cl...@gmail.com>
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 <no...@anthropic.com>
---
.../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