You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ni...@apache.org on 2010/09/27 14:37:55 UTC
svn commit: r1001706 - in
/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf:
CxfClientCallback.java CxfProducer.java DefaultCxfBinding.java
Author: ningjiang
Date: Mon Sep 27 12:37:55 2010
New Revision: 1001706
URL: http://svn.apache.org/viewvc?rev=1001706&view=rev
Log:
CAMEL-3166 Set the cxf response message context even the exception is thrown
Modified:
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfClientCallback.java
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java
Modified: camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfClientCallback.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfClientCallback.java?rev=1001706&r1=1001705&r2=1001706&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfClientCallback.java (original)
+++ camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfClientCallback.java Mon Sep 27 12:37:55 2010
@@ -48,7 +48,8 @@ public class CxfClientCallback extends C
public void handleResponse(Map<String, Object> ctx, Object[] res) {
try {
- super.handleResponse(ctx, res);
+ super.handleResponse(ctx, res);
+ } finally {
// bind the CXF response to Camel exchange
if (!boi.getOperationInfo().isOneWay()) {
// copy the InMessage header to OutMessage header
@@ -56,7 +57,6 @@ public class CxfClientCallback extends C
endpoint.getCxfBinding().populateExchangeFromCxfResponse(camelExchange, cxfExchange,
ctx);
}
- } finally {
if (LOG.isDebugEnabled()) {
LOG.debug(Thread.currentThread().getName() + "calling handleResponse");
}
@@ -69,6 +69,13 @@ public class CxfClientCallback extends C
super.handleException(ctx, ex);
camelExchange.setException(ex);
} finally {
+ // copy the context information
+ if (!boi.getOperationInfo().isOneWay()) {
+ // copy the InMessage header to OutMessage header
+ camelExchange.getOut().getHeaders().putAll(camelExchange.getIn().getHeaders());
+ endpoint.getCxfBinding().populateExchangeFromCxfResponse(camelExchange, cxfExchange,
+ ctx);
+ }
if (LOG.isDebugEnabled()) {
LOG.debug(Thread.currentThread().getName() + "calling handleException");
}
Modified: camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java?rev=1001706&r1=1001705&r2=1001706&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java (original)
+++ camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java Mon Sep 27 12:37:55 2010
@@ -123,16 +123,18 @@ public class CxfProducer extends Default
invocationContext.put(Client.RESPONSE_CONTEXT, responseContext);
invocationContext.put(Client.REQUEST_CONTEXT, prepareRequest(camelExchange, cxfExchange));
- // send the CXF request
- client.invoke(boi, getParams(endpoint, camelExchange),
+ try {
+ // send the CXF request
+ client.invoke(boi, getParams(endpoint, camelExchange),
invocationContext, cxfExchange);
-
- // bind the CXF response to Camel exchange
- if (!boi.getOperationInfo().isOneWay()) {
- // copy the InMessage header to OutMessage header
- camelExchange.getOut().getHeaders().putAll(camelExchange.getIn().getHeaders());
- endpoint.getCxfBinding().populateExchangeFromCxfResponse(camelExchange, cxfExchange,
- responseContext);
+ } finally {
+ // bind the CXF response to Camel exchange
+ if (!boi.getOperationInfo().isOneWay()) {
+ // copy the InMessage header to OutMessage header
+ camelExchange.getOut().getHeaders().putAll(camelExchange.getIn().getHeaders());
+ endpoint.getCxfBinding().populateExchangeFromCxfResponse(camelExchange, cxfExchange,
+ responseContext);
+ }
}
}
Modified: camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java?rev=1001706&r1=1001705&r2=1001706&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java (original)
+++ camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java Mon Sep 27 12:37:55 2010
@@ -119,6 +119,10 @@ public class DefaultCxfBinding implement
Map<String, Object> responseContext) {
Message cxfMessage = cxfExchange.getInMessage();
+ // Need to check if the inMessage is set
+ if (cxfMessage == null) {
+ return;
+ }
if (LOG.isTraceEnabled()) {
LOG.trace("Populate exchange from CXF response message: " + cxfMessage);
@@ -577,6 +581,9 @@ public class DefaultCxfBinding implement
protected static List<Element> getPayloadBodyElements(Message message) {
MessageContentsList inObjects = MessageContentsList.getContentsList(message);
+ if (inObjects == null) {
+ return null;
+ }
org.apache.cxf.message.Exchange exchange = message.getExchange();
BindingOperationInfo boi = exchange.getBindingOperationInfo();