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/10 03:43:40 UTC

svn commit: r995636 - in /camel/trunk/components/camel-cxf/src: main/java/org/apache/camel/component/cxf/cxfbean/ main/java/org/apache/camel/component/cxf/feature/ main/java/org/apache/camel/component/cxf/spring/ test/java/org/apache/camel/component/cx...

Author: ningjiang
Date: Fri Sep 10 01:43:40 2010
New Revision: 995636

URL: http://svn.apache.org/viewvc?rev=995636&view=rev
Log:
CAMEL-3113 Fixed the issue that @QueryParam doesn't work for CxfBeans

Modified:
    camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/cxfbean/DefaultCxfBeanBinding.java
    camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/feature/AbstractDataFormatFeature.java
    camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfEndpointBean.java
    camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/cxfbean/CxfBeanTest.java
    camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/testbean/CustomerService.java

Modified: camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/cxfbean/DefaultCxfBeanBinding.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/cxfbean/DefaultCxfBeanBinding.java?rev=995636&r1=995635&r2=995636&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/cxfbean/DefaultCxfBeanBinding.java (original)
+++ camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/cxfbean/DefaultCxfBeanBinding.java Fri Sep 10 01:43:40 2010
@@ -59,6 +59,8 @@ public class DefaultCxfBeanBinding imple
         // verb
         String verb = getVerb(camelMessage);
         
