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 2016/08/08 06:19:33 UTC

[3/3] camel git commit: CAMEL-10219: Add support in JAXB module to use injected CharacterEscapeHandler / custom properties. This closes #1109.

CAMEL-10219: Add support in JAXB module to use injected CharacterEscapeHandler / custom properties. This closes #1109.


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/54061ed1
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/54061ed1
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/54061ed1

Branch: refs/heads/master
Commit: 54061ed113536dd1cf03755b11de480164fe77cd
Parents: 08983ab
Author: Claus Ibsen <da...@apache.org>
Authored: Mon Aug 8 08:18:26 2016 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Mon Aug 8 08:18:26 2016 +0200

----------------------------------------------------------------------
 .../camel/model/dataformat/JaxbDataFormat.java  | 23 +++++++++++-
 .../camel/component/gson/GsonDataFormat.java    |  1 -
 .../camel/converter/jaxb/JaxbConstants.java     | 10 +++---
 .../camel/converter/jaxb/JaxbDataFormat.java    | 37 +++++++++++---------
 .../springboot/JaxbDataFormatConfiguration.java | 13 +++++++
 5 files changed, 61 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/54061ed1/camel-core/src/main/java/org/apache/camel/model/dataformat/JaxbDataFormat.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/dataformat/JaxbDataFormat.java b/camel-core/src/main/java/org/apache/camel/model/dataformat/JaxbDataFormat.java
index c894b5d..eb10b83 100644
--- a/camel-core/src/main/java/org/apache/camel/model/dataformat/JaxbDataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/model/dataformat/JaxbDataFormat.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.model.dataformat;
 
