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 <davscl...@apache.org> Authored: Wed Aug 13 15:35:10 2014 +0200 Committer: Claus Ibsen <davscl...@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")) {