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;
     }
+
 }

Reply via email to