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/14 03:41:00 UTC

svn commit: r996731 - in /camel/trunk/components/camel-cxf/src: main/java/org/apache/camel/component/cxf/cxfbean/ test/java/org/apache/camel/component/cxf/cxfbean/ test/resources/org/apache/camel/component/cxf/cxfbean/

Author: ningjiang
Date: Tue Sep 14 01:41:00 2010
New Revision: 996731

URL: http://svn.apache.org/viewvc?rev=996731&view=rev
Log:
CAMEL-3117 Setting the provider referece from cxfbean's URI

Modified:
    camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/cxfbean/CxfBeanComponent.java
    camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/cxfbean/CxfBeanEndpoint.java
    camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/cxfbean/CxfBeanTest.java
    camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/cxfbean/CxfBeanTest-context.xml

Modified: camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/cxfbean/CxfBeanComponent.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/cxfbean/CxfBeanComponent.java?rev=996731&r1=996730&r2=996731&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/cxfbean/CxfBeanComponent.java (original)
+++ camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/cxfbean/CxfBeanComponent.java Tue Sep 14 01:41:00 2010
@@ -17,6 +17,7 @@
 package org.apache.camel.component.cxf.cxfbean;
 
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;       
@@ -37,7 +38,15 @@ public class CxfBeanComponent extends He
     @Override
     protected Endpoint createEndpoint(String uri, String remaining,
             Map parameters) throws Exception {
+
+        // Extract the comma separated list of providers in advance of the auto-extraction
+        // that a DefaultEndpoint will perform (as the default one does not understand lists).
+        List<Object> providers = resolveAndRemoveReferenceListParameter(parameters, "providers", Object.class);
+
         CxfBeanEndpoint answer = new CxfBeanEndpoint(remaining, this);
+        if (providers != null) {
+            answer.setProviders(providers);
+        }
         setEndpointHeaderFilterStrategy(answer);
         setProperties(answer, parameters);
 

Modified: camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/cxfbean/CxfBeanEndpoint.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/cxfbean/CxfBeanEndpoint.java?rev=996731&r1=996730&r2=996731&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/cxfbean/CxfBeanEndpoint.java (original)
+++ camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/cxfbean/CxfBeanEndpoint.java Tue Sep 14 01:41:00 2010
@@ -51,6 +51,7 @@ public class CxfBeanEndpoint extends Pro
     private HeaderFilterStrategy headerFilterStrategy = new CxfHeaderFilterStrategy();
     private boolean loggingFeatureEnabled;
     private boolean populateFromClass = true;
+    private List<Object> providers;
 
     public CxfBeanEndpoint(String remaining, CxfBeanComponent component) {
         super(remaining, component);
@@ -72,7 +73,7 @@ public class CxfBeanEndpoint extends Pro
         if (obj instanceof List) {
             serviceBeans = (List)obj;
         } else {
-            serviceBeans = new ArrayList<Object>();
+            serviceBeans = new ArrayList<Object>(1);
             serviceBeans.add(obj);
         }
         
@@ -120,7 +121,8 @@ public class CxfBeanEndpoint extends Pro
             bean.setBus(bus);
             if (loggingFeatureEnabled) {
                 bean.getFeatures().add(new LoggingFeature());
-            }  
+            }
+            bean.setProviders(providers);
             server = bean.create();
         }
     }
@@ -189,4 +191,12 @@ public class CxfBeanEndpoint extends Pro
     public boolean isPopulateFromClass() {
         return populateFromClass;
     }
+
+    public List<Object> getProviders() {
+        return providers;
+    }
+
+    public void setProviders(List<Object> providers) {
+        this.providers = providers;
+    }
 }

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=996731&r1=996730&r2=996731&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 Tue Sep 14 01:41:00 2010
@@ -23,6 +23,7 @@ import javax.xml.namespace.QName;
 import javax.xml.ws.Holder;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.Endpoint;
 import org.apache.camel.component.cxf.util.CxfUtils;
 import org.apache.camel.wsdl_first.Person;
 import org.apache.camel.wsdl_first.PersonService;
@@ -41,6 +42,9 @@ import org.springframework.test.context.
 import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 
 /**
  *
@@ -55,6 +59,29 @@ public class CxfBeanTest extends Abstrac
     @Qualifier("camel")
     protected CamelContext camelContext;
     
+    /**
+     * Test that we have an endpoint with 2 providers.
+     */
+    @Test
+    public void testConsumerWithProviders() throws Exception {
+        boolean testedEndpointWithProviders = false;
+        for (Endpoint endpoint : camelContext.getEndpoints()) {
+            if (endpoint instanceof CxfBeanEndpoint) {
+                CxfBeanEndpoint beanEndpoint = (CxfBeanEndpoint)endpoint;
+                if (beanEndpoint.getEndpointUri().equals("customerServiceBean")) {
+                    assertNotNull("The bean endpoint should have provider", beanEndpoint.getProviders());
+                    if (beanEndpoint.getProviders().size() == 2) {
+                        testedEndpointWithProviders = true;
+                        break;
+                    } else if (beanEndpoint.getProviders().size() != 0) {
+                        fail("Unexpected number of providers present");
+                    }
+                }
+            }
+        }
+        assertTrue(testedEndpointWithProviders);
+    }
+    
     @Test
     public void testGetConsumer() throws Exception {
         URL url = new URL("http://localhost:9000/customerservice/customers/123");

Modified: camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/cxfbean/CxfBeanTest-context.xml
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/cxfbean/CxfBeanTest-context.xml?rev=996731&r1=996730&r2=996731&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/cxfbean/CxfBeanTest-context.xml (original)
+++ camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/cxfbean/CxfBeanTest-context.xml Tue Sep 14 01:41:00 2010
@@ -75,9 +75,19 @@
 		<route>
 			<from uri="jetty:http://localhost:9090?matchOnUriPrefix=true" />
 			<to uri="cxfbean:jaxwsBean" />
+		</route>
+		<!-- Provide an RS route for the purposes of testing that providers are added -->				
+		<route>
+			<from uri="direct:start" />
+			<to uri="cxfbean:customerServiceBean?providers=#provider1,#provider2" />
 		</route>				
 	</camelContext>
-	
+
+	<!-- A couple of beans to declare as providers - 
+	     they can be an object of any kind for the purposes of our test. -->
+    <bean id="provider1" class="java.lang.String" />
+    <bean id="provider2" class="java.lang.String" />
+
 	  <camel:conduit name="{http://camel.apache.org/wsdl-first}soap3.camel-conduit">
        <camelContext id="PersonServiceClientContext" xmlns="http://camel.apache.org/schema/spring">
            <route>