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