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 2024/05/30 12:20:58 UTC
(camel) 04/06: CAMEL-20798: Add endpoint service registry
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch sr
in repository https://gitbox.apache.org/repos/asf/camel.git
commit 0f4c06f543da93d2211803cbd078fbc61d03a30f
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Thu May 30 13:40:39 2024 +0200
CAMEL-20798: Add endpoint service registry
---
.../java/org/apache/camel/ExtendedCamelContext.java | 11 +++++++++++
.../camel/impl/engine/AbstractCamelContext.java | 1 -
.../impl/engine/DefaultCamelContextExtension.java | 19 +++++++++++++++++++
.../apache/camel/impl/console/ServiceDevConsole.java | 4 ++--
.../camel/impl/ExtendedCamelContextConfigurer.java | 6 ++++++
5 files changed, 38 insertions(+), 3 deletions(-)
diff --git a/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java b/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
index 318d50a5743..2d6b5667c3a 100644
--- a/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
+++ b/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
@@ -23,6 +23,7 @@ import java.util.function.Supplier;
import org.apache.camel.catalog.RuntimeCamelCatalog;
import org.apache.camel.spi.BootstrapCloseable;
+import org.apache.camel.spi.EndpointServiceRegistry;
import org.apache.camel.spi.EndpointStrategy;
import org.apache.camel.spi.EndpointUriFactory;
import org.apache.camel.spi.ExchangeFactory;
@@ -376,6 +377,16 @@ public interface ExtendedCamelContext {
*/
void setReactiveExecutor(ReactiveExecutor reactiveExecutor);
+ /**
+ * Gets the {@link EndpointServiceRegistry} to use.
+ */
+ EndpointServiceRegistry getEndpointServiceRegistry();
+
+ /**
+ * Sets a custom {@link EndpointServiceRegistry} to be used.
+ */
+ void setEndpointServiceRegistry(EndpointServiceRegistry endpointServiceRegistry);
+
/**
* Whether exchange event notification is applicable (possible). This API is used internally in Camel as
* optimization.
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 a773822c027..10642fc6eb7 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
@@ -346,7 +346,6 @@ public abstract class AbstractCamelContext extends BaseService
camelContextExtension.addContextPlugin(PackageScanClassResolver.class, createPackageScanClassResolver());
camelContextExtension.addContextPlugin(PackageScanResourceResolver.class, createPackageScanResourceResolver());
camelContextExtension.addContextPlugin(VariableRepositoryFactory.class, createVariableRepositoryFactory());
- camelContextExtension.addContextPlugin(EndpointServiceRegistry.class, createEndpointServiceRegistry());
camelContextExtension.lazyAddContextPlugin(ModelineFactory.class, this::createModelineFactory);
camelContextExtension.lazyAddContextPlugin(ModelJAXBContextFactory.class, this::createModelJAXBContextFactory);
camelContextExtension.addContextPlugin(DataFormatResolver.class, createDataFormatResolver());
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 d0f5036c2a8..40410b2915e 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
@@ -39,6 +39,7 @@ import org.apache.camel.TypeConverter;
import org.apache.camel.spi.BootstrapCloseable;
import org.apache.camel.spi.CamelContextNameStrategy;
import org.apache.camel.spi.ClassResolver;
+import org.apache.camel.spi.EndpointServiceRegistry;
import org.apache.camel.spi.EndpointStrategy;
import org.apache.camel.spi.EndpointUriFactory;
import org.apache.camel.spi.EventNotifier;
@@ -124,6 +125,7 @@ class DefaultCamelContextExtension implements ExtendedCamelContext {
private volatile TransformerRegistry<TransformerKey> transformerRegistry;
private volatile ValidatorRegistry<ValidatorKey> validatorRegistry;
private volatile TypeConverterRegistry typeConverterRegistry;
+ private volatile EndpointServiceRegistry endpointServiceRegistry;
private volatile TypeConverter typeConverter;
private volatile RouteController routeController;
private volatile ShutdownStrategy shutdownStrategy;
@@ -773,6 +775,23 @@ class DefaultCamelContextExtension implements ExtendedCamelContext {
this.transformerRegistry = camelContext.getInternalServiceManager().addService(camelContext, transformerRegistry);
}
+ @Override
+ public EndpointServiceRegistry getEndpointServiceRegistry() {
+ if (endpointServiceRegistry == null) {
+ synchronized (lock) {
+ if (endpointServiceRegistry == null) {
+ setEndpointServiceRegistry(camelContext.createEndpointServiceRegistry());
+ }
+ }
+ }
+ return endpointServiceRegistry;
+ }
+
+ @Override
+ public void setEndpointServiceRegistry(EndpointServiceRegistry endpointServiceRegistry) {
+ this.endpointServiceRegistry = camelContext.getInternalServiceManager().addService(camelContext, endpointServiceRegistry);
+ }
+
ValidatorRegistry getValidatorRegistry() {
if (validatorRegistry == null) {
synchronized (lock) {
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/ServiceDevConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/ServiceDevConsole.java
index 796a44e587c..3023cf71c47 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/ServiceDevConsole.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/ServiceDevConsole.java
@@ -37,7 +37,7 @@ public class ServiceDevConsole extends AbstractDevConsole {
protected String doCallText(Map<String, Object> options) {
StringBuilder sb = new StringBuilder();
- EndpointServiceRegistry esr = getCamelContext().getCamelContextExtension().getContextPlugin(EndpointServiceRegistry.class);
+ EndpointServiceRegistry esr = getCamelContext().getCamelContextExtension().getEndpointServiceRegistry();
for (EndpointServiceRegistry.EndpointService es : esr.listAllEndpointServices()) {
if (!sb.isEmpty()) {
sb.append("\n");
@@ -62,7 +62,7 @@ public class ServiceDevConsole extends AbstractDevConsole {
List<JsonObject> list = new ArrayList<>();
root.put("services", list);
- EndpointServiceRegistry esr = getCamelContext().getCamelContextExtension().getContextPlugin(EndpointServiceRegistry.class);
+ EndpointServiceRegistry esr = getCamelContext().getCamelContextExtension().getEndpointServiceRegistry();
for (EndpointServiceRegistry.EndpointService es : esr.listAllEndpointServices()) {
JsonObject jo = new JsonObject();
jo.put("component", es.getComponent());
diff --git a/core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java b/core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java
index c671341e579..b665fc149dc 100644
--- a/core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java
+++ b/core/camel-core-engine/src/generated/java/org/apache/camel/impl/ExtendedCamelContextConfigurer.java
@@ -30,6 +30,8 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
case "defaultfactoryfinder":
case "defaultFactoryFinder": target.setDefaultFactoryFinder(property(camelContext, org.apache.camel.spi.FactoryFinder.class, value)); return true;
case "description": target.setDescription(property(camelContext, java.lang.String.class, value)); return true;
+ case "endpointserviceregistry":
+ case "endpointServiceRegistry": target.setEndpointServiceRegistry(property(camelContext, org.apache.camel.spi.EndpointServiceRegistry.class, value)); return true;
case "errorhandlerfactory":
case "errorHandlerFactory": target.setErrorHandlerFactory(property(camelContext, org.apache.camel.ErrorHandlerFactory.class, value)); return true;
case "eventnotificationapplicable":
@@ -65,6 +67,8 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
case "defaultfactoryfinder":
case "defaultFactoryFinder": return org.apache.camel.spi.FactoryFinder.class;
case "description": return java.lang.String.class;
+ case "endpointserviceregistry":
+ case "endpointServiceRegistry": return org.apache.camel.spi.EndpointServiceRegistry.class;
case "errorhandlerfactory":
case "errorHandlerFactory": return org.apache.camel.ErrorHandlerFactory.class;
case "eventnotificationapplicable":
@@ -101,6 +105,8 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
case "defaultfactoryfinder":
case "defaultFactoryFinder": return target.getDefaultFactoryFinder();
case "description": return target.getDescription();
+ case "endpointserviceregistry":
+ case "endpointServiceRegistry": return target.getEndpointServiceRegistry();
case "errorhandlerfactory":
case "errorHandlerFactory": return target.getErrorHandlerFactory();
case "eventnotificationapplicable":