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/04/01 06:47:06 UTC
[camel] 01/03: CAMEL-15105: make the ModelJAXBContextFactory 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 12dcb345497a864ad82aba16a7e19fb3a0c80138
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Fri Mar 31 16:26:20 2023 +0200
CAMEL-15105: make the ModelJAXBContextFactory a plugin of the context
---
.../camel/spring/CamelContextFactoryBeanTest.java | 3 ++-
.../java/org/apache/camel/ExtendedCamelContext.java | 15 ---------------
.../camel/impl/engine/AbstractCamelContext.java | 1 -
.../impl/engine/DefaultCamelContextExtension.java | 18 ------------------
.../apache/camel/impl/engine/SimpleCamelContext.java | 1 +
.../camel/impl/ExtendedCamelContextConfigurer.java | 6 ------
.../impl/lw/LightweightCamelContextExtension.java | 11 -----------
.../core/xml/AbstractCamelContextFactoryBean.java | 2 +-
.../CamelContextAddRestDefinitionsFromXmlTest.java | 3 ++-
.../CamelContextAddRouteDefinitionsFromXmlTest.java | 3 ++-
.../camel/main/DefaultConfigurationConfigurer.java | 2 +-
.../java/org/apache/camel/support/PluginHelper.java | 19 +++++++++++++++++++
.../java/org/apache/camel/xml/jaxb/JaxbHelper.java | 3 ++-
13 files changed, 30 insertions(+), 57 deletions(-)
diff --git a/components/camel-spring-xml/src/test/java/org/apache/camel/spring/CamelContextFactoryBeanTest.java b/components/camel-spring-xml/src/test/java/org/apache/camel/spring/CamelContextFactoryBeanTest.java
index 7b6e3d1d7fe..0dcb9248d96 100644
--- a/components/camel-spring-xml/src/test/java/org/apache/camel/spring/CamelContextFactoryBeanTest.java
+++ b/components/camel-spring-xml/src/test/java/org/apache/camel/spring/CamelContextFactoryBeanTest.java
@@ -20,6 +20,7 @@ import org.apache.camel.spi.ModelJAXBContextFactory;
import org.apache.camel.spi.UuidGenerator;
import org.apache.camel.spring.xml.CamelContextFactoryBean;
import org.apache.camel.support.DefaultUuidGenerator;
+import org.apache.camel.support.PluginHelper;
import org.apache.camel.support.SimpleUuidGenerator;
import org.apache.camel.xml.jaxb.DefaultModelJAXBContextFactory;
import org.junit.jupiter.api.BeforeEach;
@@ -68,7 +69,7 @@ public class CamelContextFactoryBeanTest {
factory.afterPropertiesSet();
ModelJAXBContextFactory modelJAXBContextFactory
- = factory.getContext().getCamelContextExtension().getModelJAXBContextFactory();
+ = PluginHelper.getModelJAXBContextFactory(factory.getContext());
assertTrue(modelJAXBContextFactory instanceof CustomModelJAXBContextFactory);
}
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 d52b281ef58..7e08346dd92 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
@@ -43,7 +43,6 @@ import org.apache.camel.spi.InternalProcessorFactory;
import org.apache.camel.spi.LifecycleStrategy;
import org.apache.camel.spi.LogListener;
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.NormalizedEndpointUri;
@@ -421,20 +420,6 @@ public interface ExtendedCamelContext {
*/
void setRouteFactory(RouteFactory routeFactory);
- /**
- * Returns the JAXB Context factory used to create Models.
- *
- * @return the JAXB Context factory used to create Models.
- */
- ModelJAXBContextFactory getModelJAXBContextFactory();
-
- /**
- * Sets a custom JAXB Context factory to be used
- *
- * @param modelJAXBContextFactory a JAXB Context factory
- */
- void setModelJAXBContextFactory(ModelJAXBContextFactory modelJAXBContextFactory);
-
/**
* Gets the {@link DeferServiceFactory} 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 2c54e962502..cf55bfc9aec 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
@@ -232,7 +232,6 @@ public abstract class AbstractCamelContext extends BaseService
volatile InterceptEndpointFactory interceptEndpointFactory;
volatile RouteFactory routeFactory;
volatile AsyncProcessorAwaitManager asyncProcessorAwaitManager;
- volatile ModelJAXBContextFactory modelJAXBContextFactory;
volatile UnitOfWorkFactory unitOfWorkFactory;
volatile BeanIntrospection beanIntrospection;
volatile boolean eventNotificationApplicable;
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 64e2e66d19e..21c0d1f15cc 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
@@ -62,7 +62,6 @@ import org.apache.camel.spi.LogListener;
import org.apache.camel.spi.ManagementMBeanAssembler;
import org.apache.camel.spi.ManagementStrategy;
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.NormalizedEndpointUri;
@@ -368,23 +367,6 @@ class DefaultCamelContextExtension implements ExtendedCamelContext {
return factories.computeIfAbsent(path, camelContext::createFactoryFinder);
}
- @Override
- public ModelJAXBContextFactory getModelJAXBContextFactory() {
- if (camelContext.modelJAXBContextFactory == null) {
- synchronized (camelContext.lock) {
- if (camelContext.modelJAXBContextFactory == null) {
- setModelJAXBContextFactory(camelContext.createModelJAXBContextFactory());
- }
- }
- }
- return camelContext.modelJAXBContextFactory;
- }
-
- @Override
- public void setModelJAXBContextFactory(final ModelJAXBContextFactory modelJAXBContextFactory) {
- camelContext.modelJAXBContextFactory = camelContext.getInternalServiceManager().addService(modelJAXBContextFactory);
- }
-
@Override
public ModelineFactory getModelineFactory() {
if (camelContext.modelineFactory == null) {
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 cf3b57f29b6..c9e400502da 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
@@ -135,6 +135,7 @@ public class SimpleCamelContext extends AbstractCamelContext {
getCamelContextExtension().addContextPlugin(CliConnectorFactory.class, createCliConnectorFactory());
getCamelContextExtension().addContextPlugin(ScheduledExecutorService.class, createErrorHandlerExecutorService());
+ getCamelContextExtension().addContextPlugin(ModelJAXBContextFactory.class, createModelJAXBContextFactory());
}
@Override
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 8665c5c89e2..82291031222 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
@@ -57,8 +57,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
case "InternalProcessorFactory": target.setInternalProcessorFactory(property(camelContext, org.apache.camel.spi.InternalProcessorFactory.class, value)); return true;
case "lightweight":
case "Lightweight": target.setLightweight(property(camelContext, boolean.class, value)); return true;
- case "modeljaxbcontextfactory":
- case "ModelJAXBContextFactory": target.setModelJAXBContextFactory(property(camelContext, org.apache.camel.spi.ModelJAXBContextFactory.class, value)); return true;
case "modeltoxmldumper":
case "ModelToXMLDumper": target.setModelToXMLDumper(property(camelContext, org.apache.camel.spi.ModelToXMLDumper.class, value)); return true;
case "modelinefactory":
@@ -134,8 +132,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
case "InternalProcessorFactory": return org.apache.camel.spi.InternalProcessorFactory.class;
case "lightweight":
case "Lightweight": return boolean.class;
- case "modeljaxbcontextfactory":
- case "ModelJAXBContextFactory": return org.apache.camel.spi.ModelJAXBContextFactory.class;
case "modeltoxmldumper":
case "ModelToXMLDumper": return org.apache.camel.spi.ModelToXMLDumper.class;
case "modelinefactory":
@@ -212,8 +208,6 @@ public class ExtendedCamelContextConfigurer extends org.apache.camel.support.com
case "InternalProcessorFactory": return target.getInternalProcessorFactory();
case "lightweight":
case "Lightweight": return target.isLightweight();
- case "modeljaxbcontextfactory":
- case "ModelJAXBContextFactory": return target.getModelJAXBContextFactory();
case "modeltoxmldumper":
case "ModelToXMLDumper": return target.getModelToXMLDumper();
case "modelinefactory":
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 fed1fa2282f..40717ac7f95 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
@@ -57,7 +57,6 @@ import org.apache.camel.spi.InterceptStrategy;
import org.apache.camel.spi.InternalProcessorFactory;
import org.apache.camel.spi.LogListener;
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.NormalizedEndpointUri;
@@ -109,16 +108,6 @@ class LightweightCamelContextExtension implements ExtendedCamelContext {
throw new UnsupportedOperationException();
}
- @Override
- public ModelJAXBContextFactory getModelJAXBContextFactory() {
- return camelContext.getCamelContextExtension().getModelJAXBContextFactory();
- }
-
- @Override
- public void setModelJAXBContextFactory(ModelJAXBContextFactory modelJAXBContextFactory) {
- throw new UnsupportedOperationException();
- }
-
@Override
public DataFormatResolver getDataFormatResolver() {
return camelContext.getCamelContextExtension().getDataFormatResolver();
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 7ada9d2f3c2..e09166f34c2 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
@@ -1478,7 +1478,7 @@ public abstract class AbstractCamelContextFactoryBean<T extends ModelCamelContex
ModelJAXBContextFactory modelJAXBContextFactory = getBeanForType(ModelJAXBContextFactory.class);
if (modelJAXBContextFactory != null) {
LOG.info("Using custom ModelJAXBContextFactory: {}", modelJAXBContextFactory);
- getContext().getCamelContextExtension().setModelJAXBContextFactory(modelJAXBContextFactory);
+ getContext().getCamelContextExtension().addContextPlugin(ModelJAXBContextFactory.class, modelJAXBContextFactory);
}
ClassResolver classResolver = getBeanForType(ClassResolver.class);
if (classResolver != null) {
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/CamelContextAddRestDefinitionsFromXmlTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/CamelContextAddRestDefinitionsFromXmlTest.java
index a6484d9bd0e..627e9d34bec 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/CamelContextAddRestDefinitionsFromXmlTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/CamelContextAddRestDefinitionsFromXmlTest.java
@@ -31,6 +31,7 @@ import org.apache.camel.component.rest.DummyRestProcessorFactory;
import org.apache.camel.model.RouteDefinition;
import org.apache.camel.model.rest.RestDefinition;
import org.apache.camel.spi.Registry;
+import org.apache.camel.support.PluginHelper;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -52,7 +53,7 @@ public class CamelContextAddRestDefinitionsFromXmlTest extends ContextTestSuppor
@BeforeEach
public void setUp() throws Exception {
super.setUp();
- jaxbContext = (JAXBContext) context.getCamelContextExtension().getModelJAXBContextFactory().newJAXBContext();
+ jaxbContext = (JAXBContext) PluginHelper.getModelJAXBContextFactory(context).newJAXBContext();
}
protected Object parseUri(String uri) throws JAXBException {
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/CamelContextAddRouteDefinitionsFromXmlTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/CamelContextAddRouteDefinitionsFromXmlTest.java
index ce80418ac57..a90bd6aee3e 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/CamelContextAddRouteDefinitionsFromXmlTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/CamelContextAddRouteDefinitionsFromXmlTest.java
@@ -27,6 +27,7 @@ import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.apache.camel.model.ProcessorDefinition;
import org.apache.camel.model.RouteDefinition;
+import org.apache.camel.support.PluginHelper;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -40,7 +41,7 @@ public class CamelContextAddRouteDefinitionsFromXmlTest extends ContextTestSuppo
@BeforeEach
public void setUp() throws Exception {
super.setUp();
- jaxbContext = (JAXBContext) context.getCamelContextExtension().getModelJAXBContextFactory().newJAXBContext();
+ jaxbContext = (JAXBContext) PluginHelper.getModelJAXBContextFactory(context).newJAXBContext();
}
protected Object parseUri(String uri) throws JAXBException {
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 bd652f48584..00aed04324e 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
@@ -407,7 +407,7 @@ public final class DefaultConfigurationConfigurer {
}
ModelJAXBContextFactory mjcf = getSingleBeanOfType(registry, ModelJAXBContextFactory.class);
if (mjcf != null) {
- ecc.getCamelContextExtension().setModelJAXBContextFactory(mjcf);
+ ecc.getCamelContextExtension().addContextPlugin(ModelJAXBContextFactory.class, mjcf);
}
ClassResolver cr = getSingleBeanOfType(registry, ClassResolver.class);
if (cr != null) {
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java b/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java
index 12655450c28..b41d67f8e49 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java
@@ -28,6 +28,7 @@ import org.apache.camel.spi.ComponentResolver;
import org.apache.camel.spi.ConfigurerResolver;
import org.apache.camel.spi.FactoryFinderResolver;
import org.apache.camel.spi.LanguageResolver;
+import org.apache.camel.spi.ModelJAXBContextFactory;
import org.apache.camel.spi.PackageScanClassResolver;
import org.apache.camel.spi.PackageScanResourceResolver;
import org.apache.camel.spi.UriFactoryResolver;
@@ -224,4 +225,22 @@ public final class PluginHelper {
public static PackageScanResourceResolver getPackageScanResourceResolver(ExtendedCamelContext extendedCamelContext) {
return extendedCamelContext.getContextPlugin(PackageScanResourceResolver.class);
}
+
+ /**
+ * Returns the JAXB Context factory used to create Models.
+ *
+ * @return the JAXB Context factory used to create Models.
+ */
+ public static ModelJAXBContextFactory getModelJAXBContextFactory(CamelContext camelContext) {
+ return getModelJAXBContextFactory(camelContext.getCamelContextExtension());
+ }
+
+ /**
+ * Returns the JAXB Context factory used to create Models.
+ *
+ * @return the JAXB Context factory used to create Models.
+ */
+ public static ModelJAXBContextFactory getModelJAXBContextFactory(ExtendedCamelContext extendedCamelContext) {
+ return extendedCamelContext.getContextPlugin(ModelJAXBContextFactory.class);
+ }
}
diff --git a/core/camel-xml-jaxb/src/main/java/org/apache/camel/xml/jaxb/JaxbHelper.java b/core/camel-xml-jaxb/src/main/java/org/apache/camel/xml/jaxb/JaxbHelper.java
index 843c4fe0f81..68c9e7d4be3 100644
--- a/core/camel-xml-jaxb/src/main/java/org/apache/camel/xml/jaxb/JaxbHelper.java
+++ b/core/camel-xml-jaxb/src/main/java/org/apache/camel/xml/jaxb/JaxbHelper.java
@@ -57,6 +57,7 @@ import org.apache.camel.model.language.ExpressionDefinition;
import org.apache.camel.model.rest.RestDefinition;
import org.apache.camel.model.rest.RestsDefinition;
import org.apache.camel.spi.NamespaceAware;
+import org.apache.camel.support.PluginHelper;
import org.apache.camel.util.KeyValueHolder;
import static org.apache.camel.model.ProcessorDefinitionHelper.filterTypeInOutputs;
@@ -68,7 +69,7 @@ public final class JaxbHelper {
}
public static JAXBContext getJAXBContext(CamelContext context) throws Exception {
- return (JAXBContext) context.getCamelContextExtension().getModelJAXBContextFactory().newJAXBContext();
+ return (JAXBContext) PluginHelper.getModelJAXBContextFactory(context).newJAXBContext();
}
/**