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 2013/01/14 09:05:57 UTC

svn commit: r1432828 - in /camel/trunk/components/camel-cxf-transport/src: main/java/org/apache/camel/component/cxf/transport/spring/ main/resources/schema/configuration/ test/java/org/apache/camel/component/cxf/transport/ test/resources/org/apache/cam...

Author: ningjiang
Date: Mon Jan 14 08:05:56 2013
New Revision: 1432828

URL: http://svn.apache.org/viewvc?rev=1432828&view=rev
Log:
CAMEL-5967 supported to specify the camelContextId through the attribute of destination or conduite

Modified:
    camel/trunk/components/camel-cxf-transport/src/main/java/org/apache/camel/component/cxf/transport/spring/AbstractCamelContextBeanDefinitionParser.java
    camel/trunk/components/camel-cxf-transport/src/main/resources/schema/configuration/camel.xsd
    camel/trunk/components/camel-cxf-transport/src/test/java/org/apache/camel/component/cxf/transport/CamelConduitTest.java
    camel/trunk/components/camel-cxf-transport/src/test/resources/org/apache/camel/component/cxf/transport/CamelConduit.xml

Modified: camel/trunk/components/camel-cxf-transport/src/main/java/org/apache/camel/component/cxf/transport/spring/AbstractCamelContextBeanDefinitionParser.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf-transport/src/main/java/org/apache/camel/component/cxf/transport/spring/AbstractCamelContextBeanDefinitionParser.java?rev=1432828&r1=1432827&r2=1432828&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf-transport/src/main/java/org/apache/camel/component/cxf/transport/spring/AbstractCamelContextBeanDefinitionParser.java (original)
+++ camel/trunk/components/camel-cxf-transport/src/main/java/org/apache/camel/component/cxf/transport/spring/AbstractCamelContextBeanDefinitionParser.java Mon Jan 14 08:05:56 2013
@@ -19,6 +19,7 @@ import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 import org.apache.camel.util.ObjectHelper;
+import org.apache.cxf.common.util.StringUtils;
 import org.apache.cxf.configuration.spring.AbstractBeanDefinitionParser;
 import org.springframework.beans.factory.config.BeanDefinition;
 import org.springframework.beans.factory.support.BeanDefinitionBuilder;
@@ -44,6 +45,13 @@ public class AbstractCamelContextBeanDef
     protected void doParse(Element element, ParserContext ctx, BeanDefinitionBuilder bean) {
         // Parser the id attribute
         bean.setAbstract(true);
+        // Parser the camelContextId attribute
+        final String camelContextId = element.getAttribute("camelContextId");
+        if (!StringUtils.isEmpty(camelContextId)) {
+            wireCamelContext(bean, getContextId(camelContextId));
+            // Don't need to do further parsing here
+            return;
+        }
         NodeList children = element.getChildNodes();
         for (int i = 0; i < children.getLength(); i++) {
             Node n = children.item(i);

Modified: camel/trunk/components/camel-cxf-transport/src/main/resources/schema/configuration/camel.xsd
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf-transport/src/main/resources/schema/configuration/camel.xsd?rev=1432828&r1=1432827&r2=1432828&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf-transport/src/main/resources/schema/configuration/camel.xsd (original)
+++ camel/trunk/components/camel-cxf-transport/src/main/resources/schema/configuration/camel.xsd Mon Jan 14 08:05:56 2013
@@ -41,6 +41,8 @@
                         <xs:element name="camelContextRef" type="xs:string" minOccurs="0"/>
                     </xs:sequence>
                     <xs:attributeGroup ref="cxf-beans:beanAttributes"/>
+                    <!-- here we need to specify the CamelContext reference --> 
+                    <xs:attribute name="camelContextId" type="xs:string" />    
                 </xs:extension>
             </xs:complexContent>
         </xs:complexType>
@@ -55,6 +57,8 @@
                         <xs:element name="camelContextRef" type="xs:string" minOccurs="0"/>                        
                     </xs:sequence>
                     <xs:attributeGroup ref="cxf-beans:beanAttributes"/>
+                    <!-- here we need to specify the CamelContext reference --> 
+                    <xs:attribute name="camelContextId" type="xs:string" />    
                 </xs:extension>
             </xs:complexContent>
         </xs:complexType>

Modified: camel/trunk/components/camel-cxf-transport/src/test/java/org/apache/camel/component/cxf/transport/CamelConduitTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf-transport/src/test/java/org/apache/camel/component/cxf/transport/CamelConduitTest.java?rev=1432828&r1=1432827&r2=1432828&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf-transport/src/test/java/org/apache/camel/component/cxf/transport/CamelConduitTest.java (original)
+++ camel/trunk/components/camel-cxf-transport/src/test/java/org/apache/camel/component/cxf/transport/CamelConduitTest.java Mon Jan 14 08:05:56 2013
@@ -62,6 +62,8 @@ public class CamelConduitTest extends Ca
     public void testCamelConduitConfiguration() throws Exception {
         QName testEndpointQNameA = new QName("http://camel.apache.org/camel-test", "portA");
         QName testEndpointQNameB = new QName("http://camel.apache.org/camel-test", "portB");
+        QName testEndpointQNameC = new QName("http://camel.apache.org/camel-test", "portC");
+        
         // set up the bus with configure file
         SpringBusFactory bf = new SpringBusFactory();
         BusFactory.setDefaultBus(null);
@@ -77,6 +79,17 @@ public class CamelConduitTest extends Ca
         assertNotNull("the camel context which get from camel conduit is not null", context);
         assertEquals("get the wrong camel context", context.getName(), "conduit_context");
         assertEquals("direct://EndpointA", context.getRoutes().get(0).getEndpoint().getEndpointUri());
+        
+        // test the configuration of camelContextId attribute 
+        endpointInfo.setAddress("camel://direct:EndpointA");
+        endpointInfo.setName(testEndpointQNameC);
+        conduit = new CamelConduit(null, bus, endpointInfo);
+        context = conduit.getCamelContext();
+
+        assertNotNull("the camel context which get from camel conduit is not null", context);
+        assertEquals("get the wrong camel context", context.getName(), "conduit_context");
+        assertEquals("direct://EndpointA", context.getRoutes().get(0).getEndpoint().getEndpointUri());
+
 
         endpointInfo.setAddress("camel://direct:EndpointC");
         endpointInfo.setName(testEndpointQNameB);

Modified: camel/trunk/components/camel-cxf-transport/src/test/resources/org/apache/camel/component/cxf/transport/CamelConduit.xml
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf-transport/src/test/resources/org/apache/camel/component/cxf/transport/CamelConduit.xml?rev=1432828&r1=1432827&r2=1432828&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf-transport/src/test/resources/org/apache/camel/component/cxf/transport/CamelConduit.xml (original)
+++ camel/trunk/components/camel-cxf-transport/src/test/resources/org/apache/camel/component/cxf/transport/CamelConduit.xml Mon Jan 14 08:05:56 2013
@@ -36,6 +36,10 @@
    <camel:conduit name="{http://camel.apache.org/camel-test}portA.camel-conduit">
        <camel:camelContextRef>conduit_context</camel:camelContextRef>
    </camel:conduit>
+   
+    <camel:conduit name="{http://camel.apache.org/camel-test}portC.camel-conduit" camelContextId="conduit_context"/>
+      
+   
    <!-- START SNIPPET: example -->
    <camel:conduit name="{http://camel.apache.org/camel-test}portB.camel-conduit">
        <camelContext id="context" xmlns="http://camel.apache.org/schema/spring">