+import java.util.Map;
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
@@ -26,6 +27,7 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.model.DataFormatDefinition;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.Metadata;
+import org.apache.camel.util.CamelContextHelper;
 import org.apache.camel.util.ObjectHelper;
 
 /**
@@ -68,6 +70,8 @@ public class JaxbDataFormat extends DataFormatDefinition {
     private String schemaLocation;
     @XmlAttribute
     private String noNamespaceSchemaLocation;
+    @XmlAttribute
+    private String jaxbProviderProperties;
 
     public JaxbDataFormat() {
         super("jaxb");
@@ -259,6 +263,18 @@ public class JaxbDataFormat extends DataFormatDefinition {
         this.noNamespaceSchemaLocation = schemaLocation;
     }
 
+    public String getJaxbProviderProperties() {
+        return jaxbProviderProperties;
+    }
+
+    /**
+     * Refers to a custom java.util.Map to lookup in the registry containing custom JAXB provider properties
+     * to be used with the JAXB marshaller.
+     */
+    public void setJaxbProviderProperties(String jaxbProviderProperties) {
+        this.jaxbProviderProperties = jaxbProviderProperties;
+    }
+
     @Override
     protected void configureDataFormat(DataFormat dataFormat, CamelContext camelContext) {
         Boolean answer = ObjectHelper.toBoolean(getPrettyPrint());
@@ -297,6 +313,8 @@ public class JaxbDataFormat extends DataFormatDefinition {
         } else { // the default value is false
             setProperty(camelContext, dataFormat, "fragment", Boolean.FALSE);
         }
+
+        setProperty(camelContext, dataFormat, "contextPath", contextPath);
         if (partClass != null) {
             setProperty(camelContext, dataFormat, "partClass", partClass);
         }
@@ -309,7 +327,6 @@ public class JaxbDataFormat extends DataFormatDefinition {
         if (namespacePrefixRef != null) {
             setProperty(camelContext, dataFormat, "namespacePrefixRef", namespacePrefixRef);
         }
-        setProperty(camelContext, dataFormat, "contextPath", contextPath);
         if (schema != null) {
             setProperty(camelContext, dataFormat, "schema", schema);
         }
@@ -322,5 +339,9 @@ public class JaxbDataFormat extends DataFormatDefinition {
         if (noNamespaceSchemaLocation != null) {
             setProperty(camelContext, dataFormat, "noNamespaceSchemaLocation", noNamespaceSchemaLocation);
         }
+        if (jaxbProviderProperties != null) {
+            Map map = CamelContextHelper.mandatoryLookup(camelContext, jaxbProviderProperties, Map.class);
+            setProperty(camelContext, dataFormat, "jaxbProviderProperties", map);
+        }
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/54061ed1/components/camel-gson/src/main/java/org/apache/camel/component/gson/GsonDataFormat.java
----------------------------------------------------------------------
diff --git a/components/camel-gson/src/main/java/org/apache/camel/component/gson/GsonDataFormat.java b/components/camel-gson/src/main/java/org/apache/camel/component/gson/GsonDataFormat.java
index 79ccb5e..e480c5d 100644
--- a/components/camel-gson/src/main/java/org/apache/camel/component/gson/GsonDataFormat.java
+++ b/components/camel-gson/src/main/java/org/apache/camel/component/gson/GsonDataFormat.java
@@ -25,7 +25,6 @@ import java.io.OutputStreamWriter;
 import java.lang.reflect.Type;
 import java.util.Arrays;
 import java.util.List;
-import java.util.Map;
 
 import com.google.gson.ExclusionStrategy;
 import com.google.gson.FieldNamingPolicy;

http://git-wip-us.apache.org/repos/asf/camel/blob/54061ed1/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 4f47efb..a1183cd 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
@@ -18,12 +18,12 @@ package org.apache.camel.converter.jaxb;
 
 /**
  * Constants used by Camel Jaxb module
- * 
- *
  */
 public interface JaxbConstants {
-    
-    /** Key to identify marshaller properties in the exchange specific to JAX-RI implementation */
-    String JAXB_PROVIDER_PROPERTIES  = "CamelJaxbProviderCustomProperties";
+
+    /**
+     * Key to identify custom marshaller properties in the exchange specific to JAX-RI implementation
+     */
+    String JAXB_PROVIDER_PROPERTIES = "CamelJaxbProviderProperties";
 
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/54061ed1/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 b8009d5..fbd6636 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
@@ -48,6 +48,8 @@ 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,7 +63,7 @@ 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;
 
@@ -103,7 +105,7 @@ public class JaxbDataFormat extends ServiceSupport implements DataFormat, DataFo
     private JaxbXmlStreamWriterWrapper xmlStreamWriterWrapper;
     private TypeConverter typeConverter;
     private Schema cachedSchema;
-    private Map<String, Object> jaxbProviderPropertiesMap;
+    private Map<String, Object> jaxbProviderProperties;
 
     public JaxbDataFormat() {
     }
@@ -149,13 +151,16 @@ public class JaxbDataFormat extends ServiceSupport implements DataFormat, DataFo
             if (namespacePrefixMapper != null) {
                 marshaller.setProperty(namespacePrefixMapper.getRegistrationKey(), namespacePrefixMapper);
             }
-            // 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();
+            // Inject any JAX-RI custom properties from the exchange or from the instance into the marshaller
+            Map<String, Object> customProperties = exchange.getProperty(JaxbConstants.JAXB_PROVIDER_PROPERTIES, Map.class);
+            if (customProperties == null) {
+                customProperties = getJaxbProviderProperties();
             }
-            if(jaxbProviderPropertiesMap != null) {
-                for(Entry<String, Object> property : jaxbProviderPropertiesMap.entrySet()) {
+            if (customProperties != null) {
+                for (Entry<String, Object> property : customProperties.entrySet()) {
+                    if (LOG.isDebugEnabled()) {
+                        LOG.debug("Using JAXB Provider Property {}={}", property.getKey(), property.getValue());
+                    }
                     marshaller.setProperty(property.getKey(), property.getValue());
                 }
             }
@@ -425,6 +430,14 @@ public class JaxbDataFormat extends ServiceSupport implements DataFormat, DataFo
         this.noNamespaceSchemaLocation = schemaLocation;
     }
 
+    public Map<String, Object> getJaxbProviderProperties() {
+        return jaxbProviderProperties;
+    }
+
+    public void setJaxbProviderProperties(Map<String, Object> jaxbProviderProperties) {
+        this.jaxbProviderProperties = jaxbProviderProperties;
+    }
+
     @Override
     @SuppressWarnings("unchecked")
     protected void doStart() throws Exception {
@@ -549,12 +562,4 @@ public class JaxbDataFormat extends ServiceSupport implements DataFormat, DataFo
         }
     }
 
-    public Map<String, Object> getJaxbProviderPropertiesMap() {
-        return jaxbProviderPropertiesMap;
-    }
-
-    public void setJaxbProviderPropertiesMap(Map<String, Object> jaxbProviderPropertiesMap) {
-        this.jaxbProviderPropertiesMap = jaxbProviderPropertiesMap;
-    }
-
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/54061ed1/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/springboot/JaxbDataFormatConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/springboot/JaxbDataFormatConfiguration.java b/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/springboot/JaxbDataFormatConfiguration.java
index d521c10..267bc12 100644
--- a/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/springboot/JaxbDataFormatConfiguration.java
+++ b/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/springboot/JaxbDataFormatConfiguration.java
@@ -104,6 +104,11 @@ public class JaxbDataFormatConfiguration {
      * To define the location of the namespaceless schema
      */
     private String noNamespaceSchemaLocation;
+    /**
+     * Refers to a custom java.util.Map to lookup in the registry containing
+     * custom JAXB provider properties to be used with the JAXB marshaller.
+     */
+    private String jaxbProviderProperties;
 
     public String getContextPath() {
         return contextPath;
@@ -224,4 +229,12 @@ public class JaxbDataFormatConfiguration {
     public void setNoNamespaceSchemaLocation(String noNamespaceSchemaLocation) {
         this.noNamespaceSchemaLocation = noNamespaceSchemaLocation;
     }
+
+    public String getJaxbProviderProperties() {
+        return jaxbProviderProperties;
+    }
+
+    public void setJaxbProviderProperties(String jaxbProviderProperties) {
+        this.jaxbProviderProperties = jaxbProviderProperties;
+    }
 }
\ No newline at end of file