This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
commit 6666db12ba149d668ead00c99b245ae719cd387c Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Tue Feb 4 12:46:17 2020 +0100 CAMEL-14484: Make XML routes loader using JAXB into its own module --- core/camel-core-engine/pom.xml | 8 +-- .../java/org/apache/camel/model/ModelHelper.java | 80 ++-------------------- core/camel-core/pom.xml | 4 ++ core/camel-xml-jaxb/pom.xml | 11 --- .../karaf/features/src/main/resources/features.xml | 1 + 5 files changed, 14 insertions(+), 90 deletions(-) diff --git a/core/camel-core-engine/pom.xml b/core/camel-core-engine/pom.xml index aeca054..ac2ba06 100644 --- a/core/camel-core-engine/pom.xml +++ b/core/camel-core-engine/pom.xml @@ -68,10 +68,10 @@ <groupId>org.apache.camel</groupId> <artifactId>camel-base</artifactId> </dependency> -<!-- <dependency>--> -<!-- <groupId>org.apache.camel</groupId>--> -<!-- <artifactId>camel-jaxp</artifactId>--> -<!-- </dependency>--> + <dependency> + <groupId>org.apache.camel</groupId> + <artifactId>camel-jaxp</artifactId> + </dependency> <dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-management-api</artifactId> diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/model/ModelHelper.java b/core/camel-core-engine/src/main/java/org/apache/camel/model/ModelHelper.java index 9e36bd4..da3a878 100644 --- a/core/camel-core-engine/src/main/java/org/apache/camel/model/ModelHelper.java +++ b/core/camel-core-engine/src/main/java/org/apache/camel/model/ModelHelper.java @@ -17,7 +17,6 @@ package org.apache.camel.model; import java.io.ByteArrayInputStream; -import java.io.IOException; import java.io.InputStream; import java.io.StringWriter; import java.nio.charset.StandardCharsets; @@ -32,7 +31,6 @@ import javax.xml.bind.Binder; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; -import javax.xml.bind.Unmarshaller; import javax.xml.transform.OutputKeys; import javax.xml.transform.TransformerException; @@ -50,12 +48,10 @@ import org.apache.camel.NamedNode; import org.apache.camel.TypeConversionException; import org.apache.camel.converter.jaxp.XmlConverter; import org.apache.camel.model.language.ExpressionDefinition; -import org.apache.camel.model.rest.RestDefinition; import org.apache.camel.model.rest.RestsDefinition; import org.apache.camel.spi.ModelJAXBContextFactory; import org.apache.camel.spi.NamespaceAware; import org.apache.camel.spi.TypeConverterRegistry; -import org.apache.camel.util.ObjectHelper; import org.apache.camel.util.xml.XmlLineNumberParser; import static org.apache.camel.model.ProcessorDefinitionHelper.filterTypeInOutputs; @@ -257,83 +253,17 @@ public final class ModelHelper { */ @Deprecated public static RoutesDefinition loadRoutesDefinition(CamelContext context, InputStream inputStream) throws Exception { - XmlConverter xmlConverter = newXmlConverter(context); - Document dom = xmlConverter.toDOMDocument(inputStream, null); - return loadRoutesDefinition(context, dom); + ExtendedCamelContext ecc = context.adapt(ExtendedCamelContext.class); + return (RoutesDefinition) ecc.getXMLRoutesDefinitionLoader().loadRoutesDefinition(context, inputStream); } /** - * Marshal the xml to the model definition - * - * @param context the CamelContext, if <tt>null</tt> then - * {@link org.apache.camel.spi.ModelJAXBContextFactory} is not in - * use - * @param node the xml node - * @throws Exception is thrown if an error is encountered unmarshalling from - * xml to model * @deprecated use {@link org.apache.camel.spi.XMLRoutesDefinitionLoader} from {@link ExtendedCamelContext} */ @Deprecated - public static RoutesDefinition loadRoutesDefinition(CamelContext context, Node node) throws Exception { - JAXBContext jaxbContext = getJAXBContext(context); - - Map<String, String> namespaces = new LinkedHashMap<>(); - - Document dom = node instanceof Document ? (Document)node : node.getOwnerDocument(); - extractNamespaces(dom, namespaces); - - Binder<Node> binder = jaxbContext.createBinder(); - Object result = binder.unmarshal(node); - - if (result == null) { - throw new JAXBException("Cannot unmarshal to RoutesDefinition using JAXB"); - } - - // can either be routes or a single route - RoutesDefinition answer; - if (result instanceof RouteDefinition) { - RouteDefinition route = (RouteDefinition)result; - answer = new RoutesDefinition(); - applyNamespaces(route, namespaces); - answer.getRoutes().add(route); - } else if (result instanceof RoutesDefinition) { - answer = (RoutesDefinition)result; - for (RouteDefinition route : answer.getRoutes()) { - applyNamespaces(route, namespaces); - } - } else { - throw new IllegalArgumentException("Unmarshalled object is an unsupported type: " + ObjectHelper.className(result) + " -> " + result); - } - - return answer; - } - - /** - * @deprecated use {@link org.apache.camel.spi.XMLRoutesDefinitionLoader} from {@link ExtendedCamelContext} - */ - @Deprecated - public static RestsDefinition loadRestsDefinition(CamelContext context, InputStream is) throws Exception { - // load routes using JAXB - Unmarshaller unmarshaller = getJAXBContext(context).createUnmarshaller(); - Object result = unmarshaller.unmarshal(is); - - if (result == null) { - throw new IOException("Cannot unmarshal to rests using JAXB from input stream: " + is); - } - - // can either be routes or a single route - RestsDefinition answer; - if (result instanceof RestDefinition) { - RestDefinition rest = (RestDefinition)result; - answer = new RestsDefinition(); - answer.getRests().add(rest); - } else if (result instanceof RestsDefinition) { - answer = (RestsDefinition)result; - } else { - throw new IllegalArgumentException("Unmarshalled object is an unsupported type: " + ObjectHelper.className(result) + " -> " + result); - } - - return answer; + public static RestsDefinition loadRestsDefinition(CamelContext context, InputStream inputStream) throws Exception { + ExtendedCamelContext ecc = context.adapt(ExtendedCamelContext.class); + return (RestsDefinition) ecc.getXMLRoutesDefinitionLoader().loadRestsDefinition(context, inputStream); } private static <T extends NamedNode> T modelToXml(CamelContext context, InputStream is, String xml, Class<T> type) throws JAXBException { diff --git a/core/camel-core/pom.xml b/core/camel-core/pom.xml index 915c28f..a62cd52 100644 --- a/core/camel-core/pom.xml +++ b/core/camel-core/pom.xml @@ -133,6 +133,10 @@ <groupId>org.apache.camel</groupId> <artifactId>camel-xslt</artifactId> </dependency> + <dependency> + <groupId>org.apache.camel</groupId> + <artifactId>camel-xml-jaxb</artifactId> + </dependency> <!-- required logging api dependency by camel-core --> <dependency> diff --git a/core/camel-xml-jaxb/pom.xml b/core/camel-xml-jaxb/pom.xml index b7eaaf5..0c3f919 100644 --- a/core/camel-xml-jaxb/pom.xml +++ b/core/camel-xml-jaxb/pom.xml @@ -42,17 +42,6 @@ <artifactId>camel-jaxp</artifactId> </dependency> - <!-- testing --> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-simple</artifactId> - <scope>test</scope> - </dependency> </dependencies> </project> diff --git a/platforms/karaf/features/src/main/resources/features.xml b/platforms/karaf/features/src/main/resources/features.xml index c806b5e..a183476 100644 --- a/platforms/karaf/features/src/main/resources/features.xml +++ b/platforms/karaf/features/src/main/resources/features.xml @@ -60,6 +60,7 @@ <bundle>mvn:org.apache.camel/camel-core-osgi/${project.version}</bundle> <bundle>mvn:org.apache.camel/camel-cloud/${project.version}</bundle> <bundle>mvn:org.apache.camel/camel-jaxp/${project.version}</bundle> + <bundle>mvn:org.apache.camel/camel-xml-jaxb/${project.version}</bundle> <bundle>mvn:org.apache.camel/camel-main/${project.version}</bundle> <bundle>mvn:org.apache.camel/camel-caffeine-lrucache/${project.version}</bundle> <bundle>mvn:org.apache.camel/camel-tooling-model/${project.version}</bundle>