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 2015/12/25 11:58:59 UTC
camel git commit: CAMEL-9275: camel-jackson - Allow to use a custom
ObjectMapper instance
Repository: camel
Updated Branches:
refs/heads/master 69421bf3d -> e4b2eb8b5
CAMEL-9275: camel-jackson - Allow to use a custom ObjectMapper instance
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/e4b2eb8b
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/e4b2eb8b
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/e4b2eb8b
Branch: refs/heads/master
Commit: e4b2eb8b568889fe35a5722696e710bd64afcde0
Parents: 69421bf
Author: Claus Ibsen <da...@apache.org>
Authored: Fri Dec 25 11:58:50 2015 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Fri Dec 25 11:58:50 2015 +0100
----------------------------------------------------------------------
.../model/dataformat/JacksonXMLDataFormat.java | 16 ++++++
.../camel/model/dataformat/JsonDataFormat.java | 16 ++++++
.../component/jackson/JacksonDataFormat.java | 18 ++++---
.../jackson/JacksonObjectMapperTest.java | 51 ++++++++++++++++++++
.../jacksonxml/JacksonXMLDataFormat.java | 18 ++++---
5 files changed, 107 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/e4b2eb8b/camel-core/src/main/java/org/apache/camel/model/dataformat/JacksonXMLDataFormat.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/dataformat/JacksonXMLDataFormat.java b/camel-core/src/main/java/org/apache/camel/model/dataformat/JacksonXMLDataFormat.java
index 13c1f1f..3455bb4 100644
--- a/camel-core/src/main/java/org/apache/camel/model/dataformat/JacksonXMLDataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/model/dataformat/JacksonXMLDataFormat.java
@@ -39,6 +39,8 @@ import org.apache.camel.util.ObjectHelper;
@XmlAccessorType(XmlAccessType.FIELD)
public class JacksonXMLDataFormat extends DataFormatDefinition {
@XmlAttribute
+ private String xmlMapper;
+ @XmlAttribute
private Boolean prettyPrint;
@XmlAttribute
private String unmarshalTypeName;
@@ -71,6 +73,17 @@ public class JacksonXMLDataFormat extends DataFormatDefinition {
super("jacksonxml");
}
+ public String getXmlMapper() {
+ return xmlMapper;
+ }
+
+ /**
+ * Lookup and use the existing XmlMapper with the given id.
+ */
+ public void setXmlMapper(String xmlMapper) {
+ this.xmlMapper = xmlMapper;
+ }
+
public Boolean getPrettyPrint() {
return prettyPrint;
}
@@ -272,6 +285,9 @@ public class JacksonXMLDataFormat extends DataFormatDefinition {
@Override
protected void configureDataFormat(DataFormat dataFormat, CamelContext camelContext) {
+ if (xmlMapper != null) {
+ setProperty(camelContext, dataFormat, "xmlMapper", xmlMapper);
+ }
if (unmarshalType != null) {
setProperty(camelContext, dataFormat, "unmarshalType", unmarshalType);
}
http://git-wip-us.apache.org/repos/asf/camel/blob/e4b2eb8b/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java b/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java
index f20aa41..4223c1a 100644
--- a/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java
@@ -40,6 +40,8 @@ import org.apache.camel.util.ObjectHelper;
@XmlAccessorType(XmlAccessType.FIELD)
public class JsonDataFormat extends DataFormatDefinition {
@XmlAttribute
+ private String objectMapper;
+ @XmlAttribute
private Boolean prettyPrint;
@XmlAttribute @Metadata(defaultValue = "XStream")
private JsonLibrary library = JsonLibrary.XStream;
@@ -80,6 +82,17 @@ public class JsonDataFormat extends DataFormatDefinition {
this.library = library;
}
+ public String getObjectMapper() {
+ return objectMapper;
+ }
+
+ /**
+ * Lookup and use the existing ObjectMapper with the given id when using Jackson.
+ */
+ public void setObjectMapper(String objectMapper) {
+ this.objectMapper = objectMapper;
+ }
+
public Boolean getPrettyPrint() {
return prettyPrint;
}
@@ -328,6 +341,9 @@ public class JsonDataFormat extends DataFormatDefinition {
@Override
protected void configureDataFormat(DataFormat dataFormat, CamelContext camelContext) {
+ if (objectMapper != null) {
+ setProperty(camelContext, dataFormat, "objectMapper", objectMapper);
+ }
if (unmarshalType != null) {
setProperty(camelContext, dataFormat, "unmarshalType", unmarshalType);
}
http://git-wip-us.apache.org/repos/asf/camel/blob/e4b2eb8b/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/JacksonDataFormat.java
----------------------------------------------------------------------
diff --git a/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/JacksonDataFormat.java b/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/JacksonDataFormat.java
index 381b81a..947eac6 100644
--- a/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/JacksonDataFormat.java
+++ b/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/JacksonDataFormat.java
@@ -52,8 +52,8 @@ public class JacksonDataFormat extends ServiceSupport implements DataFormat, Dat
private static final Logger LOG = LoggerFactory.getLogger(JacksonDataFormat.class);
- private final ObjectMapper objectMapper;
private CamelContext camelContext;
+ private ObjectMapper objectMapper;
private Class<? extends Collection> collectionType;
private List<Module> modules;
private String moduleClassNames;
@@ -108,7 +108,6 @@ public class JacksonDataFormat extends ServiceSupport implements DataFormat, Dat
* @param enableJaxbAnnotationModule if it is true, will enable the JaxbAnnotationModule.
*/
public JacksonDataFormat(Class<?> unmarshalType, Class<?> jsonView, boolean enableJaxbAnnotationModule) {
- this.objectMapper = new ObjectMapper();
this.unmarshalType = unmarshalType;
this.jsonView = jsonView;
this.enableJaxbAnnotationModule = enableJaxbAnnotationModule;
@@ -177,6 +176,14 @@ public class JacksonDataFormat extends ServiceSupport implements DataFormat, Dat
// Properties
// -------------------------------------------------------------------------
+ public ObjectMapper getObjectMapper() {
+ return this.objectMapper;
+ }
+
+ public void setObjectMapper(ObjectMapper objectMapper) {
+ this.objectMapper = objectMapper;
+ }
+
public Class<?> getUnmarshalType() {
return this.unmarshalType;
}
@@ -201,10 +208,6 @@ public class JacksonDataFormat extends ServiceSupport implements DataFormat, Dat
this.jsonView = jsonView;
}
- public ObjectMapper getObjectMapper() {
- return this.objectMapper;
- }
-
public String getInclude() {
return include;
}
@@ -398,6 +401,9 @@ public class JacksonDataFormat extends ServiceSupport implements DataFormat, Dat
@Override
protected void doStart() throws Exception {
+ if (objectMapper == null) {
+ objectMapper = new ObjectMapper();
+ }
if (enableJaxbAnnotationModule) {
// Enables JAXB processing
http://git-wip-us.apache.org/repos/asf/camel/blob/e4b2eb8b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonObjectMapperTest.java
----------------------------------------------------------------------
diff --git a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonObjectMapperTest.java b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonObjectMapperTest.java
new file mode 100644
index 0000000..590b3d8
--- /dev/null
+++ b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonObjectMapperTest.java
@@ -0,0 +1,51 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.jackson;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.apache.camel.builder.RouteBuilder;
+
+public class JacksonObjectMapperTest extends JacksonMarshalTest {
+
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+
+ @Override
+ public void configure() throws Exception {
+ ObjectMapper mapper = new ObjectMapper();
+ JacksonDataFormat format = new JacksonDataFormat();
+ format.setObjectMapper(mapper);
+
+ from("direct:in").marshal(format);
+ from("direct:back").unmarshal(format).to("mock:reverse");
+
+ JacksonDataFormat prettyPrintDataFormat = new JacksonDataFormat();
+ prettyPrintDataFormat.setPrettyPrint(true);
+
+ from("direct:inPretty").marshal(prettyPrintDataFormat);
+ from("direct:backPretty").unmarshal(prettyPrintDataFormat).to("mock:reverse");
+
+ JacksonDataFormat formatPojo = new JacksonDataFormat(TestPojo.class);
+
+ from("direct:inPojo").marshal(formatPojo);
+ from("direct:backPojo").unmarshal(formatPojo).to("mock:reversePojo");
+ }
+ };
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/e4b2eb8b/components/camel-jacksonxml/src/main/java/org/apache/camel/component/jacksonxml/JacksonXMLDataFormat.java
----------------------------------------------------------------------
diff --git a/components/camel-jacksonxml/src/main/java/org/apache/camel/component/jacksonxml/JacksonXMLDataFormat.java b/components/camel-jacksonxml/src/main/java/org/apache/camel/component/jacksonxml/JacksonXMLDataFormat.java
index 531877b..869fe66 100644
--- a/components/camel-jacksonxml/src/main/java/org/apache/camel/component/jacksonxml/JacksonXMLDataFormat.java
+++ b/components/camel-jacksonxml/src/main/java/org/apache/camel/component/jacksonxml/JacksonXMLDataFormat.java
@@ -52,8 +52,8 @@ public class JacksonXMLDataFormat extends ServiceSupport implements DataFormat,
private static final Logger LOG = LoggerFactory.getLogger(JacksonXMLDataFormat.class);
- private final XmlMapper xmlMapper;
private CamelContext camelContext;
+ private XmlMapper xmlMapper;
private Class<? extends Collection> collectionType;
private List<Module> modules;
private String moduleClassNames;
@@ -108,7 +108,6 @@ public class JacksonXMLDataFormat extends ServiceSupport implements DataFormat,
* @param enableJaxbAnnotationModule if it is true, will enable the JaxbAnnotationModule.
*/
public JacksonXMLDataFormat(Class<?> unmarshalType, Class<?> jsonView, boolean enableJaxbAnnotationModule) {
- this.xmlMapper = new XmlMapper();
this.unmarshalType = unmarshalType;
this.jsonView = jsonView;
this.enableJaxbAnnotationModule = enableJaxbAnnotationModule;
@@ -177,6 +176,14 @@ public class JacksonXMLDataFormat extends ServiceSupport implements DataFormat,
// Properties
// -------------------------------------------------------------------------
+ public XmlMapper getXmlMapper() {
+ return this.xmlMapper;
+ }
+
+ public void setXmlMapper(XmlMapper xmlMapper) {
+ this.xmlMapper = xmlMapper;
+ }
+
public Class<?> getUnmarshalType() {
return this.unmarshalType;
}
@@ -201,10 +208,6 @@ public class JacksonXMLDataFormat extends ServiceSupport implements DataFormat,
this.jsonView = jsonView;
}
- public XmlMapper getXmlMapper() {
- return this.xmlMapper;
- }
-
public String getInclude() {
return include;
}
@@ -398,6 +401,9 @@ public class JacksonXMLDataFormat extends ServiceSupport implements DataFormat,
@Override
protected void doStart() throws Exception {
+ if (xmlMapper == null) {
+ xmlMapper = new XmlMapper();
+ }
if (enableJaxbAnnotationModule) {
// Enables JAXB processing