You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by or...@apache.org on 2023/03/31 07:13:47 UTC
[camel] 01/06: CAMEL-15105: make the NodeIdFactory a plugin of the context
This is an automated email from the ASF dual-hosted git repository.
orpiske pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
commit 96e117391ef39240cf7249f0f295fdff2d812ce3
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Thu Mar 30 15:51:17 2023 +0200
CAMEL-15105: make the NodeIdFactory a plugin of the context
---
.../org/apache/camel/openapi/RestOpenApiReader.java | 3 ++-
.../org/apache/camel/spring/EndpointReferenceTest.java | 3 ++-
.../java/org/apache/camel/ExtendedCamelContext.java | 15 ---------------
.../apache/camel/impl/engine/AbstractCamelContext.java | 7 ++-----
.../impl/engine/DefaultCamelContextExtension.java | 18 ------------------
.../impl/engine/DefaultExecutorServiceManager.java | 2 +-
.../camel/impl/ExtendedCamelContextConfigurer.java | 6 ------
.../main/java/org/apache/camel/impl/DefaultModel.java | 7 ++++---
.../impl/lw/LightweightCamelContextExtension.java | 11 -----------
.../org/apache/camel/model/RouteDefinitionHelper.java | 5 +++--
.../org/apache/camel/model/rest/RestDefinition.java | 3 ++-
.../java/org/apache/camel/reifier/BeanReifier.java | 3 ++-
.../org/apache/camel/reifier/ProcessorReifier.java | 5 +++--
.../java/org/apache/camel/reifier/RouteReifier.java | 6 ++++--
.../core/xml/AbstractCamelContextFactoryBean.java | 2 +-
.../org/apache/camel/impl/CustomIdFactoryTest.java | 10 +++++-----
.../issues/RouteIdAnonymousAndFixedClashTest.java | 2 +-
.../camel/main/DefaultConfigurationConfigurer.java | 2 +-
.../camel/management/mbean/ManagedProcessor.java | 6 ++++--
.../apache/camel/management/ManagementTestSupport.java | 11 +++++++----
20 files changed, 44 insertions(+), 83 deletions(-)
diff --git a/components/camel-openapi-java/src/main/java/org/apache/camel/openapi/RestOpenApiReader.java b/components/camel-openapi-java/src/main/java/org/apache/camel/openapi/RestOpenApiReader.java
index 61a59573b33..fef5043faef 100644
--- a/components/camel-openapi-java/src/main/java/org/apache/camel/openapi/RestOpenApiReader.java
+++ b/components/camel-openapi-java/src/main/java/org/apache/camel/openapi/RestOpenApiReader.java
@@ -97,6 +97,7 @@ import org.apache.camel.model.rest.RestSecurityDefinition;
import org.apache.camel.model.rest.SecurityDefinition;
import org.apache.camel.model.rest.VerbDefinition;
import org.apache.camel.spi.ClassResolver;
+import org.apache.camel.spi.NodeIdFactory;
import org.apache.camel.support.CamelContextHelper;
import org.apache.camel.support.ObjectHelper;
import org.apache.camel.util.FileUtil;
@@ -541,7 +542,7 @@ public class RestOpenApiReader {
} else if (rest.getId() != null) {
operationId = getValue(camelContext, rest.getId());
} else {
- verb.idOrCreate(camelContext.getCamelContextExtension().getNodeIdFactory());
+ verb.idOrCreate(camelContext.getCamelContextExtension().getContextPlugin(NodeIdFactory.class));
operationId = verb.getId();
}
op.operationId = operationId;
diff --git a/components/camel-spring-xml/src/test/java/org/apache/camel/spring/EndpointReferenceTest.java b/components/camel-spring-xml/src/test/java/org/apache/camel/spring/EndpointReferenceTest.java
index 67f199bf25c..74b628f55e8 100644
--- a/components/camel-spring-xml/src/test/java/org/apache/camel/spring/EndpointReferenceTest.java
+++ b/components/camel-spring-xml/src/test/java/org/apache/camel/spring/EndpointReferenceTest.java
@@ -21,6 +21,7 @@ import org.apache.camel.Endpoint;
import org.apache.camel.NoSuchEndpointException;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.model.RouteDefinition;
+import org.apache.camel.spi.NodeIdFactory;
import org.apache.camel.spring.example.DummyBean;
import org.apache.camel.support.CamelContextHelper;
import org.junit.jupiter.api.Test;
@@ -80,7 +81,7 @@ public class EndpointReferenceTest extends SpringTestSupport {
public void testReferenceEndpointFromOtherCamelContext() throws Exception {
CamelContext context = applicationContext.getBean("camel2", CamelContext.class);
RouteDefinition route = new RouteDefinition("temporary");
- String routeId = route.idOrCreate(context.getCamelContextExtension().getNodeIdFactory());
+ String routeId = route.idOrCreate(context.getCamelContextExtension().getContextPlugin(NodeIdFactory.class));
try {
CamelContextHelper.resolveEndpoint(context, null, "endpoint1");
fail("Should have thrown exception");
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 3be8a02ab16..faccf2112d4 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
@@ -54,7 +54,6 @@ import org.apache.camel.spi.ManagementMBeanAssembler;
import org.apache.camel.spi.ModelJAXBContextFactory;
import org.apache.camel.spi.ModelToXMLDumper;
import org.apache.camel.spi.ModelineFactory;
-import org.apache.camel.spi.NodeIdFactory;
import org.apache.camel.spi.NormalizedEndpointUri;
import org.apache.camel.spi.PackageScanClassResolver;
import org.apache.camel.spi.PackageScanResourceResolver;
@@ -314,20 +313,6 @@ public interface ExtendedCamelContext {
*/
void setErrorHandlerFactory(ErrorHandlerFactory errorHandlerFactory);
- /**
- * Gets the node id factory
- *
- * @return the node id factory
- */
- NodeIdFactory getNodeIdFactory();
-
- /**
- * Uses a custom node id factory when generating auto assigned ids to the nodes in the route definitions
- *
- * @param factory custom factory to use
- */
- void setNodeIdFactory(NodeIdFactory factory);
-
/**
* Gets the {@link ComponentResolver} to use.
*/
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 e4aee514ac0..4440b794930 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
@@ -234,7 +234,6 @@ public abstract class AbstractCamelContext extends BaseService
volatile RuntimeCamelCatalog runtimeCamelCatalog;
volatile PackageScanClassResolver packageScanClassResolver;
volatile PackageScanResourceResolver packageScanResourceResolver;
- volatile NodeIdFactory nodeIdFactory;
volatile ModelineFactory modelineFactory;
volatile ProcessorFactory processorFactory;
volatile PeriodTaskResolver periodTaskResolver;
@@ -2130,6 +2129,8 @@ public abstract class AbstractCamelContext extends BaseService
public void doBuild() throws Exception {
final StopWatch watch = new StopWatch();
+ getCamelContextExtension().addContextPlugin(NodeIdFactory.class, createNodeIdFactory());
+
// auto-detect step recorder from classpath if none has been explicit configured
if (startupStepRecorder.getClass().getSimpleName().equals("DefaultStartupStepRecorder")) {
StartupStepRecorder fr = camelContextExtension.getBootstrapFactoryFinder()
@@ -4177,10 +4178,6 @@ public abstract class AbstractCamelContext extends BaseService
camelContextExtension.setBeanPostProcessor(beanPostProcessor);
}
- public void setNodeIdFactory(NodeIdFactory factory) {
- camelContextExtension.setNodeIdFactory(factory);
- }
-
public void setDataFormatResolver(DataFormatResolver dataFormatResolver) {
camelContextExtension.setDataFormatResolver(dataFormatResolver);
}
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 4f32d2f5b16..de7e1b81270 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
@@ -73,7 +73,6 @@ import org.apache.camel.spi.ManagementStrategyFactory;
import org.apache.camel.spi.ModelJAXBContextFactory;
import org.apache.camel.spi.ModelToXMLDumper;
import org.apache.camel.spi.ModelineFactory;
-import org.apache.camel.spi.NodeIdFactory;
import org.apache.camel.spi.NormalizedEndpointUri;
import org.apache.camel.spi.PackageScanClassResolver;
import org.apache.camel.spi.PackageScanResourceResolver;
@@ -584,23 +583,6 @@ class DefaultCamelContextExtension implements ExtendedCamelContext {
camelContext.modelJAXBContextFactory = camelContext.getInternalServiceManager().addService(modelJAXBContextFactory);
}
- @Override
- public NodeIdFactory getNodeIdFactory() {
- if (camelContext.nodeIdFactory == null) {
- synchronized (camelContext.lock) {
- if (camelContext.nodeIdFactory == null) {
- setNodeIdFactory(camelContext.createNodeIdFactory());
- }
- }
- }
- return camelContext.nodeIdFactory;
- }
-
- @Override
- public void setNodeIdFactory(NodeIdFactory idFactory) {
- camelContext.nodeIdFactory = camelContext.getInternalServiceManager().addService(idFactory);
- }
-
@Override
public ModelineFactory getModelineFactory() {
if (camelContext.modelineFactory == null) {
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultExecutorServiceManager.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultExecutorServiceManager.java
index 1433bdf8102..dfb6c06acf7 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultExecutorServiceManager.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultExecutorServiceManager.java
@@ -52,7 +52,7 @@ public class DefaultExecutorServiceManager extends BaseExecutorServiceManager {
protected Object forceId(Object source) {
if (source instanceof NamedNode && source instanceof IdAware) {
NamedNode node = (NamedNode) source;
- NodeIdFactory factory = getCamelContext().getCamelContextExtension().getNodeIdFactory();
+ NodeIdFactory factory = getCamelContext().getCamelContextExtension().getContextPlugin(NodeIdFactory.class);
if (node.getId() == null) {
String id = factory.createId(node);
// we auto generated an id to be assigned
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 42281836564..699c2707cf3 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
@@ -81,8 +81,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
case "ModelineFactory": target.setModelineFactory(property(camelContext, org.apache.camel.spi.ModelineFactory.class, value)); return true;
case "name":
case "Name": target.setName(property(camelContext, java.lang.String.class, value)); return true;
- case "nodeidfactory":
- case "NodeIdFactory": target.setNodeIdFactory(property(camelContext, org.apache.camel.spi.NodeIdFactory.class, value)); return true;
case "packagescanclassresolver":
case "PackageScanClassResolver": target.setPackageScanClassResolver(property(camelContext, org.apache.camel.spi.PackageScanClassResolver.class, value)); return true;
case "packagescanresourceresolver":
@@ -182,8 +180,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
case "ModelineFactory": return org.apache.camel.spi.ModelineFactory.class;
case "name":
case "Name": return java.lang.String.class;
- case "nodeidfactory":
- case "NodeIdFactory": return org.apache.camel.spi.NodeIdFactory.class;
case "packagescanclassresolver":
case "PackageScanClassResolver": return org.apache.camel.spi.PackageScanClassResolver.class;
case "packagescanresourceresolver":
@@ -284,8 +280,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
case "ModelineFactory": return target.getModelineFactory();
case "name":
case "Name": return target.getName();
- case "nodeidfactory":
- case "NodeIdFactory": return target.getNodeIdFactory();
case "packagescanclassresolver":
case "PackageScanClassResolver": return target.getPackageScanClassResolver();
case "packagescanresourceresolver":
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultModel.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultModel.java
index 0498e614b97..2800aee4a9f 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultModel.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultModel.java
@@ -65,6 +65,7 @@ import org.apache.camel.model.validator.ValidatorDefinition;
import org.apache.camel.spi.ExchangeFactory;
import org.apache.camel.spi.Language;
import org.apache.camel.spi.ModelReifierFactory;
+import org.apache.camel.spi.NodeIdFactory;
import org.apache.camel.spi.PropertyConfigurer;
import org.apache.camel.spi.RouteTemplateLoaderListener;
import org.apache.camel.spi.RouteTemplateParameterSource;
@@ -162,7 +163,7 @@ public class DefaultModel implements Model {
@Override
public synchronized RouteConfigurationDefinition getRouteConfigurationDefinition(String id) {
for (RouteConfigurationDefinition def : routesConfigurations) {
- if (def.idOrCreate(camelContext.getCamelContextExtension().getNodeIdFactory()).equals(id)) {
+ if (def.idOrCreate(camelContext.getCamelContextExtension().getContextPlugin(NodeIdFactory.class)).equals(id)) {
return def;
}
}
@@ -294,7 +295,7 @@ public class DefaultModel implements Model {
@Override
public synchronized RouteDefinition getRouteDefinition(String id) {
for (RouteDefinition route : routeDefinitions) {
- if (route.idOrCreate(camelContext.getCamelContextExtension().getNodeIdFactory()).equals(id)) {
+ if (route.idOrCreate(camelContext.getCamelContextExtension().getContextPlugin(NodeIdFactory.class)).equals(id)) {
return route;
}
}
@@ -309,7 +310,7 @@ public class DefaultModel implements Model {
@Override
public RouteTemplateDefinition getRouteTemplateDefinition(String id) {
for (RouteTemplateDefinition route : routeTemplateDefinitions) {
- if (route.idOrCreate(camelContext.getCamelContextExtension().getNodeIdFactory()).equals(id)) {
+ if (route.idOrCreate(camelContext.getCamelContextExtension().getContextPlugin(NodeIdFactory.class)).equals(id)) {
return route;
}
}
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java
index c2247b833f0..fa436742ee0 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java
@@ -68,7 +68,6 @@ import org.apache.camel.spi.ManagementMBeanAssembler;
import org.apache.camel.spi.ModelJAXBContextFactory;
import org.apache.camel.spi.ModelToXMLDumper;
import org.apache.camel.spi.ModelineFactory;
-import org.apache.camel.spi.NodeIdFactory;
import org.apache.camel.spi.NormalizedEndpointUri;
import org.apache.camel.spi.PackageScanClassResolver;
import org.apache.camel.spi.PackageScanResourceResolver;
@@ -682,16 +681,6 @@ class LightweightCamelContextExtension implements ExtendedCamelContext {
throw new UnsupportedOperationException();
}
- @Override
- public NodeIdFactory getNodeIdFactory() {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public void setNodeIdFactory(NodeIdFactory factory) {
- throw new UnsupportedOperationException();
- }
-
@Override
public void setLightweight(boolean lightweight) {
throw new UnsupportedOperationException();
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/RouteDefinitionHelper.java b/core/camel-core-model/src/main/java/org/apache/camel/model/RouteDefinitionHelper.java
index 41eb7ab589d..cd85a2781c3 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/RouteDefinitionHelper.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/RouteDefinitionHelper.java
@@ -34,6 +34,7 @@ import org.apache.camel.ExtendedCamelContext;
import org.apache.camel.RuntimeCamelException;
import org.apache.camel.model.rest.RestDefinition;
import org.apache.camel.model.rest.VerbDefinition;
+import org.apache.camel.spi.NodeIdFactory;
import org.apache.camel.support.CamelContextHelper;
import org.apache.camel.support.EndpointHelper;
import org.apache.camel.util.ObjectHelper;
@@ -179,7 +180,7 @@ public final class RouteDefinitionHelper {
int attempts = 0;
while (!done && attempts < 1000) {
attempts++;
- id = route.idOrCreate(ecc.getNodeIdFactory());
+ id = route.idOrCreate(ecc.getContextPlugin(NodeIdFactory.class));
if (customIds.contains(id)) {
// reset id and try again
route.setId(null);
@@ -745,7 +746,7 @@ public final class RouteDefinitionHelper {
*/
public static void forceAssignIds(CamelContext context, final ProcessorDefinition processor) {
// force id on the child
- processor.idOrCreate(context.getCamelContextExtension().getNodeIdFactory());
+ processor.idOrCreate(context.getCamelContextExtension().getContextPlugin(NodeIdFactory.class));
// if there was a custom id assigned, then make sure to support property
// placeholders
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/rest/RestDefinition.java b/core/camel-core-model/src/main/java/org/apache/camel/model/rest/RestDefinition.java
index bcd4cd9615b..bf400dbfcfe 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/rest/RestDefinition.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/rest/RestDefinition.java
@@ -38,6 +38,7 @@ import org.apache.camel.model.OptionalIdentifiedDefinition;
import org.apache.camel.model.RouteDefinition;
import org.apache.camel.model.ToDefinition;
import org.apache.camel.spi.Metadata;
+import org.apache.camel.spi.NodeIdFactory;
import org.apache.camel.spi.RestConfiguration;
import org.apache.camel.support.CamelContextHelper;
import org.apache.camel.util.FileUtil;
@@ -815,7 +816,7 @@ public class RestDefinition extends OptionalIdentifiedDefinition<RestDefinition>
String from = "rest-api:" + configuration.getApiContextPath();
String routeId = configuration.getApiContextRouteId();
if (routeId == null) {
- routeId = answer.idOrCreate(camelContext.getCamelContextExtension().getNodeIdFactory());
+ routeId = answer.idOrCreate(camelContext.getCamelContextExtension().getContextPlugin(NodeIdFactory.class));
}
// append options
diff --git a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/BeanReifier.java b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/BeanReifier.java
index 786a3dbe8f2..1c8e7c7d4e5 100644
--- a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/BeanReifier.java
+++ b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/BeanReifier.java
@@ -23,6 +23,7 @@ import org.apache.camel.model.BeanDefinition;
import org.apache.camel.model.ProcessorDefinition;
import org.apache.camel.spi.BeanProcessorFactory;
import org.apache.camel.spi.IdAware;
+import org.apache.camel.spi.NodeIdFactory;
public class BeanReifier extends ProcessorReifier<BeanDefinition> {
@@ -46,7 +47,7 @@ public class BeanReifier extends ProcessorReifier<BeanDefinition> {
}
Processor answer = fac.createBeanProcessor(camelContext, bean, beanType, beanClass, ref, method, scope);
if (answer instanceof IdAware) {
- String id = camelContext.getCamelContextExtension().getNodeIdFactory().createId(definition);
+ String id = camelContext.getCamelContextExtension().getContextPlugin(NodeIdFactory.class).createId(definition);
((IdAware) answer).setId(id);
}
return answer;
diff --git a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/ProcessorReifier.java b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/ProcessorReifier.java
index 0a0fe1b0bd3..0d233c8e967 100644
--- a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/ProcessorReifier.java
+++ b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/ProcessorReifier.java
@@ -114,6 +114,7 @@ import org.apache.camel.spi.ErrorHandlerAware;
import org.apache.camel.spi.ExecutorServiceManager;
import org.apache.camel.spi.IdAware;
import org.apache.camel.spi.InterceptStrategy;
+import org.apache.camel.spi.NodeIdFactory;
import org.apache.camel.spi.ReifierStrategy;
import org.apache.camel.spi.RouteIdAware;
import org.apache.camel.support.CamelContextHelper;
@@ -814,7 +815,7 @@ public abstract class ProcessorReifier<T extends ProcessorDefinition<?>> extends
protected Processor createProcessor(ProcessorDefinition<?> output) throws Exception {
// ensure node has id assigned
- String outputId = output.idOrCreate(camelContext.getCamelContextExtension().getNodeIdFactory());
+ String outputId = output.idOrCreate(camelContext.getCamelContextExtension().getContextPlugin(NodeIdFactory.class));
StartupStep step = camelContext.getCamelContextExtension().getStartupStepRecorder().beginStep(ProcessorReifier.class, outputId, "Create processor");
Processor processor = null;
@@ -883,7 +884,7 @@ public abstract class ProcessorReifier<T extends ProcessorDefinition<?>> extends
}
protected String getId(OptionalIdentifiedDefinition<?> def) {
- return def.idOrCreate(camelContext.getCamelContextExtension().getNodeIdFactory());
+ return def.idOrCreate(camelContext.getCamelContextExtension().getContextPlugin(NodeIdFactory.class));
}
/**
diff --git a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/RouteReifier.java b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/RouteReifier.java
index 1de338a742d..e72df220d57 100644
--- a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/RouteReifier.java
+++ b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/RouteReifier.java
@@ -46,6 +46,7 @@ import org.apache.camel.spi.ErrorHandlerAware;
import org.apache.camel.spi.InternalProcessor;
import org.apache.camel.spi.LifecycleStrategy;
import org.apache.camel.spi.ManagementInterceptStrategy;
+import org.apache.camel.spi.NodeIdFactory;
import org.apache.camel.spi.RoutePolicy;
import org.apache.camel.spi.RoutePolicyFactory;
import org.slf4j.Logger;
@@ -96,7 +97,7 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
}
// create route
- String id = definition.idOrCreate(camelContext.getCamelContextExtension().getNodeIdFactory());
+ String id = definition.idOrCreate(camelContext.getCamelContextExtension().getContextPlugin(NodeIdFactory.class));
String desc = definition.getDescriptionText();
Route route = camelContext.getCamelContextExtension().getRouteFactory().createRoute(camelContext, definition, id,
desc, endpoint, definition.getResource());
@@ -202,7 +203,8 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
ProcessorReifier<?> reifier = ProcessorReifier.reifier(route, output);
// ensure node has id assigned
- String outputId = output.idOrCreate(camelContext.getCamelContextExtension().getNodeIdFactory());
+ String outputId
+ = output.idOrCreate(camelContext.getCamelContextExtension().getContextPlugin(NodeIdFactory.class));
String eip = reifier.getClass().getSimpleName().replace("Reifier", "");
StartupStep step = camelContext.getCamelContextExtension().getStartupStepRecorder()
.beginStep(ProcessorReifier.class, outputId, "Create " + eip + " Processor");
diff --git a/core/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java b/core/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
index fbc5c103ac2..4d2b6bf21ed 100644
--- a/core/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
+++ b/core/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
@@ -1516,7 +1516,7 @@ public abstract class AbstractCamelContextFactoryBean<T extends ModelCamelContex
NodeIdFactory nodeIdFactory = getBeanForType(NodeIdFactory.class);
if (nodeIdFactory != null) {
LOG.info("Using custom NodeIdFactory: {}", nodeIdFactory);
- getContext().getCamelContextExtension().setNodeIdFactory(nodeIdFactory);
+ getContext().getCamelContextExtension().addContextPlugin(NodeIdFactory.class, nodeIdFactory);
}
StreamCachingStrategy streamCachingStrategy = getBeanForType(StreamCachingStrategy.class);
if (streamCachingStrategy != null) {
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/CustomIdFactoryTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/CustomIdFactoryTest.java
index 4c53797e98c..a32919f8f47 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/CustomIdFactoryTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/CustomIdFactoryTest.java
@@ -58,11 +58,7 @@ public class CustomIdFactoryTest extends ContextTestSupport {
public void configure() throws Exception {
// use our own id factory so we can generate the keys we like to
// use
- context.getCamelContextExtension().setNodeIdFactory(new NodeIdFactory() {
- public String createId(NamedNode definition) {
- return "#" + definition.getShortName() + ++counter + "#";
- }
- });
+ context.getCamelContextExtension().addContextPlugin(NodeIdFactory.class, buildNodeIdFactory());
// add our debugger so we can debug camel routes when we send in
// messages
@@ -76,6 +72,10 @@ public class CustomIdFactoryTest extends ContextTestSupport {
};
}
+ private static NodeIdFactory buildNodeIdFactory() {
+ return definition -> "#" + definition.getShortName() + ++counter + "#";
+ }
+
/**
* Test path 1
*/
diff --git a/core/camel-core/src/test/java/org/apache/camel/issues/RouteIdAnonymousAndFixedClashTest.java b/core/camel-core/src/test/java/org/apache/camel/issues/RouteIdAnonymousAndFixedClashTest.java
index 378da1c0caa..f3476b92825 100644
--- a/core/camel-core/src/test/java/org/apache/camel/issues/RouteIdAnonymousAndFixedClashTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/issues/RouteIdAnonymousAndFixedClashTest.java
@@ -43,7 +43,7 @@ public class RouteIdAnonymousAndFixedClashTest extends ContextTestSupport {
@Override
protected CamelContext createCamelContext() throws Exception {
DefaultCamelContext ctx = new DefaultCamelContext(true);
- ctx.setNodeIdFactory(new NodeIdFactory() {
+ ctx.getCamelContextExtension().addContextPlugin(NodeIdFactory.class, new NodeIdFactory() {
AtomicInteger counter = new AtomicInteger();
@Override
diff --git a/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationConfigurer.java b/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationConfigurer.java
index 30e8ef8115b..67e4bc57fff 100644
--- a/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationConfigurer.java
+++ b/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationConfigurer.java
@@ -442,7 +442,7 @@ public final class DefaultConfigurationConfigurer {
}
NodeIdFactory nif = getSingleBeanOfType(registry, NodeIdFactory.class);
if (nif != null) {
- ecc.getCamelContextExtension().setNodeIdFactory(nif);
+ ecc.getCamelContextExtension().addContextPlugin(NodeIdFactory.class, nif);
}
MessageHistoryFactory mhf = getSingleBeanOfType(registry, MessageHistoryFactory.class);
if (mhf != null) {
diff --git a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedProcessor.java b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedProcessor.java
index dfd15d382b6..8c6d42b6671 100644
--- a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedProcessor.java
+++ b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedProcessor.java
@@ -30,6 +30,7 @@ import org.apache.camel.model.ProcessorDefinitionHelper;
import org.apache.camel.model.RouteDefinition;
import org.apache.camel.model.StepDefinition;
import org.apache.camel.spi.ManagementStrategy;
+import org.apache.camel.spi.NodeIdFactory;
import org.apache.camel.spi.RouteIdAware;
import org.apache.camel.support.service.ServiceHelper;
@@ -50,14 +51,15 @@ public class ManagedProcessor extends ManagedPerformanceCounter implements Manag
this.processor = processor;
this.definition = definition;
this.nodeLevel = ProcessorDefinitionHelper.getNodeLevel(definition);
- this.id = definition.idOrCreate(context.getCamelContextExtension().getNodeIdFactory());
+ this.id = definition.idOrCreate(context.getCamelContextExtension().getContextPlugin(NodeIdFactory.class));
StepDefinition step;
if (definition instanceof StepDefinition) {
step = (StepDefinition) definition;
} else {
step = ProcessorDefinitionHelper.findFirstParentOfType(StepDefinition.class, definition, true);
}
- this.stepId = step != null ? step.idOrCreate(context.getCamelContextExtension().getNodeIdFactory()) : null;
+ this.stepId = step != null
+ ? step.idOrCreate(context.getCamelContextExtension().getContextPlugin(NodeIdFactory.class)) : null;
this.sourceLocation = definition.getLocation();
if (sourceLocation == null) {
RouteDefinition rd = ProcessorDefinitionHelper.getRoute(definition);
diff --git a/core/camel-management/src/test/java/org/apache/camel/management/ManagementTestSupport.java b/core/camel-management/src/test/java/org/apache/camel/management/ManagementTestSupport.java
index 3fa57e984b1..a1aacf9621f 100644
--- a/core/camel-management/src/test/java/org/apache/camel/management/ManagementTestSupport.java
+++ b/core/camel-management/src/test/java/org/apache/camel/management/ManagementTestSupport.java
@@ -30,7 +30,6 @@ import javax.management.ReflectionException;
import org.apache.camel.CamelContext;
import org.apache.camel.ContextTestSupport;
import org.apache.camel.NamedNode;
-import org.apache.camel.impl.engine.AbstractCamelContext;
import org.apache.camel.spi.NodeIdFactory;
import static org.apache.camel.management.DefaultManagementAgent.DEFAULT_DOMAIN;
@@ -81,15 +80,19 @@ public abstract class ManagementTestSupport extends ContextTestSupport {
@Override
protected CamelContext createCamelContext() throws Exception {
CamelContext ctx = super.createCamelContext();
- ((AbstractCamelContext) ctx).setNodeIdFactory(new NodeIdFactory() {
+ ctx.getCamelContextExtension().addContextPlugin(NodeIdFactory.class, buildNodeIdFactory());
+ return ctx;
+ }
+
+ private static NodeIdFactory buildNodeIdFactory() {
+ return new NodeIdFactory() {
private AtomicInteger counter = new AtomicInteger();
@Override
public String createId(NamedNode definition) {
return definition.getShortName() + counter.incrementAndGet();
}
- });
- return ctx;
+ };
}
public ObjectName getContextObjectName() throws MalformedObjectNameException {