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>