This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new 4836cf8705b3 CAMEL-23553: Fix RestRegistry lazy plugin resolution
(#23336)
4836cf8705b3 is described below
commit 4836cf8705b3153e24701360da55a35ce90c91fc
Author: Claus Ibsen <[email protected]>
AuthorDate: Wed May 20 07:45:50 2026 +0200
CAMEL-23553: Fix RestRegistry lazy plugin resolution (#23336)
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