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 2009/06/17 15:02:22 UTC

svn commit: r785579 - in /camel/trunk/components/camel-cxf/src: main/java/org/apache/camel/component/cxf/jaxrs/DefaultCxfRsBinding.java test/java/org/apache/camel/component/cxf/jaxrs/CxfRsConsumerTest.java

Author: ningjiang
Date: Wed Jun 17 13:02:22 2009
New Revision: 785579

URL: http://svn.apache.org/viewvc?rev=785579&view=rev
Log:
CAMEL-1700 Adding the verb and URI info on camel-cxfrs endpoint

Modified:
    camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/DefaultCxfRsBinding.java
    camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsConsumerTest.java

Modified: camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/DefaultCxfRsBinding.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/DefaultCxfRsBinding.java?rev=785579&r1=785578&r2=785579&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/DefaultCxfRsBinding.java (original)
+++ camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/DefaultCxfRsBinding.java Wed Jun 17 13:02:22 2009
@@ -39,13 +39,28 @@
     
     public void populateExchangeFromCxfRsRequest(org.apache.cxf.message.Exchange cxfExchange,
                                                  Exchange camelExchange, Method method, Object[] paramArray) {
-        Message inMessage = camelExchange.getIn();
-        //TODO copy the message header into the inMessage
-        inMessage.setHeader(CxfConstants.OPERATION_NAME, method.getName());
-        inMessage.setBody(paramArray);        
+        Message camelMessage = camelExchange.getIn();        
+        //Copy the CXF message header into the Camel inMessage
+        org.apache.cxf.message.Message cxfMessage = cxfExchange.getInMessage();
+        
+        copyMessageHeader(cxfMessage, camelMessage, org.apache.cxf.message.Message.REQUEST_URI, Exchange.HTTP_URI);
+        
+        copyMessageHeader(cxfMessage, camelMessage, org.apache.cxf.message.Message.HTTP_REQUEST_METHOD, Exchange.HTTP_METHOD);
+        
+        copyMessageHeader(cxfMessage, camelMessage, org.apache.cxf.message.Message.PATH_INFO, Exchange.HTTP_PATH);
+        
+        copyMessageHeader(cxfMessage, camelMessage, org.apache.cxf.message.Message.CONTENT_TYPE, Exchange.CONTENT_TYPE);
+        
+        copyMessageHeader(cxfMessage, camelMessage, org.apache.cxf.message.Message.ENCODING, Exchange.HTTP_CHARACTER_ENCODING);
+        
+        copyMessageHeader(cxfMessage, camelMessage, org.apache.cxf.message.Message.QUERY_STRING, Exchange.HTTP_QUERY);
+        
+        copyMessageHeader(cxfMessage, camelMessage, org.apache.cxf.message.Message.ACCEPT_CONTENT_TYPE, Exchange.ACCEPT_CONTENT_TYPE);
+                
+        camelMessage.setHeader(CxfConstants.OPERATION_NAME, method.getName());
+        camelMessage.setBody(paramArray);        
     }
 
-
     public HeaderFilterStrategy getHeaderFilterStrategy() {        
         return headerFilterStrategy;
     }
@@ -54,5 +69,11 @@
     public void setHeaderFilterStrategy(HeaderFilterStrategy strategy) {
         headerFilterStrategy = strategy;        
     }
+    
+    private void copyMessageHeader(org.apache.cxf.message.Message cxfMessage, Message camelMessage, String cxfKey, String camelKey) {
+        if (cxfMessage.get(cxfKey) != null) {
+            camelMessage.setHeader(camelKey, cxfMessage.get(cxfKey));
+        }
+    }
 
 }

Modified: camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsConsumerTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsConsumerTest.java?rev=785579&r1=785578&r2=785579&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsConsumerTest.java (original)
+++ camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsConsumerTest.java Wed Jun 17 13:02:22 2009
@@ -41,12 +41,16 @@
                 from(CXF_RS_ENDPOINT_URI).process(new Processor() {
 
                     public void process(Exchange exchange) throws Exception {
-                        Message inMessage = exchange.getIn();
+                        Message inMessage = exchange.getIn();                        
                         // Get the operation name from in message
                         String operationName = inMessage.getHeader(CxfConstants.OPERATION_NAME, String.class);
                         // The parameter of the invocation is stored in the body of in message
                         String id = (String) inMessage.getBody(Object[].class)[0];
                         if ("getCustomer".equals(operationName)) {
+                            String httpMethod = inMessage.getHeader(Exchange.HTTP_METHOD, String.class);
+                            assertEquals("Get a wrong http method", "GET", httpMethod);
+                            String uri = inMessage.getHeader(Exchange.HTTP_URI, String.class);                            
+                            assertEquals("Get a wrong http uri", "/customerservice/customers/126", uri);
                             Customer customer = new Customer();
                             customer.setId(Long.parseLong(id));
                             customer.setName("Willem");