Repository: camel Updated Branches: refs/heads/master 2ad33aa66 -> ad651342a
Initial take on CAMEL-6380 Created a ModelJAXBContextFactory and replaced all usages of JAXBContext.newInstance() with a call to the factory. Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/fc7e2dff Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/fc7e2dff Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/fc7e2dff Branch: refs/heads/master Commit: fc7e2dffae73342dedfbb3ac0157badfc29d2eaa Parents: 2ad33aa Author: Aaron Whiteside <aaronjwhites...@gmail.com> Authored: Wed Oct 8 23:12:40 2014 -0700 Committer: Claus Ibsen <davscl...@apache.org> Committed: Sat Feb 14 15:08:51 2015 +0100 ---------------------------------------------------------------------- .../apache/camel/impl/DefaultCamelContext.java | 16 +++++++- .../impl/DefaultModelJAXBContextFactory.java | 25 ++++++++++++ .../java/org/apache/camel/main/MainSupport.java | 10 ++++- .../management/mbean/ManagedCamelContext.java | 4 +- .../camel/management/mbean/ManagedRoute.java | 4 +- .../apache/camel/model/ModelCamelContext.java | 8 ++++ .../org/apache/camel/model/ModelHelper.java | 28 ++++++-------- .../camel/model/RestContextRefDefinition.java | 3 +- .../model/RestContextRefDefinitionHelper.java | 13 +++---- .../camel/model/RouteContextRefDefinition.java | 2 +- .../model/RouteContextRefDefinitionHelper.java | 14 +++---- .../camel/spi/ModelJAXBContextFactory.java | 14 +++++++ ...elContextAddRouteDefinitionsFromXmlTest.java | 7 +--- .../org/apache/camel/impl/MainSupportTest.java | 6 --- .../org/apache/camel/model/XmlTestSupport.java | 3 +- .../util/DumpModelAsXmlAggregateRouteTest.java | 2 +- .../DumpModelAsXmlChoiceFilterRouteTest.java | 4 +- .../util/DumpModelAsXmlRouteExpressionTest.java | 8 ++-- .../util/DumpModelAsXmlRoutePredicateTest.java | 8 ++-- .../util/DumpModelAsXmlSplitBodyRouteTest.java | 2 +- ...ModelAsXmlSplitNestedChoiceEndRouteTest.java | 2 +- .../util/DumpModelAsXmlTransformRouteTest.java | 2 +- .../camel/blueprint/BlueprintCamelContext.java | 1 + .../BlueprintModelJAXBContextFactory.java | 22 +++++++++++ .../handler/CamelNamespaceHandler.java | 30 +-------------- .../camel/blueprint/BlueprintJaxbRestTest.java | 8 +--- .../camel/blueprint/BlueprintJaxbTest.java | 8 +--- .../main/java/org/apache/camel/cdi/Main.java | 40 ++------------------ .../java/org/apache/camel/cdi/RoutesXml.java | 25 ++++++------ .../camel/cdi/XmlRoutesFromClassPathTest.java | 2 +- .../apache/camel/cdi/XmlRoutesFromURLTest.java | 2 +- .../main/java/org/apache/camel/guice/Main.java | 4 -- .../main/java/org/apache/camel/spring/Main.java | 3 +- .../apache/camel/spring/SpringCamelContext.java | 1 + .../spring/SpringModelJAXBContextFactory.java | 22 +++++++++++ .../spring/handler/CamelNamespaceHandler.java | 30 +-------------- .../CamelContextModelErrorHandlerIssueTest.java | 5 +-- .../camel/web/resources/RouteResource.java | 4 +- .../camel/web/resources/RoutesResource.java | 2 +- .../apache/camel/commands/RouteInfoCommand.java | 2 + .../itest/jaxb/SpringLoadRouteFromXmlTest.java | 4 +- 41 files changed, 197 insertions(+), 203 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/fc7e2dff/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java index d36b8e6..29128bc 100644 --- a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java +++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java @@ -81,7 +81,6 @@ import org.apache.camel.management.DefaultManagementMBeanAssembler; import org.apache.camel.management.DefaultManagementStrategy; import org.apache.camel.management.JmxSystemPropertyKeys; import org.apache.camel.management.ManagementStrategyFactory; -import org.apache.camel.model.Constants; import org.apache.camel.model.DataFormatDefinition; import org.apache.camel.model.FromDefinition; import org.apache.camel.model.ModelCamelContext; @@ -121,6 +120,7 @@ import org.apache.camel.spi.LifecycleStrategy; import org.apache.camel.spi.ManagementMBeanAssembler; import org.apache.camel.spi.ManagementNameStrategy; import org.apache.camel.spi.ManagementStrategy; +import org.apache.camel.spi.ModelJAXBContextFactory; import org.apache.camel.spi.NodeIdFactory; import org.apache.camel.spi.PackageScanClassResolver; import org.apache.camel.spi.ProcessorFactory; @@ -251,6 +251,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon private UnitOfWorkFactory unitOfWorkFactory = new DefaultUnitOfWorkFactory(); private final StopWatch stopWatch = new StopWatch(false); private Date startDate; + private ModelJAXBContextFactory modelJAXBContextFactory; /** * Creates the {@link CamelContext} using {@link JndiRegistry} as registry, @@ -730,7 +731,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon // load routes using JAXB if (jaxbContext == null) { // must use classloader from CamelContext to have JAXB working - jaxbContext = JAXBContext.newInstance(Constants.JAXB_CONTEXT_PACKAGES, CamelContext.class.getClassLoader()); + jaxbContext = getModelJAXBContextFactory().newJAXBContext(); } Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); @@ -3395,6 +3396,17 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon } } + public ModelJAXBContextFactory getModelJAXBContextFactory() { + if (modelJAXBContextFactory == null) { + modelJAXBContextFactory = new DefaultModelJAXBContextFactory(); + } + return modelJAXBContextFactory; + } + + public void setModelJAXBContextFactory(final ModelJAXBContextFactory modelJAXBContextFactory) { + this.modelJAXBContextFactory = modelJAXBContextFactory; + } + public NodeIdFactory getNodeIdFactory() { return nodeIdFactory; } http://git-wip-us.apache.org/repos/asf/camel/blob/fc7e2dff/camel-core/src/main/java/org/apache/camel/impl/DefaultModelJAXBContextFactory.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultModelJAXBContextFactory.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultModelJAXBContextFactory.java new file mode 100644 index 0000000..d5d93fc --- /dev/null +++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultModelJAXBContextFactory.java @@ -0,0 +1,25 @@ +package org.apache.camel.impl; + +import org.apache.camel.model.Constants; +import org.apache.camel.spi.ModelJAXBContextFactory; + +import javax.xml.bind.JAXBContext; +import javax.xml.bind.JAXBException; + +/** + * @author + */ +public class DefaultModelJAXBContextFactory implements ModelJAXBContextFactory { + + public JAXBContext newJAXBContext() throws JAXBException { + return JAXBContext.newInstance(getPackages(), getClassLoader()); + } + + protected String getPackages() { + return Constants.JAXB_CONTEXT_PACKAGES; + } + + protected ClassLoader getClassLoader() { + return getClass().getClassLoader(); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/camel/blob/fc7e2dff/camel-core/src/main/java/org/apache/camel/main/MainSupport.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/main/MainSupport.java b/camel-core/src/main/java/org/apache/camel/main/MainSupport.java index ba9f8ef..3e0cb95 100644 --- a/camel-core/src/main/java/org/apache/camel/main/MainSupport.java +++ b/camel-core/src/main/java/org/apache/camel/main/MainSupport.java @@ -34,8 +34,10 @@ import org.apache.camel.CamelContext; import org.apache.camel.ProducerTemplate; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.impl.DefaultCamelContext; +import org.apache.camel.impl.DefaultModelJAXBContextFactory; import org.apache.camel.model.ModelCamelContext; import org.apache.camel.model.RouteDefinition; +import org.apache.camel.spi.ModelJAXBContextFactory; import org.apache.camel.support.ServiceSupport; import org.apache.camel.util.ObjectHelper; import org.apache.camel.util.ServiceHelper; @@ -421,7 +423,13 @@ public abstract class MainSupport extends ServiceSupport { } } - protected abstract ModelFileGenerator createModelFileGenerator() throws JAXBException; + protected ModelFileGenerator createModelFileGenerator() throws JAXBException { + return new ModelFileGenerator(getModelJAXBContextFactory().newJAXBContext()); + } + + public ModelJAXBContextFactory getModelJAXBContextFactory() { + return new DefaultModelJAXBContextFactory(); + } protected void generateDot(String name, CamelContext camelContext, int size) throws IOException { String outputDir = dotOutputDir; http://git-wip-us.apache.org/repos/asf/camel/blob/fc7e2dff/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java index a967fa0..2314da6 100644 --- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java +++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java @@ -334,7 +334,7 @@ public class ManagedCamelContext extends ManagedPerformanceCounter implements Ti // use a routes definition to dump the rests RestsDefinition def = new RestsDefinition(); def.setRests(rests); - return ModelHelper.dumpModelAsXml(def); + return ModelHelper.dumpModelAsXml(context, def); } public String dumpRoutesAsXml() throws Exception { @@ -346,7 +346,7 @@ public class ManagedCamelContext extends ManagedPerformanceCounter implements Ti // use a routes definition to dump the routes RoutesDefinition def = new RoutesDefinition(); def.setRoutes(routes); - return ModelHelper.dumpModelAsXml(def); + return ModelHelper.dumpModelAsXml(context, def); } public void addOrUpdateRoutesFromXml(String xml) throws Exception { http://git-wip-us.apache.org/repos/asf/camel/blob/fc7e2dff/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java index 3b57332..d186188 100644 --- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java +++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java @@ -236,14 +236,14 @@ public class ManagedRoute extends ManagedPerformanceCounter implements TimerList String id = route.getId(); RouteDefinition def = context.getRouteDefinition(id); if (def != null) { - return ModelHelper.dumpModelAsXml(def); + return ModelHelper.dumpModelAsXml(context, def); } return null; } public void updateRouteFromXml(String xml) throws Exception { // convert to model from xml - RouteDefinition def = ModelHelper.createModelFromXml(xml, RouteDefinition.class); + RouteDefinition def = ModelHelper.createModelFromXml(context, xml, RouteDefinition.class); if (def == null) { return; } http://git-wip-us.apache.org/repos/asf/camel/blob/fc7e2dff/camel-core/src/main/java/org/apache/camel/model/ModelCamelContext.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/ModelCamelContext.java b/camel-core/src/main/java/org/apache/camel/model/ModelCamelContext.java index 912aa62..977edaa 100644 --- a/camel-core/src/main/java/org/apache/camel/model/ModelCamelContext.java +++ b/camel-core/src/main/java/org/apache/camel/model/ModelCamelContext.java @@ -23,6 +23,7 @@ import java.util.Map; import org.apache.camel.CamelContext; import org.apache.camel.model.rest.RestDefinition; +import org.apache.camel.spi.ModelJAXBContextFactory; /** * Model level interface for the {@link CamelContext} @@ -30,6 +31,13 @@ import org.apache.camel.model.rest.RestDefinition; public interface ModelCamelContext extends CamelContext { /** + * @return the JAXB Context factory used to create Models. + */ + ModelJAXBContextFactory getModelJAXBContextFactory(); + + void setModelJAXBContextFactory(ModelJAXBContextFactory modelJAXBContextFactory); + + /** * Returns a list of the current route definitions * * @return list of the current route definitions http://git-wip-us.apache.org/repos/asf/camel/blob/fc7e2dff/camel-core/src/main/java/org/apache/camel/model/ModelHelper.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/ModelHelper.java b/camel-core/src/main/java/org/apache/camel/model/ModelHelper.java index 73cca21..91aed54 100644 --- a/camel-core/src/main/java/org/apache/camel/model/ModelHelper.java +++ b/camel-core/src/main/java/org/apache/camel/model/ModelHelper.java @@ -16,16 +16,15 @@ */ package org.apache.camel.model; -import java.io.InputStream; -import java.io.StringReader; -import java.io.StringWriter; +import org.apache.camel.NamedNode; + import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; - -import org.apache.camel.CamelContext; -import org.apache.camel.NamedNode; +import java.io.InputStream; +import java.io.StringReader; +import java.io.StringWriter; /** * Helper for the Camel {@link org.apache.camel.model model} classes. @@ -43,8 +42,8 @@ public final class ModelHelper { * @return the output in XML (is formatted) * @throws JAXBException is throw if error marshalling to XML */ - public static String dumpModelAsXml(NamedNode definition) throws JAXBException { - JAXBContext jaxbContext = createJaxbContext(); + public static String dumpModelAsXml(ModelCamelContext modelCamelContext, NamedNode definition) throws JAXBException { + JAXBContext jaxbContext = modelCamelContext.getModelJAXBContextFactory().newJAXBContext(); Marshaller marshaller = jaxbContext.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); @@ -62,8 +61,8 @@ public final class ModelHelper { * @return the model definition * @throws javax.xml.bind.JAXBException is thrown if error unmarshalling from xml to model */ - public static <T extends NamedNode> T createModelFromXml(String xml, Class<T> type) throws JAXBException { - JAXBContext jaxbContext = createJaxbContext(); + public static <T extends NamedNode> T createModelFromXml(ModelCamelContext modelCamelContext, String xml, Class<T> type) throws JAXBException { + JAXBContext jaxbContext = modelCamelContext.getModelJAXBContextFactory().newJAXBContext(); StringReader reader = new StringReader(xml); Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); Object result = unmarshaller.unmarshal(reader); @@ -83,15 +82,10 @@ public final class ModelHelper { * @return the model definition * @throws javax.xml.bind.JAXBException is thrown if error unmarshalling from xml to model */ - public static <T extends NamedNode> T createModelFromXml(InputStream stream, Class<T> type) throws JAXBException { - JAXBContext jaxbContext = createJaxbContext(); + public static <T extends NamedNode> T createModelFromXml(ModelCamelContext modelCamelContext, InputStream stream, Class<T> type) throws JAXBException { + JAXBContext jaxbContext = modelCamelContext.getModelJAXBContextFactory().newJAXBContext(); Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); Object result = unmarshaller.unmarshal(stream); return type.cast(result); } - - public static JAXBContext createJaxbContext() throws JAXBException { - // must use classloader from CamelContext to have JAXB working - return JAXBContext.newInstance(Constants.JAXB_CONTEXT_PACKAGES, CamelContext.class.getClassLoader()); - } } http://git-wip-us.apache.org/repos/asf/camel/blob/fc7e2dff/camel-core/src/main/java/org/apache/camel/model/RestContextRefDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/RestContextRefDefinition.java b/camel-core/src/main/java/org/apache/camel/model/RestContextRefDefinition.java index e4fabdd..d6b798e 100644 --- a/camel-core/src/main/java/org/apache/camel/model/RestContextRefDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/RestContextRefDefinition.java @@ -22,7 +22,6 @@ import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlRootElement; -import org.apache.camel.CamelContext; import org.apache.camel.model.rest.RestDefinition; import org.apache.camel.spi.Metadata; @@ -57,7 +56,7 @@ public class RestContextRefDefinition { this.ref = ref; } - public List<RestDefinition> lookupRests(CamelContext camelContext) { + public List<RestDefinition> lookupRests(ModelCamelContext camelContext) { return RestContextRefDefinitionHelper.lookupRests(camelContext, ref); } http://git-wip-us.apache.org/repos/asf/camel/blob/fc7e2dff/camel-core/src/main/java/org/apache/camel/model/RestContextRefDefinitionHelper.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/RestContextRefDefinitionHelper.java b/camel-core/src/main/java/org/apache/camel/model/RestContextRefDefinitionHelper.java index f7a66f3..2a38fe8 100644 --- a/camel-core/src/main/java/org/apache/camel/model/RestContextRefDefinitionHelper.java +++ b/camel-core/src/main/java/org/apache/camel/model/RestContextRefDefinitionHelper.java @@ -28,7 +28,6 @@ import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; -import org.apache.camel.CamelContext; import org.apache.camel.model.language.NamespaceAwareExpression; import org.apache.camel.model.rest.RestDefinition; import org.apache.camel.model.rest.VerbDefinition; @@ -49,17 +48,17 @@ public final class RestContextRefDefinitionHelper { * Lookup the rests from the {@link org.apache.camel.model.RestContextRefDefinition}. * <p/> * This implementation must be used to lookup the rests as it performs a deep clone of the rests - * as a {@link org.apache.camel.model.RestContextRefDefinition} can be re-used with multiple {@link org.apache.camel.CamelContext} and each + * as a {@link org.apache.camel.model.RestContextRefDefinition} can be re-used with multiple {@link org.apache.camel.model.ModelCamelContext} and each * context should have their own instances of the routes. This is to ensure no side-effects and sharing * of instances between the contexts. For example such as property placeholders may be context specific - * so the routes should not use placeholders from another {@link org.apache.camel.CamelContext}. + * so the routes should not use placeholders from another {@link org.apache.camel.model.ModelCamelContext}. * * @param camelContext the CamelContext * @param ref the id of the {@link org.apache.camel.model.RestContextRefDefinition} to lookup and get the routes. * @return the rests. */ @SuppressWarnings("unchecked") - public static synchronized List<RestDefinition> lookupRests(CamelContext camelContext, String ref) { + public static synchronized List<RestDefinition> lookupRests(ModelCamelContext camelContext, String ref) { ObjectHelper.notNull(camelContext, "camelContext"); ObjectHelper.notNull(ref, "ref"); @@ -73,7 +72,7 @@ public final class RestContextRefDefinitionHelper { // the CamelContext - for example property placeholder resolutions etc. List<RestDefinition> clones = new ArrayList<RestDefinition>(answer.size()); try { - JAXBContext jaxb = getOrCreateJAXBContext(); + JAXBContext jaxb = getOrCreateJAXBContext(camelContext); for (RestDefinition def : answer) { RestDefinition clone = cloneRestDefinition(jaxb, def); if (clone != null) { @@ -87,10 +86,10 @@ public final class RestContextRefDefinitionHelper { return clones; } - private static synchronized JAXBContext getOrCreateJAXBContext() throws JAXBException { + private static synchronized JAXBContext getOrCreateJAXBContext(final ModelCamelContext camelContext) throws JAXBException { if (jaxbContext == null) { // must use classloader from CamelContext to have JAXB working - jaxbContext = JAXBContext.newInstance(Constants.JAXB_CONTEXT_PACKAGES, CamelContext.class.getClassLoader()); + jaxbContext = camelContext.getModelJAXBContextFactory().newJAXBContext(); } return jaxbContext; } http://git-wip-us.apache.org/repos/asf/camel/blob/fc7e2dff/camel-core/src/main/java/org/apache/camel/model/RouteContextRefDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/RouteContextRefDefinition.java b/camel-core/src/main/java/org/apache/camel/model/RouteContextRefDefinition.java index 9b45aea..50719c4 100644 --- a/camel-core/src/main/java/org/apache/camel/model/RouteContextRefDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/RouteContextRefDefinition.java @@ -56,7 +56,7 @@ public class RouteContextRefDefinition { this.ref = ref; } - public List<RouteDefinition> lookupRoutes(CamelContext camelContext) { + public List<RouteDefinition> lookupRoutes(ModelCamelContext camelContext) { return RouteContextRefDefinitionHelper.lookupRoutes(camelContext, ref); } http://git-wip-us.apache.org/repos/asf/camel/blob/fc7e2dff/camel-core/src/main/java/org/apache/camel/model/RouteContextRefDefinitionHelper.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/RouteContextRefDefinitionHelper.java b/camel-core/src/main/java/org/apache/camel/model/RouteContextRefDefinitionHelper.java index d90dea5..19aa9eb 100644 --- a/camel-core/src/main/java/org/apache/camel/model/RouteContextRefDefinitionHelper.java +++ b/camel-core/src/main/java/org/apache/camel/model/RouteContextRefDefinitionHelper.java @@ -28,7 +28,6 @@ import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; -import org.apache.camel.CamelContext; import org.apache.camel.model.language.NamespaceAwareExpression; import org.apache.camel.util.CamelContextHelper; import org.apache.camel.util.ObjectHelper; @@ -47,17 +46,17 @@ public final class RouteContextRefDefinitionHelper { * Lookup the routes from the {@link RouteContextRefDefinition}. * <p/> * This implementation must be used to lookup the routes as it performs a deep clone of the routes - * as a {@link RouteContextRefDefinition} can be re-used with multiple {@link CamelContext} and each + * as a {@link RouteContextRefDefinition} can be re-used with multiple {@link ModelCamelContext} and each * context should have their own instances of the routes. This is to ensure no side-effects and sharing * of instances between the contexts. For example such as property placeholders may be context specific - * so the routes should not use placeholders from another {@link CamelContext}. + * so the routes should not use placeholders from another {@link ModelCamelContext}. * * @param camelContext the CamelContext * @param ref the id of the {@link RouteContextRefDefinition} to lookup and get the routes. * @return the routes. */ @SuppressWarnings("unchecked") - public static synchronized List<RouteDefinition> lookupRoutes(CamelContext camelContext, String ref) { + public static synchronized List<RouteDefinition> lookupRoutes(ModelCamelContext camelContext, String ref) { ObjectHelper.notNull(camelContext, "camelContext"); ObjectHelper.notNull(ref, "ref"); @@ -71,7 +70,7 @@ public final class RouteContextRefDefinitionHelper { // the CamelContext - for example property placeholder resolutions etc. List<RouteDefinition> clones = new ArrayList<RouteDefinition>(answer.size()); try { - JAXBContext jaxb = getOrCreateJAXBContext(); + JAXBContext jaxb = getOrCreateJAXBContext(camelContext); for (RouteDefinition def : answer) { RouteDefinition clone = cloneRouteDefinition(jaxb, def); if (clone != null) { @@ -85,10 +84,9 @@ public final class RouteContextRefDefinitionHelper { return clones; } - private static synchronized JAXBContext getOrCreateJAXBContext() throws JAXBException { + private static synchronized JAXBContext getOrCreateJAXBContext(final ModelCamelContext camelContext) throws JAXBException { if (jaxbContext == null) { - // must use classloader from CamelContext to have JAXB working - jaxbContext = JAXBContext.newInstance(Constants.JAXB_CONTEXT_PACKAGES, CamelContext.class.getClassLoader()); + jaxbContext = camelContext.getModelJAXBContextFactory().newJAXBContext(); } return jaxbContext; } http://git-wip-us.apache.org/repos/asf/camel/blob/fc7e2dff/camel-core/src/main/java/org/apache/camel/spi/ModelJAXBContextFactory.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/spi/ModelJAXBContextFactory.java b/camel-core/src/main/java/org/apache/camel/spi/ModelJAXBContextFactory.java new file mode 100644 index 0000000..b2ae3ad --- /dev/null +++ b/camel-core/src/main/java/org/apache/camel/spi/ModelJAXBContextFactory.java @@ -0,0 +1,14 @@ +package org.apache.camel.spi; + +import javax.xml.bind.JAXBContext; +import javax.xml.bind.JAXBException; + +/** + * Factory to abstract the creation of the Model's JAXBContext. + * + * @author + */ +public interface ModelJAXBContextFactory +{ + JAXBContext newJAXBContext() throws JAXBException; +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/camel/blob/fc7e2dff/camel-core/src/test/java/org/apache/camel/impl/CamelContextAddRouteDefinitionsFromXmlTest.java ---------------------------------------------------------------------- diff --git a/camel-core/src/test/java/org/apache/camel/impl/CamelContextAddRouteDefinitionsFromXmlTest.java b/camel-core/src/test/java/org/apache/camel/impl/CamelContextAddRouteDefinitionsFromXmlTest.java index f189b25..3e8ba88 100644 --- a/camel-core/src/test/java/org/apache/camel/impl/CamelContextAddRouteDefinitionsFromXmlTest.java +++ b/camel-core/src/test/java/org/apache/camel/impl/CamelContextAddRouteDefinitionsFromXmlTest.java @@ -24,7 +24,6 @@ import javax.xml.bind.Unmarshaller; import org.apache.camel.ContextTestSupport; import org.apache.camel.Exchange; import org.apache.camel.Processor; -import org.apache.camel.model.Constants; import org.apache.camel.model.ProcessorDefinition; import org.apache.camel.model.RouteDefinition; @@ -38,11 +37,7 @@ public class CamelContextAddRouteDefinitionsFromXmlTest extends ContextTestSuppo @Override protected void setUp() throws Exception { super.setUp(); - jaxbContext = createJaxbContext(); - } - - public static JAXBContext createJaxbContext() throws JAXBException { - return JAXBContext.newInstance(Constants.JAXB_CONTEXT_PACKAGES); + jaxbContext = context.getModelJAXBContextFactory().newJAXBContext(); } protected Object parseUri(String uri) throws JAXBException { http://git-wip-us.apache.org/repos/asf/camel/blob/fc7e2dff/camel-core/src/test/java/org/apache/camel/impl/MainSupportTest.java ---------------------------------------------------------------------- diff --git a/camel-core/src/test/java/org/apache/camel/impl/MainSupportTest.java b/camel-core/src/test/java/org/apache/camel/impl/MainSupportTest.java index eca2408..756ca42 100644 --- a/camel-core/src/test/java/org/apache/camel/impl/MainSupportTest.java +++ b/camel-core/src/test/java/org/apache/camel/impl/MainSupportTest.java @@ -17,13 +17,11 @@ package org.apache.camel.impl; import java.util.Map; -import javax.xml.bind.JAXBException; import org.apache.camel.CamelContext; import org.apache.camel.ContextTestSupport; import org.apache.camel.ProducerTemplate; import org.apache.camel.main.MainSupport; -import org.apache.camel.view.ModelFileGenerator; /** * @version @@ -39,10 +37,6 @@ public class MainSupportTest extends ContextTestSupport { protected Map<String, CamelContext> getCamelContextMap() { return null; } - - protected ModelFileGenerator createModelFileGenerator() throws JAXBException { - return null; - } } public void testMainSupport() throws Exception { http://git-wip-us.apache.org/repos/asf/camel/blob/fc7e2dff/camel-core/src/test/java/org/apache/camel/model/XmlTestSupport.java ---------------------------------------------------------------------- diff --git a/camel-core/src/test/java/org/apache/camel/model/XmlTestSupport.java b/camel-core/src/test/java/org/apache/camel/model/XmlTestSupport.java index ee8366b..3a35f3e 100644 --- a/camel-core/src/test/java/org/apache/camel/model/XmlTestSupport.java +++ b/camel-core/src/test/java/org/apache/camel/model/XmlTestSupport.java @@ -23,6 +23,7 @@ import javax.xml.bind.JAXBException; import javax.xml.bind.Unmarshaller; import org.apache.camel.TestSupport; +import org.apache.camel.impl.DefaultModelJAXBContextFactory; import org.apache.camel.model.rest.RestContainer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -63,6 +64,6 @@ public abstract class XmlTestSupport extends TestSupport { } public static JAXBContext createJaxbContext() throws JAXBException { - return JAXBContext.newInstance(Constants.JAXB_CONTEXT_PACKAGES); + return new DefaultModelJAXBContextFactory().newJAXBContext(); } } http://git-wip-us.apache.org/repos/asf/camel/blob/fc7e2dff/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlAggregateRouteTest.java ---------------------------------------------------------------------- diff --git a/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlAggregateRouteTest.java b/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlAggregateRouteTest.java index a7a3b06..ecf927e 100644 --- a/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlAggregateRouteTest.java +++ b/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlAggregateRouteTest.java @@ -26,7 +26,7 @@ import org.apache.camel.model.ModelHelper; public class DumpModelAsXmlAggregateRouteTest extends ContextTestSupport { public void testDumpModelAsXml() throws Exception { - String xml = ModelHelper.dumpModelAsXml(context.getRouteDefinition("myRoute")); + String xml = ModelHelper.dumpModelAsXml(context, context.getRouteDefinition("myRoute")); assertNotNull(xml); log.info(xml); http://git-wip-us.apache.org/repos/asf/camel/blob/fc7e2dff/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlChoiceFilterRouteTest.java ---------------------------------------------------------------------- diff --git a/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlChoiceFilterRouteTest.java b/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlChoiceFilterRouteTest.java index 317bc71..f589c85 100644 --- a/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlChoiceFilterRouteTest.java +++ b/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlChoiceFilterRouteTest.java @@ -26,7 +26,7 @@ import org.apache.camel.model.ModelHelper; public class DumpModelAsXmlChoiceFilterRouteTest extends ContextTestSupport { public void testDumpModelAsXml() throws Exception { - String xml = ModelHelper.dumpModelAsXml(context.getRouteDefinition("myRoute")); + String xml = ModelHelper.dumpModelAsXml(context, context.getRouteDefinition("myRoute")); assertNotNull(xml); log.info(xml); @@ -36,7 +36,7 @@ public class DumpModelAsXmlChoiceFilterRouteTest extends ContextTestSupport { } public void testDumpModelAsXmAl() throws Exception { - String xml = ModelHelper.dumpModelAsXml(context.getRouteDefinition("a")); + String xml = ModelHelper.dumpModelAsXml(context, context.getRouteDefinition("a")); assertNotNull(xml); log.info(xml); http://git-wip-us.apache.org/repos/asf/camel/blob/fc7e2dff/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlRouteExpressionTest.java ---------------------------------------------------------------------- diff --git a/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlRouteExpressionTest.java b/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlRouteExpressionTest.java index 7d7cb84..530eb77 100644 --- a/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlRouteExpressionTest.java +++ b/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlRouteExpressionTest.java @@ -35,7 +35,7 @@ public class DumpModelAsXmlRouteExpressionTest extends ContextTestSupport { } public void testDumpModelAsXml() throws Exception { - String xml = ModelHelper.dumpModelAsXml(context.getRouteDefinition("myRoute")); + String xml = ModelHelper.dumpModelAsXml(context, context.getRouteDefinition("myRoute")); assertNotNull(xml); log.info(xml); @@ -43,7 +43,7 @@ public class DumpModelAsXmlRouteExpressionTest extends ContextTestSupport { } public void testDumpModelAsXmlXPath() throws Exception { - String xml = ModelHelper.dumpModelAsXml(context.getRouteDefinition("myOtherRoute")); + String xml = ModelHelper.dumpModelAsXml(context, context.getRouteDefinition("myOtherRoute")); assertNotNull(xml); log.info(xml); @@ -51,7 +51,7 @@ public class DumpModelAsXmlRouteExpressionTest extends ContextTestSupport { } public void testDumpModelAsXmlHeader() throws Exception { - String xml = ModelHelper.dumpModelAsXml(context.getRouteDefinition("myFooRoute")); + String xml = ModelHelper.dumpModelAsXml(context, context.getRouteDefinition("myFooRoute")); assertNotNull(xml); log.info(xml); @@ -59,7 +59,7 @@ public class DumpModelAsXmlRouteExpressionTest extends ContextTestSupport { } public void testDumpModelAsXmlBean() throws Exception { - String xml = ModelHelper.dumpModelAsXml(context.getRouteDefinition("myBeanRoute")); + String xml = ModelHelper.dumpModelAsXml(context, context.getRouteDefinition("myBeanRoute")); assertNotNull(xml); log.info(xml); http://git-wip-us.apache.org/repos/asf/camel/blob/fc7e2dff/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlRoutePredicateTest.java ---------------------------------------------------------------------- diff --git a/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlRoutePredicateTest.java b/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlRoutePredicateTest.java index 3f842e1..7520e74 100644 --- a/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlRoutePredicateTest.java +++ b/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlRoutePredicateTest.java @@ -35,7 +35,7 @@ public class DumpModelAsXmlRoutePredicateTest extends ContextTestSupport { } public void testDumpModelAsXml() throws Exception { - String xml = ModelHelper.dumpModelAsXml(context.getRouteDefinition("myRoute")); + String xml = ModelHelper.dumpModelAsXml(context, context.getRouteDefinition("myRoute")); assertNotNull(xml); log.info(xml); @@ -43,7 +43,7 @@ public class DumpModelAsXmlRoutePredicateTest extends ContextTestSupport { } public void testDumpModelAsXmlXPath() throws Exception { - String xml = ModelHelper.dumpModelAsXml(context.getRouteDefinition("myOtherRoute")); + String xml = ModelHelper.dumpModelAsXml(context, context.getRouteDefinition("myOtherRoute")); assertNotNull(xml); log.info(xml); @@ -51,7 +51,7 @@ public class DumpModelAsXmlRoutePredicateTest extends ContextTestSupport { } public void testDumpModelAsXmlHeader() throws Exception { - String xml = ModelHelper.dumpModelAsXml(context.getRouteDefinition("myFooRoute")); + String xml = ModelHelper.dumpModelAsXml(context, context.getRouteDefinition("myFooRoute")); assertNotNull(xml); log.info(xml); @@ -59,7 +59,7 @@ public class DumpModelAsXmlRoutePredicateTest extends ContextTestSupport { } public void testDumpModelAsXmlBean() throws Exception { - String xml = ModelHelper.dumpModelAsXml(context.getRouteDefinition("myBeanRoute")); + String xml = ModelHelper.dumpModelAsXml(context, context.getRouteDefinition("myBeanRoute")); assertNotNull(xml); log.info(xml); http://git-wip-us.apache.org/repos/asf/camel/blob/fc7e2dff/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlSplitBodyRouteTest.java ---------------------------------------------------------------------- diff --git a/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlSplitBodyRouteTest.java b/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlSplitBodyRouteTest.java index bfe2a2d..451463f 100644 --- a/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlSplitBodyRouteTest.java +++ b/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlSplitBodyRouteTest.java @@ -31,7 +31,7 @@ import org.apache.camel.model.ModelHelper; public class DumpModelAsXmlSplitBodyRouteTest extends ContextTestSupport { public void testDumpModelAsXml() throws Exception { - String xml = ModelHelper.dumpModelAsXml(context.getRouteDefinition("myRoute")); + String xml = ModelHelper.dumpModelAsXml(context, context.getRouteDefinition("myRoute")); assertNotNull(xml); log.info(xml); http://git-wip-us.apache.org/repos/asf/camel/blob/fc7e2dff/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlSplitNestedChoiceEndRouteTest.java ---------------------------------------------------------------------- diff --git a/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlSplitNestedChoiceEndRouteTest.java b/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlSplitNestedChoiceEndRouteTest.java index 2d7576b..474f593 100644 --- a/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlSplitNestedChoiceEndRouteTest.java +++ b/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlSplitNestedChoiceEndRouteTest.java @@ -31,7 +31,7 @@ import org.apache.camel.model.ModelHelper; public class DumpModelAsXmlSplitNestedChoiceEndRouteTest extends ContextTestSupport { public void testDumpModelAsXml() throws Exception { - String xml = ModelHelper.dumpModelAsXml(context.getRouteDefinition("myRoute")); + String xml = ModelHelper.dumpModelAsXml(context, context.getRouteDefinition("myRoute")); assertNotNull(xml); log.info(xml); http://git-wip-us.apache.org/repos/asf/camel/blob/fc7e2dff/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlTransformRouteTest.java ---------------------------------------------------------------------- diff --git a/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlTransformRouteTest.java b/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlTransformRouteTest.java index 3c0851c..90d81d3 100644 --- a/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlTransformRouteTest.java +++ b/camel-core/src/test/java/org/apache/camel/util/DumpModelAsXmlTransformRouteTest.java @@ -31,7 +31,7 @@ import org.apache.camel.model.ModelHelper; public class DumpModelAsXmlTransformRouteTest extends ContextTestSupport { public void testDumpModelAsXml() throws Exception { - String xml = ModelHelper.dumpModelAsXml(context.getRouteDefinition("myRoute")); + String xml = ModelHelper.dumpModelAsXml(context, context.getRouteDefinition("myRoute")); assertNotNull(xml); log.info(xml); http://git-wip-us.apache.org/repos/asf/camel/blob/fc7e2dff/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintCamelContext.java ---------------------------------------------------------------------- diff --git a/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintCamelContext.java b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintCamelContext.java index 5f3b33e..db5342f 100644 --- a/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintCamelContext.java +++ b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintCamelContext.java @@ -68,6 +68,7 @@ public class BlueprintCamelContext extends DefaultCamelContext implements Servic setLanguageResolver(new BlueprintLanguageResolver(bundleContext)); setDataFormatResolver(new BlueprintDataFormatResolver(bundleContext)); setApplicationContextClassLoader(new BundleDelegatingClassLoader(bundleContext.getBundle())); + setModelJAXBContextFactory(new BlueprintModelJAXBContextFactory()); } public BundleContext getBundleContext() { http://git-wip-us.apache.org/repos/asf/camel/blob/fc7e2dff/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintModelJAXBContextFactory.java ---------------------------------------------------------------------- diff --git a/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintModelJAXBContextFactory.java b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintModelJAXBContextFactory.java new file mode 100644 index 0000000..f3b6c88 --- /dev/null +++ b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintModelJAXBContextFactory.java @@ -0,0 +1,22 @@ +package org.apache.camel.blueprint; + +import org.apache.camel.impl.DefaultModelJAXBContextFactory; + +/** + * @author + */ +public class BlueprintModelJAXBContextFactory extends DefaultModelJAXBContextFactory{ + + public static final String ADDITIONAL_JAXB_CONTEXT_PACKAGES = ":" + + "org.apache.camel.core.xml:" + + "org.apache.camel.blueprint:" + + "org.apache.camel.util.blueprint:"; + + protected String getPackages() { + return super.getPackages() + ADDITIONAL_JAXB_CONTEXT_PACKAGES; + } + + protected ClassLoader getClassLoader() { + return getClass().getClassLoader(); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/camel/blob/fc7e2dff/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java ---------------------------------------------------------------------- diff --git a/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java index b978be4..8d0dceb 100644 --- a/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java +++ b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java @@ -54,6 +54,7 @@ import org.apache.camel.Endpoint; import org.apache.camel.EndpointInject; import org.apache.camel.Produce; import org.apache.camel.PropertyInject; +import org.apache.camel.blueprint.BlueprintModelJAXBContextFactory; import org.apache.camel.blueprint.BlueprintCamelContext; import org.apache.camel.blueprint.CamelContextFactoryBean; import org.apache.camel.blueprint.CamelEndpointFactoryBean; @@ -632,38 +633,11 @@ public class CamelNamespaceHandler implements NamespaceHandler { public JAXBContext getJaxbContext() throws JAXBException { if (jaxbContext == null) { - jaxbContext = createJaxbContext(); + jaxbContext = new BlueprintModelJAXBContextFactory().newJAXBContext(); } return jaxbContext; } - protected JAXBContext createJaxbContext() throws JAXBException { - StringBuilder packages = new StringBuilder(); - for (Class<?> cl : getJaxbPackages()) { - if (packages.length() > 0) { - packages.append(":"); - } - packages.append(cl.getName().substring(0, cl.getName().lastIndexOf('.'))); - } - return JAXBContext.newInstance(packages.toString(), getClass().getClassLoader()); - } - - protected Set<Class<?>> getJaxbPackages() { - // we nedd to have a class from each different package with jaxb models - Set<Class<?>> classes = new HashSet<Class<?>>(); - classes.add(CamelContextFactoryBean.class); - classes.add(AbstractCamelContextFactoryBean.class); - classes.add(org.apache.camel.ExchangePattern.class); - classes.add(org.apache.camel.model.RouteDefinition.class); - classes.add(org.apache.camel.model.config.StreamResequencerConfig.class); - classes.add(org.apache.camel.model.dataformat.DataFormatsDefinition.class); - classes.add(org.apache.camel.model.language.ExpressionDefinition.class); - classes.add(org.apache.camel.model.loadbalancer.RoundRobinLoadBalancerDefinition.class); - classes.add(org.apache.camel.model.rest.RestDefinition.class); - classes.add(SSLContextParametersFactoryBean.class); - return classes; - } - private RefMetadata createRef(ParserContext context, String value) { MutableRefMetadata r = context.createMetadata(MutableRefMetadata.class); r.setComponentId(value); http://git-wip-us.apache.org/repos/asf/camel/blob/fc7e2dff/components/camel-blueprint/src/test/java/org/apache/camel/blueprint/BlueprintJaxbRestTest.java ---------------------------------------------------------------------- diff --git a/components/camel-blueprint/src/test/java/org/apache/camel/blueprint/BlueprintJaxbRestTest.java b/components/camel-blueprint/src/test/java/org/apache/camel/blueprint/BlueprintJaxbRestTest.java index d303cfa..3ee9f75 100644 --- a/components/camel-blueprint/src/test/java/org/apache/camel/blueprint/BlueprintJaxbRestTest.java +++ b/components/camel-blueprint/src/test/java/org/apache/camel/blueprint/BlueprintJaxbRestTest.java @@ -54,13 +54,7 @@ public class BlueprintJaxbRestTest extends TestSupport { } CamelNamespaceHandler.doBeforeParse(elem, CamelNamespaceHandler.BLUEPRINT_NS, CamelNamespaceHandler.SPRING_NS); - JAXBContext context = JAXBContext.newInstance("org.apache.camel.blueprint:" - + "org.apache.camel:org.apache.camel.model:" - + "org.apache.camel.model.config:" - + "org.apache.camel.model.dataformat:" - + "org.apache.camel.model.language:" - + "org.apache.camel.model.loadbalancer:" - + "org.apache.camel.model.rest"); + JAXBContext context = new BlueprintModelJAXBContextFactory().newJAXBContext(); Unmarshaller unmarshaller = context.createUnmarshaller(); Object object = unmarshaller.unmarshal(elem); assertNotNull(object); http://git-wip-us.apache.org/repos/asf/camel/blob/fc7e2dff/components/camel-blueprint/src/test/java/org/apache/camel/blueprint/BlueprintJaxbTest.java ---------------------------------------------------------------------- diff --git a/components/camel-blueprint/src/test/java/org/apache/camel/blueprint/BlueprintJaxbTest.java b/components/camel-blueprint/src/test/java/org/apache/camel/blueprint/BlueprintJaxbTest.java index d79fc96..7e4194a 100644 --- a/components/camel-blueprint/src/test/java/org/apache/camel/blueprint/BlueprintJaxbTest.java +++ b/components/camel-blueprint/src/test/java/org/apache/camel/blueprint/BlueprintJaxbTest.java @@ -54,13 +54,7 @@ public class BlueprintJaxbTest extends TestSupport { } CamelNamespaceHandler.doBeforeParse(elem, CamelNamespaceHandler.BLUEPRINT_NS, CamelNamespaceHandler.SPRING_NS); - JAXBContext context = JAXBContext.newInstance("org.apache.camel.blueprint:" - + "org.apache.camel:org.apache.camel.model:" - + "org.apache.camel.model.config:" - + "org.apache.camel.model.dataformat:" - + "org.apache.camel.model.language:" - + "org.apache.camel.model.loadbalancer:" - + "org.apache.camel.model.rest"); + JAXBContext context = new BlueprintModelJAXBContextFactory().newJAXBContext(); Unmarshaller unmarshaller = context.createUnmarshaller(); Object object = unmarshaller.unmarshal(elem); assertNotNull(object); http://git-wip-us.apache.org/repos/asf/camel/blob/fc7e2dff/components/camel-cdi/src/main/java/org/apache/camel/cdi/Main.java ---------------------------------------------------------------------- diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/Main.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/Main.java index e3c6a4c..61148ac 100644 --- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/Main.java +++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/Main.java @@ -17,17 +17,15 @@ package org.apache.camel.cdi; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Set; import javax.xml.bind.JAXBContext; -import javax.xml.bind.JAXBException; import org.apache.camel.CamelContext; import org.apache.camel.ProducerTemplate; +import org.apache.camel.impl.DefaultModelJAXBContextFactory; import org.apache.camel.main.MainSupport; -import org.apache.camel.view.ModelFileGenerator; +import org.apache.camel.spi.ModelJAXBContextFactory; import org.apache.deltaspike.core.api.provider.BeanProvider; /** @@ -82,38 +80,8 @@ public abstract class Main extends MainSupport { // abstract to prevent cdi mana return answer; } - @Override - protected ModelFileGenerator createModelFileGenerator() throws JAXBException { - return new ModelFileGenerator(getJaxbContext()); - } - - public JAXBContext getJaxbContext() throws JAXBException { - if (jaxbContext == null) { - jaxbContext = createJaxbContext(); - } - return jaxbContext; - } - - protected JAXBContext createJaxbContext() throws JAXBException { - StringBuilder packages = new StringBuilder(); - for (Class<?> cl : getJaxbPackages()) { - if (packages.length() > 0) { - packages.append(":"); - } - packages.append(cl.getPackage().getName()); - } - return JAXBContext.newInstance(packages.toString(), getClass().getClassLoader()); - } - - protected Set<Class<?>> getJaxbPackages() { - Set<Class<?>> classes = new HashSet<Class<?>>(); - classes.add(org.apache.camel.ExchangePattern.class); - classes.add(org.apache.camel.model.RouteDefinition.class); - classes.add(org.apache.camel.model.config.StreamResequencerConfig.class); - classes.add(org.apache.camel.model.dataformat.DataFormatsDefinition.class); - classes.add(org.apache.camel.model.language.ExpressionDefinition.class); - classes.add(org.apache.camel.model.loadbalancer.RoundRobinLoadBalancerDefinition.class); - return classes; + public ModelJAXBContextFactory getModelJAXBContextFactory() { + return new DefaultModelJAXBContextFactory(); } @Override http://git-wip-us.apache.org/repos/asf/camel/blob/fc7e2dff/components/camel-cdi/src/main/java/org/apache/camel/cdi/RoutesXml.java ---------------------------------------------------------------------- diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/RoutesXml.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/RoutesXml.java index 3f6fb5d..48f6377 100644 --- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/RoutesXml.java +++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/RoutesXml.java @@ -24,6 +24,7 @@ import java.io.InputStream; import java.net.URL; import javax.xml.bind.JAXBException; +import org.apache.camel.model.ModelCamelContext; import org.apache.camel.model.ModelHelper; import org.apache.camel.model.RoutesDefinition; import org.apache.camel.util.ObjectHelper; @@ -40,48 +41,48 @@ public final class RoutesXml { /** * Loads the routes from the given XML content */ - public static RoutesDefinition loadRoutesFromXML(String xml) throws JAXBException { - return ModelHelper.createModelFromXml(xml, RoutesDefinition.class); + public static RoutesDefinition loadRoutesFromXML(ModelCamelContext camelContext, String xml) throws JAXBException { + return ModelHelper.createModelFromXml(camelContext, xml, RoutesDefinition.class); } /** * Loads the routes from the classpath */ - public static RoutesDefinition loadRoutesFromClasspath(String uri) throws JAXBException { + public static RoutesDefinition loadRoutesFromClasspath(ModelCamelContext camelContext, String uri) throws JAXBException { InputStream stream = ObjectHelper.loadResourceAsStream(uri); ObjectHelper.notNull(stream, "Could not find resource '" + uri + "' on the ClassLoader"); - return ModelHelper.createModelFromXml(stream, RoutesDefinition.class); + return ModelHelper.createModelFromXml(camelContext, stream, RoutesDefinition.class); } /** * Loads the routes from a {@link URL} */ - public static RoutesDefinition loadRoutesFromURL(URL url) throws JAXBException, IOException { + public static RoutesDefinition loadRoutesFromURL(ModelCamelContext camelContext, URL url) throws JAXBException, IOException { ObjectHelper.notNull(url, "url"); - return ModelHelper.createModelFromXml(url.openStream(), RoutesDefinition.class); + return ModelHelper.createModelFromXml(camelContext, url.openStream(), RoutesDefinition.class); } /** * Loads the routes from a {@link URL} */ - public static RoutesDefinition loadRoutesFromURL(String url) throws IOException, JAXBException { - return loadRoutesFromURL(new URL(url)); + public static RoutesDefinition loadRoutesFromURL(ModelCamelContext camelContext, String url) throws IOException, JAXBException { + return loadRoutesFromURL(camelContext, new URL(url)); } /** * Loads the routes from a {@link File} */ - public static RoutesDefinition loadRoutesFromFile(File file) throws JAXBException, FileNotFoundException { + public static RoutesDefinition loadRoutesFromFile(ModelCamelContext camelContext, File file) throws JAXBException, FileNotFoundException { ObjectHelper.notNull(file, "file"); - return ModelHelper.createModelFromXml(new FileInputStream(file), RoutesDefinition.class); + return ModelHelper.createModelFromXml(camelContext, new FileInputStream(file), RoutesDefinition.class); } /** * Loads the routes from a {@link File} */ - public static RoutesDefinition loadRoutesFromFile(String fileName) + public static RoutesDefinition loadRoutesFromFile(ModelCamelContext camelContext, String fileName) throws JAXBException, FileNotFoundException { - return loadRoutesFromFile(new File(fileName)); + return loadRoutesFromFile(camelContext, new File(fileName)); } } http://git-wip-us.apache.org/repos/asf/camel/blob/fc7e2dff/components/camel-cdi/src/test/java/org/apache/camel/cdi/XmlRoutesFromClassPathTest.java ---------------------------------------------------------------------- diff --git a/components/camel-cdi/src/test/java/org/apache/camel/cdi/XmlRoutesFromClassPathTest.java b/components/camel-cdi/src/test/java/org/apache/camel/cdi/XmlRoutesFromClassPathTest.java index 2fce24c..1c6abfa 100644 --- a/components/camel-cdi/src/test/java/org/apache/camel/cdi/XmlRoutesFromClassPathTest.java +++ b/components/camel-cdi/src/test/java/org/apache/camel/cdi/XmlRoutesFromClassPathTest.java @@ -41,7 +41,7 @@ public class XmlRoutesFromClassPathTest extends CdiTestSupport { @Produces @ContextName public RoutesDefinition createRoutes() throws Exception { - return RoutesXml.loadRoutesFromClasspath("routes.xml"); + return RoutesXml.loadRoutesFromClasspath(new CdiCamelContext(), "routes.xml"); } @Test http://git-wip-us.apache.org/repos/asf/camel/blob/fc7e2dff/components/camel-cdi/src/test/java/org/apache/camel/cdi/XmlRoutesFromURLTest.java ---------------------------------------------------------------------- diff --git a/components/camel-cdi/src/test/java/org/apache/camel/cdi/XmlRoutesFromURLTest.java b/components/camel-cdi/src/test/java/org/apache/camel/cdi/XmlRoutesFromURLTest.java index 167979f..7603aca 100644 --- a/components/camel-cdi/src/test/java/org/apache/camel/cdi/XmlRoutesFromURLTest.java +++ b/components/camel-cdi/src/test/java/org/apache/camel/cdi/XmlRoutesFromURLTest.java @@ -39,6 +39,6 @@ public class XmlRoutesFromURLTest extends XmlRoutesFromClassPathTest { } assertTrue("The file " + file.getPath() + " does not exist", file.exists()); URL url = file.toURI().toURL(); - return RoutesXml.loadRoutesFromURL(url); + return RoutesXml.loadRoutesFromURL(new CdiCamelContext(), url); } } http://git-wip-us.apache.org/repos/asf/camel/blob/fc7e2dff/components/camel-guice/src/main/java/org/apache/camel/guice/Main.java ---------------------------------------------------------------------- diff --git a/components/camel-guice/src/main/java/org/apache/camel/guice/Main.java b/components/camel-guice/src/main/java/org/apache/camel/guice/Main.java index 4966bd0..3a716fc 100644 --- a/components/camel-guice/src/main/java/org/apache/camel/guice/Main.java +++ b/components/camel-guice/src/main/java/org/apache/camel/guice/Main.java @@ -171,8 +171,4 @@ public class Main extends MainSupport { } return answer; } - - protected ModelFileGenerator createModelFileGenerator() throws JAXBException { - return new ModelFileGenerator(JAXBContext.newInstance(Constants.JAXB_CONTEXT_PACKAGES)); - } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/camel/blob/fc7e2dff/components/camel-spring/src/main/java/org/apache/camel/spring/Main.java ---------------------------------------------------------------------- diff --git a/components/camel-spring/src/main/java/org/apache/camel/spring/Main.java b/components/camel-spring/src/main/java/org/apache/camel/spring/Main.java index 23475ca..9a2f327 100644 --- a/components/camel-spring/src/main/java/org/apache/camel/spring/Main.java +++ b/components/camel-spring/src/main/java/org/apache/camel/spring/Main.java @@ -32,7 +32,6 @@ import javax.xml.bind.JAXBException; import org.apache.camel.CamelContext; import org.apache.camel.ProducerTemplate; import org.apache.camel.impl.MainSupport; -import org.apache.camel.spring.handler.CamelNamespaceHandler; import org.apache.camel.util.IOHelper; import org.apache.camel.view.ModelFileGenerator; import org.springframework.context.ApplicationContext; @@ -231,7 +230,7 @@ public class Main extends MainSupport { } protected ModelFileGenerator createModelFileGenerator() throws JAXBException { - return new ModelFileGenerator(new CamelNamespaceHandler().getJaxbContext()); + return new ModelFileGenerator(new SpringModelJAXBContextFactory().newJAXBContext()); } protected AbstractApplicationContext createAdditionalLocationsFromClasspath() throws IOException { http://git-wip-us.apache.org/repos/asf/camel/blob/fc7e2dff/components/camel-spring/src/main/java/org/apache/camel/spring/SpringCamelContext.java ---------------------------------------------------------------------- diff --git a/components/camel-spring/src/main/java/org/apache/camel/spring/SpringCamelContext.java b/components/camel-spring/src/main/java/org/apache/camel/spring/SpringCamelContext.java index ce422ea..bc6eb91 100644 --- a/components/camel-spring/src/main/java/org/apache/camel/spring/SpringCamelContext.java +++ b/components/camel-spring/src/main/java/org/apache/camel/spring/SpringCamelContext.java @@ -68,6 +68,7 @@ public class SpringCamelContext extends DefaultCamelContext implements Initializ public SpringCamelContext(ApplicationContext applicationContext) { setApplicationContext(applicationContext); + setModelJAXBContextFactory(new SpringModelJAXBContextFactory()); } public static void setNoStart(boolean b) { http://git-wip-us.apache.org/repos/asf/camel/blob/fc7e2dff/components/camel-spring/src/main/java/org/apache/camel/spring/SpringModelJAXBContextFactory.java ---------------------------------------------------------------------- diff --git a/components/camel-spring/src/main/java/org/apache/camel/spring/SpringModelJAXBContextFactory.java b/components/camel-spring/src/main/java/org/apache/camel/spring/SpringModelJAXBContextFactory.java new file mode 100644 index 0000000..fd2de55 --- /dev/null +++ b/components/camel-spring/src/main/java/org/apache/camel/spring/SpringModelJAXBContextFactory.java @@ -0,0 +1,22 @@ +package org.apache.camel.spring; + +import org.apache.camel.impl.DefaultModelJAXBContextFactory; + +/** + * @author + */ +public class SpringModelJAXBContextFactory extends DefaultModelJAXBContextFactory { + + public static final String ADDITIONAL_JAXB_CONTEXT_PACKAGES = ":" + + "org.apache.camel.core.xml:" + + "org.apache.camel.spring:" + + "org.apache.camel.util.spring:"; + + protected ClassLoader getClassLoader() { + return getClass().getClassLoader(); + } + + protected String getPackages() { + return super.getPackages() + ADDITIONAL_JAXB_CONTEXT_PACKAGES; + } +} http://git-wip-us.apache.org/repos/asf/camel/blob/fc7e2dff/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java ---------------------------------------------------------------------- diff --git a/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java b/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java index 6cb1cb1..8d84a17 100644 --- a/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java +++ b/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java @@ -40,6 +40,7 @@ import org.apache.camel.model.FromDefinition; import org.apache.camel.model.SendDefinition; import org.apache.camel.spi.CamelContextNameStrategy; import org.apache.camel.spi.NamespaceAware; +import org.apache.camel.spring.SpringModelJAXBContextFactory; import org.apache.camel.spring.CamelBeanPostProcessor; import org.apache.camel.spring.CamelConsumerTemplateFactoryBean; import org.apache.camel.spring.CamelContextFactoryBean; @@ -200,37 +201,10 @@ public class CamelNamespaceHandler extends NamespaceHandlerSupport { public JAXBContext getJaxbContext() throws JAXBException { if (jaxbContext == null) { - jaxbContext = createJaxbContext(); + jaxbContext = new SpringModelJAXBContextFactory().newJAXBContext(); } return jaxbContext; } - - protected JAXBContext createJaxbContext() throws JAXBException { - StringBuilder packages = new StringBuilder(); - for (Class<?> cl : getJaxbPackages()) { - if (packages.length() > 0) { - packages.append(":"); - } - packages.append(cl.getName().substring(0, cl.getName().lastIndexOf('.'))); - } - return JAXBContext.newInstance(packages.toString(), getClass().getClassLoader()); - } - - protected Set<Class<?>> getJaxbPackages() { - // we nedd to have a class from each different package with jaxb models - Set<Class<?>> classes = new HashSet<Class<?>>(); - classes.add(org.apache.camel.spring.CamelContextFactoryBean.class); - classes.add(CamelJMXAgentDefinition.class); - classes.add(org.apache.camel.ExchangePattern.class); - classes.add(org.apache.camel.model.RouteDefinition.class); - classes.add(org.apache.camel.model.config.StreamResequencerConfig.class); - classes.add(org.apache.camel.model.dataformat.DataFormatsDefinition.class); - classes.add(org.apache.camel.model.language.ExpressionDefinition.class); - classes.add(org.apache.camel.model.loadbalancer.RoundRobinLoadBalancerDefinition.class); - classes.add(org.apache.camel.model.rest.RestDefinition.class); - classes.add(org.apache.camel.util.spring.SSLContextParametersFactoryBean.class); - return classes; - } protected class SSLContextParametersFactoryBeanBeanDefinitionParser extends BeanDefinitionParser { http://git-wip-us.apache.org/repos/asf/camel/blob/fc7e2dff/components/camel-spring/src/test/java/org/apache/camel/spring/issues/CamelContextModelErrorHandlerIssueTest.java ---------------------------------------------------------------------- diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/issues/CamelContextModelErrorHandlerIssueTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/issues/CamelContextModelErrorHandlerIssueTest.java index e962446..fa805cc 100644 --- a/components/camel-spring/src/test/java/org/apache/camel/spring/issues/CamelContextModelErrorHandlerIssueTest.java +++ b/components/camel-spring/src/test/java/org/apache/camel/spring/issues/CamelContextModelErrorHandlerIssueTest.java @@ -23,9 +23,8 @@ import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; import junit.framework.TestCase; -import org.apache.camel.model.Constants; import org.apache.camel.spring.CamelContextFactoryBean; -import org.apache.camel.spring.SpringCamelContext; +import org.apache.camel.spring.SpringModelJAXBContextFactory; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -39,7 +38,7 @@ public class CamelContextModelErrorHandlerIssueTest extends TestCase { @Test public void testCamelContextModel() throws Exception { - JAXBContext jaxbContext = JAXBContext.newInstance(Constants.JAXB_CONTEXT_PACKAGES + ":org.apache.camel.spring", SpringCamelContext.class.getClassLoader()); + JAXBContext jaxbContext = new SpringModelJAXBContextFactory().newJAXBContext(); Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); Object obj = unmarshaller.unmarshal(new File("src/test/resources/org/apache/camel/spring/issues/CamelContextModelErrorHandlerIssueTest.xml")); http://git-wip-us.apache.org/repos/asf/camel/blob/fc7e2dff/components/camel-web/src/main/java/org/apache/camel/web/resources/RouteResource.java ---------------------------------------------------------------------- diff --git a/components/camel-web/src/main/java/org/apache/camel/web/resources/RouteResource.java b/components/camel-web/src/main/java/org/apache/camel/web/resources/RouteResource.java index bd21a26..945d93e 100644 --- a/components/camel-web/src/main/java/org/apache/camel/web/resources/RouteResource.java +++ b/components/camel-web/src/main/java/org/apache/camel/web/resources/RouteResource.java @@ -103,7 +103,7 @@ public class RouteResource extends CamelChildResourceSupport { * Returns the XML text */ public String getRouteXml() throws JAXBException { - JAXBContext context = JAXBContext.newInstance(Constants.JAXB_PACKAGES); + JAXBContext context = ((ModelCamelContext)getCamelContext()).getModelJAXBContextFactory().newJAXBContext(); Marshaller marshaller = context.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); // TODO fix to use "" namespace prefix @@ -209,7 +209,7 @@ public class RouteResource extends CamelChildResourceSupport { */ private Response parseXml(String xml) { try { - JAXBContext context = JAXBContext.newInstance(Constants.JAXB_PACKAGES); + JAXBContext context = ((ModelCamelContext)getCamelContext()).getModelJAXBContextFactory().newJAXBContext(); Unmarshaller unmarshaller = context.createUnmarshaller(); Object value = unmarshaller.unmarshal(new StringReader(xml)); if (value instanceof RouteDefinition) { http://git-wip-us.apache.org/repos/asf/camel/blob/fc7e2dff/components/camel-web/src/main/java/org/apache/camel/web/resources/RoutesResource.java ---------------------------------------------------------------------- diff --git a/components/camel-web/src/main/java/org/apache/camel/web/resources/RoutesResource.java b/components/camel-web/src/main/java/org/apache/camel/web/resources/RoutesResource.java index fdd9abb..26a0e1f 100644 --- a/components/camel-web/src/main/java/org/apache/camel/web/resources/RoutesResource.java +++ b/components/camel-web/src/main/java/org/apache/camel/web/resources/RoutesResource.java @@ -169,7 +169,7 @@ public class RoutesResource extends CamelChildResourceSupport { */ private Response parseXml(String xml) { try { - JAXBContext context = JAXBContext.newInstance(Constants.JAXB_PACKAGES); + JAXBContext context = ((ModelCamelContext)getCamelContext()).getModelJAXBContextFactory().newJAXBContext(); Unmarshaller unmarshaller = context.createUnmarshaller(); Object value = unmarshaller.unmarshal(new StringReader(xml)); if (value instanceof RouteDefinition) { http://git-wip-us.apache.org/repos/asf/camel/blob/fc7e2dff/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/RouteInfoCommand.java ---------------------------------------------------------------------- diff --git a/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/RouteInfoCommand.java b/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/RouteInfoCommand.java index fb016f3..f75fbc8 100644 --- a/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/RouteInfoCommand.java +++ b/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/RouteInfoCommand.java @@ -59,8 +59,10 @@ public class RouteInfoCommand extends AbstractRouteCommand { RouteStatDump route = (RouteStatDump) unmarshaller.unmarshal(new StringReader(xml)); out.println(stringEscape.unescapeJava("\tState: " + route.getState())); + out.println(stringEscape.unescapeJava("\tState: " + route.getState())); out.println(""); + out.println(""); out.println(stringEscape.unescapeJava("\u001B[1mStatistics\u001B[0m")); long total = route.getExchangesCompleted() + route.getExchangesFailed(); out.println(stringEscape.unescapeJava("\tExchanges Total: " + total)); http://git-wip-us.apache.org/repos/asf/camel/blob/fc7e2dff/tests/camel-itest/src/test/java/org/apache/camel/itest/jaxb/SpringLoadRouteFromXmlTest.java ---------------------------------------------------------------------- diff --git a/tests/camel-itest/src/test/java/org/apache/camel/itest/jaxb/SpringLoadRouteFromXmlTest.java b/tests/camel-itest/src/test/java/org/apache/camel/itest/jaxb/SpringLoadRouteFromXmlTest.java index 428c385..c959acf 100644 --- a/tests/camel-itest/src/test/java/org/apache/camel/itest/jaxb/SpringLoadRouteFromXmlTest.java +++ b/tests/camel-itest/src/test/java/org/apache/camel/itest/jaxb/SpringLoadRouteFromXmlTest.java @@ -20,7 +20,7 @@ import javax.xml.bind.JAXBContext; import javax.xml.bind.Unmarshaller; import org.apache.camel.component.mock.MockEndpoint; -import org.apache.camel.model.Constants; +import org.apache.camel.impl.DefaultModelJAXBContextFactory; import org.apache.camel.model.RoutesDefinition; import org.apache.camel.test.spring.CamelSpringTestSupport; import org.junit.Test; @@ -51,7 +51,7 @@ public class SpringLoadRouteFromXmlTest extends CamelSpringTestSupport { foo.assertIsSatisfied(); // load bar route from classpath using JAXB - JAXBContext jaxb = JAXBContext.newInstance(Constants.JAXB_CONTEXT_PACKAGES); + JAXBContext jaxb = new DefaultModelJAXBContextFactory().newJAXBContext(); Unmarshaller unmarshaller = jaxb.createUnmarshaller(); Resource rs = new ClassPathResource("org/apache/camel/itest/jaxb/BarRoute.xml");