Author: ningjiang
Date: Tue Sep 16 17:38:34 2008
New Revision: 696114
URL: http://svn.apache.org/viewvc?rev=696114&view=rev
Log:
CAMEL-912 applied patch with thanks to Mike
Modified:
activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfBinding.java
activemq/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfProducerContextTest.java
Modified:
activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfBinding.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfBinding.java?rev=696114&r1=696113&r2=696114&view=diff
==============================================================================
---
activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfBinding.java
(original)
+++
activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfBinding.java
Tue Sep 16 17:38:34 2008
@@ -86,6 +86,21 @@
// TODO do we propagate header the same way in non-POJO mode?
// CxfHeaderHelper.propagateCamelToCxf(strategy, in.getHeaders(),
answer);
}
+
+ //Ensure there is a request context, which is needed by
propogateContext() below
+ Map<String, Object> requestContext =
CastUtils.cast((Map)answer.get(Client.REQUEST_CONTEXT));
+ if (requestContext == null) {
+ requestContext = new HashMap<String, Object>();
+ }
+ if (exchange.getExchange() != null) {
+ requestContext.putAll(exchange.getExchange());
+ }
+ if (exchange.getProperties() != null) {
+ //Allows other components to pass properties into cxf request
context
+ requestContext.putAll(exchange.getProperties());
+ }
+ answer.put(Client.REQUEST_CONTEXT, requestContext);
+
return answer;
}
Modified:
activemq/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfProducerContextTest.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfProducerContextTest.java?rev=696114&r1=696113&r2=696114&view=diff
==============================================================================
---
activemq/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfProducerContextTest.java
(original)
+++
activemq/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfProducerContextTest.java
Tue Sep 16 17:38:34 2008
@@ -26,11 +26,27 @@
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.apache.cxf.endpoint.Client;
+import org.apache.cxf.helpers.CastUtils;
import org.apache.cxf.message.Message;
// We use context to change the producer's endpoint address here
public class CxfProducerContextTest extends CxfProducerTest {
+ // *** This class extends CxfProducerTest, so see that class for other
tests run by this code
+
+ private static final String TEST_KEY = "sendSimpleMessage-test";
+ private static final String TEST_VALUE = "exchange property value
should get passed through request context";
+
+ public void testExchangePropertyPropagation() throws Exception {
+ CxfExchange exchange = sendSimpleMessage();
+
+ assertNotNull(exchange);
+ assertNotNull(exchange.getInMessage());
+ assertNotNull(exchange.getInMessage().get(Client.REQUEST_CONTEXT));
+ Map<String, Object> requestContext =
CastUtils.cast((Map)exchange.getInMessage().get(Client.REQUEST_CONTEXT));
+ String actualValue = (String)requestContext.get(TEST_KEY);
+ assertEquals("exchange property should get propagated to the request
context", TEST_VALUE, actualValue);
+ }
protected String getSimpleEndpointUri() {
return
"cxf://http://localhost:9000/simple?serviceClass=org.apache.camel.component.cxf.HelloService";
@@ -50,6 +66,7 @@
exchange.getIn().setBody(params);
exchange.getIn().setHeader(Client.REQUEST_CONTEXT ,
requestContext);
exchange.getIn().setHeader(CxfConstants.OPERATION_NAME,
ECHO_OPERATION);
+ exchange.getProperties().put(TEST_KEY, TEST_VALUE);
}
});
return exchange;