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");

Reply via email to