You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2015/02/14 16:22:51 UTC
[1/5] camel git commit: Initial take on CAMEL-6380 Created a
ModelJAXBContextFactory and replaced all usages of JAXBContext.newInstance()
with a call to the factory.
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 <aa...@gmail.com>
Authored: Wed Oct 8 23:12:40 2014 -0700
Committer: Claus Ibsen <da...@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");
[5/5] camel git commit: CAMEL-6380: Polished
Posted by da...@apache.org.
CAMEL-6380: Polished
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/ad651342
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/ad651342
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/ad651342
Branch: refs/heads/master
Commit: ad651342a2280c0a2cec3a4f4440a2f86350fc18
Parents: 72d7a7d
Author: Claus Ibsen <da...@apache.org>
Authored: Sat Feb 14 15:37:12 2015 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Sat Feb 14 15:37:12 2015 +0100
----------------------------------------------------------------------
.../org/apache/camel/commands/AbstractLocalCamelController.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/ad651342/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/AbstractLocalCamelController.java
----------------------------------------------------------------------
diff --git a/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/AbstractLocalCamelController.java b/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/AbstractLocalCamelController.java
index 8ac5f4b..1a08445 100644
--- a/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/AbstractLocalCamelController.java
+++ b/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/AbstractLocalCamelController.java
@@ -356,7 +356,7 @@ public abstract class AbstractLocalCamelController extends AbstractCamelControll
return null;
}
- return ModelHelper.dumpModelAsXml(route);
+ return ModelHelper.dumpModelAsXml(null, route);
}
@Override
@@ -399,7 +399,7 @@ public abstract class AbstractLocalCamelController extends AbstractCamelControll
// use a rests definition to dump the rests
RestsDefinition def = new RestsDefinition();
def.setRests(rests);
- return ModelHelper.dumpModelAsXml(def);
+ return ModelHelper.dumpModelAsXml(null, def);
}
public List<Map<String, String>> getEndpoints(String camelContextName) throws Exception {
[3/5] camel git commit: Fixed CS
Posted by da...@apache.org.
Fixed CS
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/33dcf40f
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/33dcf40f
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/33dcf40f
Branch: refs/heads/master
Commit: 33dcf40ffe30c262614e6ae216e4d4ad6c047bbc
Parents: 0beba6c
Author: Claus Ibsen <da...@apache.org>
Authored: Sat Feb 14 15:22:25 2015 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Sat Feb 14 15:22:25 2015 +0100
----------------------------------------------------------------------
.../camel/api/management/mbean/CamelOpenMBeanTypes.java | 12 ++++++++----
.../camel/component/validator/ValidatorEndpoint.java | 2 +-
2 files changed, 9 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/33dcf40f/camel-core/src/main/java/org/apache/camel/api/management/mbean/CamelOpenMBeanTypes.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/CamelOpenMBeanTypes.java b/camel-core/src/main/java/org/apache/camel/api/management/mbean/CamelOpenMBeanTypes.java
index 2f87a3a..90de994 100644
--- a/camel-core/src/main/java/org/apache/camel/api/management/mbean/CamelOpenMBeanTypes.java
+++ b/camel-core/src/main/java/org/apache/camel/api/management/mbean/CamelOpenMBeanTypes.java
@@ -74,7 +74,8 @@ public final class CamelOpenMBeanTypes {
public static CompositeType explainComponentCompositeType() throws OpenDataException {
return new CompositeType("components", "Components", new String[]{"option", "kind", "label", "type", "java type", "deprecated", "value", "default value", "description"},
new String[]{"Option", "Kind", "Label", "Type", "Java Type", "Deprecated", "Value", "Default Value", "Description"},
- new OpenType[]{SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING});
+ new OpenType[]{SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING,
+ SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING});
}
public static TabularType explainEndpointTabularType() throws OpenDataException {
@@ -85,7 +86,8 @@ public final class CamelOpenMBeanTypes {
public static CompositeType explainEndpointsCompositeType() throws OpenDataException {
return new CompositeType("endpoints", "Endpoints", new String[]{"option", "kind", "label", "type", "java type", "deprecated", "value", "default value", "description"},
new String[]{"Option", "Kind", "Label", "Type", "Java Type", "Deprecated", "Value", "Default Value", "Description"},
- new OpenType[]{SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING});
+ new OpenType[]{SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING,
+ SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING});
}
public static TabularType explainEipTabularType() throws OpenDataException {
@@ -96,7 +98,8 @@ public final class CamelOpenMBeanTypes {
public static CompositeType explainEipsCompositeType() throws OpenDataException {
return new CompositeType("eips", "EIPs", new String[]{"option", "kind", "label", "type", "java type", "deprecated", "value", "default value", "description"},
new String[]{"Option", "Kind", "Label", "Type", "Java Type", "Deprecated", "Value", "Default Value", "Description"},
- new OpenType[]{SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING});
+ new OpenType[]{SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING,
+ SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING});
}
public static TabularType listComponentsTabularType() throws OpenDataException {
@@ -107,7 +110,8 @@ public final class CamelOpenMBeanTypes {
public static CompositeType listComponentsCompositeType() throws OpenDataException {
return new CompositeType("components", "Components", new String[]{"name", "description", "label", "status", "type", "groupId", "artifactId", "version"},
new String[]{"Name", "Description", "Label", "Status", "Type", "GroupId", "ArtifactId", "Version"},
- new OpenType[]{SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING});
+ new OpenType[]{SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING,
+ SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING});
}
public static TabularType listAwaitThreadsTabularType() throws OpenDataException {
http://git-wip-us.apache.org/repos/asf/camel/blob/33dcf40f/camel-core/src/main/java/org/apache/camel/component/validator/ValidatorEndpoint.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/component/validator/ValidatorEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/validator/ValidatorEndpoint.java
index 7420a99..9100125 100644
--- a/camel-core/src/main/java/org/apache/camel/component/validator/ValidatorEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/validator/ValidatorEndpoint.java
@@ -20,7 +20,6 @@ import java.io.InputStream;
import javax.xml.XMLConstants;
import javax.xml.validation.SchemaFactory;
-import org.apache.camel.spi.Metadata;
import org.w3c.dom.ls.LSResourceResolver;
import org.apache.camel.Component;
@@ -32,6 +31,7 @@ import org.apache.camel.impl.DefaultEndpoint;
import org.apache.camel.processor.validation.DefaultValidationErrorHandler;
import org.apache.camel.processor.validation.ValidatingProcessor;
import org.apache.camel.processor.validation.ValidatorErrorHandler;
+import org.apache.camel.spi.Metadata;
import org.apache.camel.spi.UriEndpoint;
import org.apache.camel.spi.UriParam;
import org.apache.camel.spi.UriPath;
[2/5] camel git commit: CAMEL-6380: Polished
Posted by da...@apache.org.
CAMEL-6380: Polished
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/0beba6c7
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/0beba6c7
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/0beba6c7
Branch: refs/heads/master
Commit: 0beba6c7fd622193bc59e6563f052a08c737aac7
Parents: fc7e2df
Author: Claus Ibsen <da...@apache.org>
Authored: Sat Feb 14 15:20:12 2015 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Sat Feb 14 15:20:12 2015 +0100
----------------------------------------------------------------------
.../java/org/apache/camel/CamelContext.java | 15 ++++++
.../impl/DefaultModelJAXBContextFactory.java | 24 ++++++++--
.../apache/camel/model/ModelCamelContext.java | 8 ----
.../org/apache/camel/model/ModelHelper.java | 49 ++++++++++++--------
.../camel/spi/ModelJAXBContextFactory.java | 29 ++++++++++--
5 files changed, 89 insertions(+), 36 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/0beba6c7/camel-core/src/main/java/org/apache/camel/CamelContext.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/CamelContext.java b/camel-core/src/main/java/org/apache/camel/CamelContext.java
index 28e83e9..bfe116c 100644
--- a/camel-core/src/main/java/org/apache/camel/CamelContext.java
+++ b/camel-core/src/main/java/org/apache/camel/CamelContext.java
@@ -49,6 +49,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;
@@ -1538,4 +1539,18 @@ public interface CamelContext extends SuspendableService, RuntimeConfiguration {
*/
List<RoutePolicyFactory> getRoutePolicyFactories();
+ /**
+ * Returns the JAXB Context factory used to create Models.
+ *
+ * @return the JAXB Context factory used to create Models.
+ */
+ ModelJAXBContextFactory getModelJAXBContextFactory();
+
+ /**
+ * Sets a custom JAXB Context factory to be used
+ *
+ * @param modelJAXBContextFactory a JAXB Context factory
+ */
+ void setModelJAXBContextFactory(ModelJAXBContextFactory modelJAXBContextFactory);
+
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/0beba6c7/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
index d5d93fc..c830241 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultModelJAXBContextFactory.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultModelJAXBContextFactory.java
@@ -1,13 +1,29 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
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;
+import org.apache.camel.model.Constants;
+import org.apache.camel.spi.ModelJAXBContextFactory;
+
/**
- * @author
+ * Default implementation of {@link org.apache.camel.spi.ModelJAXBContextFactory}.
*/
public class DefaultModelJAXBContextFactory implements ModelJAXBContextFactory {
http://git-wip-us.apache.org/repos/asf/camel/blob/0beba6c7/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 977edaa..912aa62 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,7 +23,6 @@ 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}
@@ -31,13 +30,6 @@ import org.apache.camel.spi.ModelJAXBContextFactory;
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/0beba6c7/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 91aed54..c24684e 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,15 +16,17 @@
*/
package org.apache.camel.model;
-import org.apache.camel.NamedNode;
-
+import java.io.InputStream;
+import java.io.StringReader;
+import java.io.StringWriter;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
-import java.io.InputStream;
-import java.io.StringReader;
-import java.io.StringWriter;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.NamedNode;
+import org.apache.camel.util.IOHelper;
/**
* Helper for the Camel {@link org.apache.camel.model model} classes.
@@ -38,12 +40,13 @@ public final class ModelHelper {
/**
* Dumps the definition as XML
*
- * @param definition the definition, such as a {@link org.apache.camel.NamedNode}
- * @return the output in XML (is formatted)
+ * @param context the CamelContext
+ * @param definition the definition, such as a {@link org.apache.camel.NamedNode}
+ * @return the output in XML (is formatted)
* @throws JAXBException is throw if error marshalling to XML
*/
- public static String dumpModelAsXml(ModelCamelContext modelCamelContext, NamedNode definition) throws JAXBException {
- JAXBContext jaxbContext = modelCamelContext.getModelJAXBContextFactory().newJAXBContext();
+ public static String dumpModelAsXml(CamelContext context, NamedNode definition) throws JAXBException {
+ JAXBContext jaxbContext = context.getModelJAXBContextFactory().newJAXBContext();
Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
@@ -56,17 +59,22 @@ public final class ModelHelper {
/**
* Marshal the xml to the model definition
*
- * @param xml the xml
- * @param type the definition type to return, will throw a {@link ClassCastException} if not the expected type
+ * @param context the CamelContext
+ * @param xml the xml
+ * @param type the definition type to return, will throw a {@link ClassCastException} if not the expected type
* @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(ModelCamelContext modelCamelContext, String xml, Class<T> type) throws JAXBException {
- JAXBContext jaxbContext = modelCamelContext.getModelJAXBContextFactory().newJAXBContext();
+ public static <T extends NamedNode> T createModelFromXml(CamelContext context, String xml, Class<T> type) throws JAXBException {
+ JAXBContext jaxbContext = context.getModelJAXBContextFactory().newJAXBContext();
StringReader reader = new StringReader(xml);
- Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
- Object result = unmarshaller.unmarshal(reader);
- reader.close();
+ Object result;
+ try {
+ Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
+ result = unmarshaller.unmarshal(reader);
+ } finally {
+ IOHelper.close(reader);
+ }
if (result == null) {
throw new JAXBException("Cannot unmarshal to " + type + " using JAXB from XML: " + xml);
@@ -77,13 +85,14 @@ public final class ModelHelper {
/**
* Marshal the xml to the model definition
*
- * @param stream the xml stream
- * @param type the definition type to return, will throw a {@link ClassCastException} if not the expected type
+ * @param context the CamelContext
+ * @param stream the xml stream
+ * @param type the definition type to return, will throw a {@link ClassCastException} if not the expected type
* @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(ModelCamelContext modelCamelContext, InputStream stream, Class<T> type) throws JAXBException {
- JAXBContext jaxbContext = modelCamelContext.getModelJAXBContextFactory().newJAXBContext();
+ public static <T extends NamedNode> T createModelFromXml(CamelContext context, InputStream stream, Class<T> type) throws JAXBException {
+ JAXBContext jaxbContext = context.getModelJAXBContextFactory().newJAXBContext();
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
Object result = unmarshaller.unmarshal(stream);
return type.cast(result);
http://git-wip-us.apache.org/repos/asf/camel/blob/0beba6c7/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
index b2ae3ad..97ea3bf 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/ModelJAXBContextFactory.java
+++ b/camel-core/src/main/java/org/apache/camel/spi/ModelJAXBContextFactory.java
@@ -1,3 +1,19 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.apache.camel.spi;
import javax.xml.bind.JAXBContext;
@@ -5,10 +21,15 @@ import javax.xml.bind.JAXBException;
/**
* Factory to abstract the creation of the Model's JAXBContext.
- *
- * @author
*/
-public interface ModelJAXBContextFactory
-{
+public interface ModelJAXBContextFactory {
+
+ /**
+ * Creates a new {@link javax.xml.bind.JAXBContext} used for loading the Camel model
+ *
+ * @return a new JAXBContext
+ * @throws JAXBException is thrown if error creating the JAXBContext
+ */
JAXBContext newJAXBContext() throws JAXBException;
+
}
\ No newline at end of file
[4/5] camel git commit: CAMEL-6380: Polished
Posted by da...@apache.org.
CAMEL-6380: Polished
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/72d7a7d6
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/72d7a7d6
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/72d7a7d6
Branch: refs/heads/master
Commit: 72d7a7d6da89be85076675751a6b253cd9ad8283
Parents: 33dcf40
Author: Claus Ibsen <da...@apache.org>
Authored: Sat Feb 14 15:29:39 2015 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Sat Feb 14 15:29:39 2015 +0100
----------------------------------------------------------------------
.../org/apache/camel/model/ModelHelper.java | 34 ++++++++++++++++----
.../BlueprintModelJAXBContextFactory.java | 19 +++++++++--
.../swagger/DefaultCamelSwaggerServlet.scala | 2 +-
3 files changed, 45 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/72d7a7d6/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 c24684e..801d2a0 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
@@ -40,13 +40,18 @@ public final class ModelHelper {
/**
* Dumps the definition as XML
*
- * @param context the CamelContext
+ * @param context the CamelContext, if <tt>null</tt> then {@link org.apache.camel.spi.ModelJAXBContextFactory} is not in use
* @param definition the definition, such as a {@link org.apache.camel.NamedNode}
* @return the output in XML (is formatted)
* @throws JAXBException is throw if error marshalling to XML
*/
public static String dumpModelAsXml(CamelContext context, NamedNode definition) throws JAXBException {
- JAXBContext jaxbContext = context.getModelJAXBContextFactory().newJAXBContext();
+ JAXBContext jaxbContext;
+ if (context == null) {
+ jaxbContext = createJAXBContext();
+ } else {
+ jaxbContext = context.getModelJAXBContextFactory().newJAXBContext();
+ }
Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
@@ -59,14 +64,20 @@ public final class ModelHelper {
/**
* Marshal the xml to the model definition
*
- * @param context the CamelContext
+ * @param context the CamelContext, if <tt>null</tt> then {@link org.apache.camel.spi.ModelJAXBContextFactory} is not in use
* @param xml the xml
* @param type the definition type to return, will throw a {@link ClassCastException} if not the expected type
* @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(CamelContext context, String xml, Class<T> type) throws JAXBException {
- JAXBContext jaxbContext = context.getModelJAXBContextFactory().newJAXBContext();
+ JAXBContext jaxbContext;
+ if (context == null) {
+ jaxbContext = createJAXBContext();
+ } else {
+ jaxbContext = context.getModelJAXBContextFactory().newJAXBContext();
+ }
+
StringReader reader = new StringReader(xml);
Object result;
try {
@@ -85,16 +96,27 @@ public final class ModelHelper {
/**
* Marshal the xml to the model definition
*
- * @param context the CamelContext
+ * @param context the CamelContext, if <tt>null</tt> then {@link org.apache.camel.spi.ModelJAXBContextFactory} is not in use
* @param stream the xml stream
* @param type the definition type to return, will throw a {@link ClassCastException} if not the expected type
* @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(CamelContext context, InputStream stream, Class<T> type) throws JAXBException {
- JAXBContext jaxbContext = context.getModelJAXBContextFactory().newJAXBContext();
+ JAXBContext jaxbContext;
+ if (context == null) {
+ jaxbContext = createJAXBContext();
+ } else {
+ jaxbContext = context.getModelJAXBContextFactory().newJAXBContext();
+ }
+
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
Object result = unmarshaller.unmarshal(stream);
return type.cast(result);
}
+
+ private 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/72d7a7d6/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
index f3b6c88..90a74d8 100644
--- 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
@@ -1,10 +1,23 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
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 = ":"
http://git-wip-us.apache.org/repos/asf/camel/blob/72d7a7d6/components/camel-swagger/src/main/scala/org/apache/camel/component/swagger/DefaultCamelSwaggerServlet.scala
----------------------------------------------------------------------
diff --git a/components/camel-swagger/src/main/scala/org/apache/camel/component/swagger/DefaultCamelSwaggerServlet.scala b/components/camel-swagger/src/main/scala/org/apache/camel/component/swagger/DefaultCamelSwaggerServlet.scala
index 4ed2aa9..128cac2 100644
--- a/components/camel-swagger/src/main/scala/org/apache/camel/component/swagger/DefaultCamelSwaggerServlet.scala
+++ b/components/camel-swagger/src/main/scala/org/apache/camel/component/swagger/DefaultCamelSwaggerServlet.scala
@@ -49,7 +49,7 @@ class DefaultCamelSwaggerServlet extends RestSwaggerApiDeclarationServlet {
val result = server.invoke(found, "dumpRestsAsXml", null, null)
if (result != null) {
val xml = result.asInstanceOf[String]
- val rests: RestsDefinition = ModelHelper.createModelFromXml(xml, classOf[RestsDefinition])
+ val rests: RestsDefinition = ModelHelper.createModelFromXml(null, xml, classOf[RestsDefinition])
val answer = new scala.collection.mutable.ListBuffer[RestDefinition]
for (rest <- rests.getRests.asScala) {
answer += rest