+        String queryString = getQueryString(camelMessage);
+        
         if (LOG.isTraceEnabled()) {
             LOG.trace("Processing " + camelExchange + ", requestContentType = " + requestContentType 
                     + ", acceptContentTypes = " + acceptContentTypes + ", encoding = " + enc
@@ -76,6 +78,7 @@ public class DefaultCxfBeanBinding imple
         answer.put(org.apache.cxf.message.Message.CONTENT_TYPE, requestContentType);
         answer.put(org.apache.cxf.message.Message.ACCEPT_CONTENT_TYPE, acceptContentTypes);
         answer.put(org.apache.cxf.message.Message.ENCODING, enc);
+        answer.put(org.apache.cxf.message.Message.QUERY_STRING, queryString);
         
         // TODO propagate security context
 
@@ -147,6 +150,11 @@ public class DefaultCxfBeanBinding imple
         String answer = camelMessage.getHeader(Exchange.HTTP_METHOD, String.class);
         return answer;
     }
+    
+    protected String getQueryString(org.apache.camel.Message camelMessage) {
+        String answer = camelMessage.getHeader(Exchange.HTTP_QUERY, String.class);
+        return answer;
+    }
 
     protected String getCharacterEncoding(org.apache.camel.Message camelMessage) {
         String answer = camelMessage.getHeader(Exchange.HTTP_CHARACTER_ENCODING, String.class);

Modified: camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/feature/AbstractDataFormatFeature.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/feature/AbstractDataFormatFeature.java?rev=995636&r1=995635&r2=995636&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/feature/AbstractDataFormatFeature.java (original)
+++ camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/feature/AbstractDataFormatFeature.java Fri Sep 10 01:43:40 2010
@@ -23,6 +23,7 @@ import java.util.logging.Logger;
 
 import org.apache.cxf.feature.AbstractFeature;
 import org.apache.cxf.interceptor.Interceptor;
+import org.apache.cxf.message.Message;
 import org.apache.cxf.phase.PhaseInterceptor;
 
 /**
@@ -32,7 +33,7 @@ public abstract class AbstractDataFormat
 
     protected abstract Logger getLogger();
     
-    protected void removeInterceptorWhichIsInThePhases(List<Interceptor> interceptors, String[] phaseNames) {
+    protected void removeInterceptorWhichIsInThePhases(List<Interceptor<? extends Message>> interceptors, String[] phaseNames) {
         for (Interceptor i : interceptors) {
             if (i instanceof PhaseInterceptor) {
                 PhaseInterceptor p = (PhaseInterceptor)i;
@@ -47,7 +48,7 @@ public abstract class AbstractDataFormat
         }
     }
 
-    protected void removeInterceptorWhichIsOutThePhases(List<Interceptor> interceptors, String[] phaseNames) {
+    protected void removeInterceptorWhichIsOutThePhases(List<Interceptor<? extends Message>> interceptors, String[] phaseNames) {
         for (Interceptor i : interceptors) {
             boolean outside = false;
             if (i instanceof PhaseInterceptor) {
@@ -67,7 +68,7 @@ public abstract class AbstractDataFormat
     }
     
       
-    protected void removeInterceptors(List<Interceptor> interceptors,
+    protected void removeInterceptors(List<Interceptor<? extends Message>> interceptors,
                                       Collection<Class> toBeRemovedInterceptors) {
         for (Interceptor interceptor : interceptors) {
             if (toBeRemovedInterceptors.contains(interceptor.getClass())) {

Modified: camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfEndpointBean.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfEndpointBean.java?rev=995636&r1=995635&r2=995636&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfEndpointBean.java (original)
+++ camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/spring/CxfEndpointBean.java Fri Sep 10 01:43:40 2010
@@ -19,14 +19,16 @@ package org.apache.camel.component.cxf.s
 import java.util.List;
 
 import org.apache.cxf.BusFactory;
+import org.apache.cxf.frontend.AbstractServiceFactory;
 import org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory;
 import org.apache.cxf.service.factory.ReflectionServiceFactoryBean;
+import org.apache.cxf.wsdl11.WSDLEndpointFactory;
 
 import org.springframework.beans.factory.BeanNameAware;
 import org.springframework.beans.factory.DisposableBean;
 import org.springframework.beans.factory.NamedBean;
 
-public class CxfEndpointBean extends AbstractWSDLBasedEndpointFactory
+public class CxfEndpointBean extends AbstractServiceFactory
     implements DisposableBean, BeanNameAware, NamedBean {
     
     private List handlers;
@@ -62,4 +64,5 @@ public class CxfEndpointBean extends Abs
     public String getBeanName() {
         return beanName;
     }
+
 }

Modified: camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/cxfbean/CxfBeanTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/cxfbean/CxfBeanTest.java?rev=995636&r1=995635&r2=995636&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/cxfbean/CxfBeanTest.java (original)
+++ camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/cxfbean/CxfBeanTest.java Fri Sep 10 01:43:40 2010
@@ -68,6 +68,18 @@ public class CxfBeanTest extends Abstrac
         assertEquals("{\"Product\":{\"description\":\"product 323\",\"id\":323}}", CxfUtils.getStringFromInputStream(in));
         // END SNIPPET: clientInvocation
     }
+    
+    @Test
+    public void testGetConsumerWithQueryParam() throws Exception {
+        URL url = new URL("http://localhost:9000/customerservice/customers?id=123");
+
+        try {
+            InputStream in = url.openStream();
+            assertEquals("{\"Customer\":{\"id\":123,\"name\":\"John\"}}", CxfUtils.getStringFromInputStream(in));
+        } catch (Exception ex) {
+            Thread.sleep(3000000);
+        }
+    }
 
     @Test
     public void testGetConsumerAfterReStartCamelContext() throws Exception {

Modified: camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/testbean/CustomerService.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/testbean/CustomerService.java?rev=995636&r1=995635&r2=995636&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/testbean/CustomerService.java (original)
+++ camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/testbean/CustomerService.java Fri Sep 10 01:43:40 2010
@@ -28,6 +28,7 @@ import javax.ws.rs.PUT;
 import javax.ws.rs.Path;
 import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.Response;
 
 
@@ -55,12 +56,21 @@ public class CustomerService {
     }
     
     @GET
+    @Path("/customers")
+    public Customer getCustomerByQueryParam(@QueryParam("id") String id) {
+        long idNumber = Long.parseLong(id);
+        Customer c = customers.get(idNumber);
+        return c;
+    }
+    
+    @GET
     @Path("/customers/")
     @Produces("application/xml")
     public List<Customer> getCustomers() {
         List<Customer> l = new ArrayList<Customer>(customers.values());
         return l;
     }
+    
 
     @PUT
     @Path("/customers/")