Repository: camel
Updated Branches:
  refs/heads/camel-2.14.x d76f78c59 -> 03d040a2b


CAMEL-7880: rest-dsl with custom data format must use separate instances for 
input and output.


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

Branch: refs/heads/camel-2.14.x
Commit: 03d040a2bdeaf6b524045db0dfcb01aaab1654d3
Parents: d76f78c
Author: Claus Ibsen <davscl...@apache.org>
Authored: Wed Dec 3 21:02:12 2014 +0100
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Wed Dec 3 21:02:27 2014 +0100

----------------------------------------------------------------------
 .../camel/model/rest/RestBindingDefinition.java | 25 ++++++++++++++++----
 1 file changed, 21 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/03d040a2/camel-core/src/main/java/org/apache/camel/model/rest/RestBindingDefinition.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/model/rest/RestBindingDefinition.java
 
b/camel-core/src/main/java/org/apache/camel/model/rest/RestBindingDefinition.java
index 3a120c4..8d0e9ff 100644
--- 
a/camel-core/src/main/java/org/apache/camel/model/rest/RestBindingDefinition.java
+++ 
b/camel-core/src/main/java/org/apache/camel/model/rest/RestBindingDefinition.java
@@ -84,12 +84,20 @@ public class RestBindingDefinition extends 
NoOutputDefinition<RestBindingDefinit
         }
 
         // setup json data format
+        DataFormat json;
+        DataFormat outJson;
+
         String name = context.getRestConfiguration().getJsonDataFormat();
         if (name == null) {
+            // this will create a new instance as we use the default name
             name = "json-jackson";
+            json = context.resolveDataFormat(name);
+            outJson = context.resolveDataFormat(name);
+        } else {
+            json = context.resolveDataFormat(name);
+            // for out we need to make a new instance of the same class
+            outJson = context.getInjector().newInstance(json.getClass(), json);
         }
-        DataFormat json = context.resolveDataFormat(name);
-        DataFormat outJson = context.resolveDataFormat(name);
 
         // is json binding required?
         if (mode.contains("json") && json == null) {
@@ -123,12 +131,21 @@ public class RestBindingDefinition extends 
NoOutputDefinition<RestBindingDefinit
         }
 
         // setup xml data format
+        // setup json data format
+        DataFormat jaxb;
+        DataFormat outJaxb;
+
         name = context.getRestConfiguration().getXmlDataFormat();
         if (name == null) {
+            // this will create a new instance as we use the default name
             name = "jaxb";
+            jaxb = context.resolveDataFormat(name);
+            outJaxb = context.resolveDataFormat(name);
+        } else {
+            jaxb = context.resolveDataFormat(name);
+            // for out we need to make a new instance of the same class
+            outJaxb = context.getInjector().newInstance(jaxb.getClass(), json);
         }
-        DataFormat jaxb = context.resolveDataFormat(name);
-        DataFormat outJaxb = context.resolveDataFormat(name);
         // is xml binding required?
         if (mode.contains("xml") && jaxb == null) {
             throw new IllegalArgumentException("XML DataFormat " + name + " 
not found.");

Reply via email to