Author: ningjiang
Date: Thu Mar 7 13:02:56 2013
New Revision: 1453839
URL: http://svn.apache.org/r1453839
Log:
CAMEL-6136 Fix the issue that In message headers not preserved for
camel-xmlrpc producer in Async mode.
Modified:
camel/trunk/components/camel-xmlrpc/src/main/java/org/apache/camel/component/xmlrpc/XmlRpcAsyncCallback.java
camel/trunk/components/camel-xmlrpc/src/test/java/org/apache/camel/component/xmlrpc/XmlRpcComponentTest.java
Modified:
camel/trunk/components/camel-xmlrpc/src/main/java/org/apache/camel/component/xmlrpc/XmlRpcAsyncCallback.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-xmlrpc/src/main/java/org/apache/camel/component/xmlrpc/XmlRpcAsyncCallback.java?rev=1453839&r1=1453838&r2=1453839&view=diff
==============================================================================
---
camel/trunk/components/camel-xmlrpc/src/main/java/org/apache/camel/component/xmlrpc/XmlRpcAsyncCallback.java
(original)
+++
camel/trunk/components/camel-xmlrpc/src/main/java/org/apache/camel/component/xmlrpc/XmlRpcAsyncCallback.java
Thu Mar 7 13:02:56 2013
@@ -41,6 +41,7 @@ public class XmlRpcAsyncCallback impleme
@Override
public void handleResult(XmlRpcRequest pRequest, Object pResult) {
LOG.trace("Get the response {}", pResult);
+ camelExchange.getOut().setHeaders(camelExchange.getIn().getHeaders());
camelExchange.getOut().setBody(pResult);
camelAsyncCallback.done(false);
}
Modified:
camel/trunk/components/camel-xmlrpc/src/test/java/org/apache/camel/component/xmlrpc/XmlRpcComponentTest.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-xmlrpc/src/test/java/org/apache/camel/component/xmlrpc/XmlRpcComponentTest.java?rev=1453839&r1=1453838&r2=1453839&view=diff
==============================================================================
---
camel/trunk/components/camel-xmlrpc/src/test/java/org/apache/camel/component/xmlrpc/XmlRpcComponentTest.java
(original)
+++
camel/trunk/components/camel-xmlrpc/src/test/java/org/apache/camel/component/xmlrpc/XmlRpcComponentTest.java
Thu Mar 7 13:02:56 2013
@@ -16,6 +16,8 @@
*/
package org.apache.camel.component.xmlrpc;
+import java.util.HashMap;
+
import org.apache.camel.CamelExecutionException;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
@@ -57,6 +59,33 @@ public class XmlRpcComponentTest extends
invokeServiceFaultResponse("xmlrpc:http://localhost:" + port +
"/xmlrpc/fault?synchronous=true");
}
+ @Test
+ public void verifyHeadersPreservedSync() throws Exception {
+ verifyHeadersPreserved("direct:sync");
+ }
+
+ @Test
+ public void verifyHeadersPreservedAsync() throws Exception {
+ verifyHeadersPreserved("direct:async");
+ }
+
+ @SuppressWarnings("serial")
+ private void verifyHeadersPreserved(String uri) throws Exception {
+ MockEndpoint mock = getMockEndpoint("mock:result");
+ mock.reset();
+ mock.expectedMessageCount(1);
+ mock.expectedHeaderReceived("UserHeader", "test-header-value");
+ template.requestBodyAndHeaders(uri, new Object[] {"me"},
+ new HashMap<String, Object>() {
+ {
+ put(XmlRpcConstants.METHOD_NAME, "hello");
+ put("UserHeader", "test-header-value");
+ }
+ });
+
+ assertMockEndpointsSatisfied();
+ }
+
private void invokeService(String uri) throws Exception {
MockEndpoint mock = getMockEndpoint("mock:result");
mock.reset();