Repository: camel Updated Branches: refs/heads/master ebf97e386 -> 54061ed11
incorporating changes from review comments of https://github.com/apache/camel/pull/1109 Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/08983abb Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/08983abb Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/08983abb Branch: refs/heads/master Commit: 08983abb36eb9efbd6162aa1981c611256920e42 Parents: 38a5eb9 Author: Siddharth Sharma <siddharth.sha...@jobvite-inc.com> Authored: Sun Aug 7 21:02:01 2016 -0700 Committer: Claus Ibsen <davscl...@apache.org> Committed: Mon Aug 8 08:00:53 2016 +0200 ---------------------------------------------------------------------- .../camel/converter/jaxb/JaxbConstants.java | 5 ++- .../camel/converter/jaxb/JaxbDataFormat.java | 33 +++++++++++--------- 2 files changed, 20 insertions(+), 18 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/08983abb/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/JaxbConstants.java ---------------------------------------------------------------------- diff --git a/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/JaxbConstants.java b/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/JaxbConstants.java index feba22c..4f47efb 100644 --- a/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/JaxbConstants.java +++ b/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/JaxbConstants.java @@ -19,12 +19,11 @@ package org.apache.camel.converter.jaxb; /** * Constants used by Camel Jaxb module * - * @author Siddharth Sharma - * @since Aug 4, 2016 * */ public interface JaxbConstants { - String JAXB_ESCAPE_HANDLER = "CamelJaxbCharacterEscapeHandler"; + /** Key to identify marshaller properties in the exchange specific to JAX-RI implementation */ + String JAXB_PROVIDER_PROPERTIES = "CamelJaxbProviderCustomProperties"; } http://git-wip-us.apache.org/repos/asf/camel/blob/08983abb/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/JaxbDataFormat.java ---------------------------------------------------------------------- diff --git a/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/JaxbDataFormat.java b/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/JaxbDataFormat.java index 31aadf5..b8009d5 100644 --- a/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/JaxbDataFormat.java +++ b/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/JaxbDataFormat.java @@ -26,8 +26,10 @@ import java.lang.reflect.Method; import java.net.MalformedURLException; import java.net.URL; import java.util.Map; +import java.util.Map.Entry; import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingQueue; + import javax.xml.XMLConstants; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBElement; @@ -46,8 +48,6 @@ import javax.xml.transform.stream.StreamSource; import javax.xml.validation.Schema; import javax.xml.validation.SchemaFactory; -import org.xml.sax.SAXException; - import org.apache.camel.CamelContext; import org.apache.camel.CamelContextAware; import org.apache.camel.Exchange; @@ -61,10 +61,10 @@ import org.apache.camel.util.CamelContextHelper; import org.apache.camel.util.IOHelper; import org.apache.camel.util.ObjectHelper; import org.apache.camel.util.ResourceHelper; +import org.xml.sax.SAXException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.sun.xml.bind.marshaller.CharacterEscapeHandler; /** * A <a href="http://camel.apache.org/data-format.html">data format</a> ({@link DataFormat}) @@ -103,7 +103,7 @@ public class JaxbDataFormat extends ServiceSupport implements DataFormat, DataFo private JaxbXmlStreamWriterWrapper xmlStreamWriterWrapper; private TypeConverter typeConverter; private Schema cachedSchema; - private CharacterEscapeHandler escapeHandler; + private Map<String, Object> jaxbProviderPropertiesMap; public JaxbDataFormat() { } @@ -149,14 +149,16 @@ public class JaxbDataFormat extends ServiceSupport implements DataFormat, DataFo if (namespacePrefixMapper != null) { marshaller.setProperty(namespacePrefixMapper.getRegistrationKey(), namespacePrefixMapper); } - CharacterEscapeHandler escapeHandlerObject = exchange.getProperty(JaxbConstants.JAXB_ESCAPE_HANDLER, CharacterEscapeHandler.class); - if(escapeHandlerObject == null) { - escapeHandlerObject = getEscapeHandler(); + // Inject any JAX-RI custom properties from the exchange or from the instance into the marshaller + Map<String, Object> jaxbProviderPropertiesMap = exchange.getProperty(JaxbConstants.JAXB_PROVIDER_PROPERTIES, Map.class); + if(jaxbProviderPropertiesMap == null) { + jaxbProviderPropertiesMap = getJaxbProviderPropertiesMap(); } - if(escapeHandlerObject != null) { - marshaller.setProperty(CharacterEscapeHandler.class.getName(),escapeHandlerObject); + if(jaxbProviderPropertiesMap != null) { + for(Entry<String, Object> property : jaxbProviderPropertiesMap.entrySet()) { + marshaller.setProperty(property.getKey(), property.getValue()); + } } - marshal(exchange, graph, stream, marshaller); } catch (Exception e) { @@ -546,12 +548,13 @@ public class JaxbDataFormat extends ServiceSupport implements DataFormat, DataFo SCHEMA_FACTORY_POOL.offer(factory); } } - - public CharacterEscapeHandler getEscapeHandler() { - return escapeHandler; + + public Map<String, Object> getJaxbProviderPropertiesMap() { + return jaxbProviderPropertiesMap; } - public void setEscapeHandler(CharacterEscapeHandler escapeHandler) { - this.escapeHandler = escapeHandler; + public void setJaxbProviderPropertiesMap(Map<String, Object> jaxbProviderPropertiesMap) { + this.jaxbProviderPropertiesMap = jaxbProviderPropertiesMap; } + }