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 2014/08/13 15:43:52 UTC

[2/2] git commit: CAMEL-7619: Rest DSL - adding support for xml/json binding using Camel's data formats.

CAMEL-7619: Rest DSL - adding support for xml/json binding using Camel's data formats.


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

Branch: refs/heads/master
Commit: ac8c494f9f52858a45311334e5c1f04e063d4827
Parents: c946373
Author: Claus Ibsen <da...@apache.org>
Authored: Wed Aug 13 15:35:10 2014 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Wed Aug 13 15:35:10 2014 +0200

----------------------------------------------------------------------
 .../processor/binding/RestBindingProcessor.java | 30 +++++++++++---------
 1 file changed, 16 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/ac8c494f/camel-core/src/main/java/org/apache/camel/processor/binding/RestBindingProcessor.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/processor/binding/RestBindingProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/binding/RestBindingProcessor.java
index 52ea190..ec1af34 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/binding/RestBindingProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/binding/RestBindingProcessor.java
@@ -157,20 +157,21 @@ public class RestBindingProcessor extends ServiceSupport implements AsyncProcess
             }
         }
 
-        if (isXml && xmlUnmarshal != null) {
+        // favor json over xml
+        if (isJson && jsonUnmarshal != null) {
             // add reverse operation
-            exchange.addOnCompletion(new RestBindingMarshalOnCompletion(exchange.getFromRouteId(), jsonMarshal, xmlMarshal, true, accept));
+            exchange.addOnCompletion(new RestBindingMarshalOnCompletion(exchange.getFromRouteId(), jsonMarshal, xmlMarshal, false, accept));
             if (ObjectHelper.isNotEmpty(body)) {
-                return xmlUnmarshal.process(exchange, callback);
+                return jsonUnmarshal.process(exchange, callback);
             } else {
                 callback.done(true);
                 return true;
             }
-        } else if (isJson && jsonUnmarshal != null) {
+        } else if (isXml && xmlUnmarshal != null) {
             // add reverse operation
-            exchange.addOnCompletion(new RestBindingMarshalOnCompletion(exchange.getFromRouteId(), jsonMarshal, xmlMarshal, false, accept));
+            exchange.addOnCompletion(new RestBindingMarshalOnCompletion(exchange.getFromRouteId(), jsonMarshal, xmlMarshal, true, accept));
             if (ObjectHelper.isNotEmpty(body)) {
-                return jsonUnmarshal.process(exchange, callback);
+                return xmlUnmarshal.process(exchange, callback);
             } else {
                 callback.done(true);
                 return true;
@@ -302,20 +303,21 @@ public class RestBindingProcessor extends ServiceSupport implements AsyncProcess
             ExchangeHelper.prepareOutToIn(exchange);
 
             try {
-                if (isXml && xmlMarshal != null) {
-                    // make sure there is a content-type with xml
-                    String type = ExchangeHelper.getContentType(exchange);
-                    if (type == null) {
-                        exchange.getIn().setHeader(Exchange.CONTENT_TYPE, "application/xml");
-                    }
-                    xmlMarshal.process(exchange);
-                } else if (isJson && jsonMarshal != null) {
+                // favor json over xml
+                if (isJson && jsonMarshal != null) {
                     // make sure there is a content-type with json
                     String type = ExchangeHelper.getContentType(exchange);
                     if (type == null) {
                         exchange.getIn().setHeader(Exchange.CONTENT_TYPE, "application/json");
                     }
                     jsonMarshal.process(exchange);
+                } else if (isXml && xmlMarshal != null) {
+                    // make sure there is a content-type with xml
+                    String type = ExchangeHelper.getContentType(exchange);
+                    if (type == null) {
+                        exchange.getIn().setHeader(Exchange.CONTENT_TYPE, "application/xml");
+                    }
+                    xmlMarshal.process(exchange);
                 } else {
                     // we could not bind
                     if (bindingMode.equals("auto")) {