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 2017/02/25 18:53:48 UTC
[4/4] camel git commit: CAMEL-10888 - handling in exchange pattern
CAMEL-10888 - handling in exchange pattern
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/81b2e6ab
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/81b2e6ab
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/81b2e6ab
Branch: refs/heads/master
Commit: 81b2e6abb5075ab5601473f3ed0528c876d33d14
Parents: 024b636
Author: onders86 <on...@gmail.com>
Authored: Fri Feb 24 14:38:04 2017 +0300
Committer: Claus Ibsen <da...@apache.org>
Committed: Sat Feb 25 19:49:25 2017 +0100
----------------------------------------------------------------------
.../spring/ws/SpringWebserviceConsumer.java | 22 ++++++----
.../spring/ws/ConsumerMarshallingRouteTest.java | 45 ++++++++++++++++++++
.../spring/ws/StockQuoteResponseProcessor.java | 6 ++-
3 files changed, 63 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/81b2e6ab/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceConsumer.java
----------------------------------------------------------------------
diff --git a/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceConsumer.java b/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceConsumer.java
index 3acd9b2..5d3ebac 100644
--- a/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceConsumer.java
+++ b/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceConsumer.java
@@ -57,21 +57,25 @@ public class SpringWebserviceConsumer extends DefaultConsumer implements Message
// start message processing
getProcessor().process(exchange);
-
+ Message responseMessage = null;
+ Source responseBody = null;
if (exchange.getException() != null) {
throw exchange.getException();
} else if (exchange.getPattern().isOutCapable()) {
- Message responseMessage = exchange.getOut(Message.class);
- if (responseMessage != null) {
- Source responseBody = responseMessage.getBody(Source.class);
- WebServiceMessage response = messageContext.getResponse();
+ responseMessage = exchange.getOut(Message.class);
+ } else {
+ responseMessage = exchange.getIn(Message.class);
+ }
+ if (responseMessage != null) {
+ responseBody = responseMessage.getBody(Source.class);
+ WebServiceMessage response = messageContext.getResponse();
- configuration.getMessageFilter().filterConsumer(exchange, response);
+ configuration.getMessageFilter().filterConsumer(exchange, response);
- XmlConverter xmlConverter = configuration.getXmlConverter();
- xmlConverter.toResult(responseBody, response.getPayloadResult());
- }
+ XmlConverter xmlConverter = configuration.getXmlConverter();
+ xmlConverter.toResult(responseBody, response.getPayloadResult());
}
+
}
private void populateExchangeFromMessageContext(MessageContext messageContext, Exchange exchange) {
http://git-wip-us.apache.org/repos/asf/camel/blob/81b2e6ab/components/camel-spring-ws/src/test/java/org/apache/camel/component/spring/ws/ConsumerMarshallingRouteTest.java
----------------------------------------------------------------------
diff --git a/components/camel-spring-ws/src/test/java/org/apache/camel/component/spring/ws/ConsumerMarshallingRouteTest.java b/components/camel-spring-ws/src/test/java/org/apache/camel/component/spring/ws/ConsumerMarshallingRouteTest.java
index 4bdde73..0413b73 100644
--- a/components/camel-spring-ws/src/test/java/org/apache/camel/component/spring/ws/ConsumerMarshallingRouteTest.java
+++ b/components/camel-spring-ws/src/test/java/org/apache/camel/component/spring/ws/ConsumerMarshallingRouteTest.java
@@ -16,6 +16,7 @@
*/
package org.apache.camel.component.spring.ws;
+import org.apache.camel.ExchangePattern;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.spring.ws.bean.CamelEndpointMapping;
import org.apache.camel.component.spring.ws.jaxb.QuoteRequest;
@@ -79,6 +80,32 @@ public class ConsumerMarshallingRouteTest extends CamelTestSupport {
QuoteResponse quoteResponse = (QuoteResponse) result;
assertEquals("Google Inc.", quoteResponse.getName());
}
+
+ @Test
+ public void consumeWebserviceWithPojoRequestAsInOnly() throws Exception {
+ QuoteRequest request = new QuoteRequest();
+ request.setSymbol("GOOG");
+
+ Object result = template.requestBody("direct:webservice-marshall-asinonly", request);
+
+ assertNotNull(result);
+ assertTrue(result instanceof String);
+ String resultMessage = (String) result;
+ assertTrue(resultMessage.contains("Google Inc."));
+ }
+
+ @Test
+ public void consumeWebserviceWithPojoRequestAndPojoResponseAsInOnly() throws Exception {
+ QuoteRequest request = new QuoteRequest();
+ request.setSymbol("GOOG");
+
+ Object result = template.requestBody("direct:webservice-marshall-unmarshall-asinonly", request);
+
+ assertNotNull(result);
+ assertTrue(result instanceof QuoteResponse);
+ QuoteResponse quoteResponse = (QuoteResponse) result;
+ assertEquals("Google Inc.", quoteResponse.getName());
+ }
@Override
protected RouteBuilder createRouteBuilder() throws Exception {
@@ -104,6 +131,24 @@ public class ConsumerMarshallingRouteTest extends CamelTestSupport {
// provide web service
from("spring-ws:soapaction:http://www.stockquotes.edu/GetQuote?endpointMapping=#endpointMapping").process(
new StockQuoteResponseProcessor());
+
+ // request webservice
+ from("direct:webservice-marshall-asinonly")
+ .marshal(jaxb)
+ .to("spring-ws:http://localhost/?soapAction=http://www.stockquotes.edu/GetQuoteAsInOnly&webServiceTemplate=#webServiceTemplate")
+ .convertBodyTo(String.class);
+
+ // request webservice
+ from("direct:webservice-marshall-unmarshall-asinonly")
+ .marshal(jaxb)
+ .to("spring-ws:http://localhost/?soapAction=http://www.stockquotes.edu/GetQuoteAsInOnly&webServiceTemplate=#webServiceTemplate")
+ .unmarshal(jaxb);
+
+ // provide web service
+ from("spring-ws:soapaction:http://www.stockquotes.edu/GetQuoteAsInOnly?endpointMapping=#endpointMapping").setExchangePattern(ExchangePattern.InOnly).process(
+ new StockQuoteResponseProcessor());
+
+
}
};
}
http://git-wip-us.apache.org/repos/asf/camel/blob/81b2e6ab/components/camel-spring-ws/src/test/java/org/apache/camel/component/spring/ws/StockQuoteResponseProcessor.java
----------------------------------------------------------------------
diff --git a/components/camel-spring-ws/src/test/java/org/apache/camel/component/spring/ws/StockQuoteResponseProcessor.java b/components/camel-spring-ws/src/test/java/org/apache/camel/component/spring/ws/StockQuoteResponseProcessor.java
index d190beb..011160d 100644
--- a/components/camel-spring-ws/src/test/java/org/apache/camel/component/spring/ws/StockQuoteResponseProcessor.java
+++ b/components/camel-spring-ws/src/test/java/org/apache/camel/component/spring/ws/StockQuoteResponseProcessor.java
@@ -40,7 +40,11 @@ public class StockQuoteResponseProcessor implements Processor {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(is);
- exchange.getOut().setBody(doc);
+ if (exchange.getPattern().isOutCapable()) {
+ exchange.getOut().setBody(doc);
+ } else {
+ exchange.getIn().setBody(doc);
+ }
}
}