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")) {