You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2012/09/27 13:36:08 UTC

svn commit: r1390946 - in /camel/trunk/components: camel-core-xml/src/main/java/org/apache/camel/core/xml/ camel-spring/src/test/java/org/apache/camel/spring/config/ camel-spring/src/test/resources/org/apache/camel/spring/config/

Author: davsclaus
Date: Thu Sep 27 11:36:07 2012
New Revision: 1390946

URL: http://svn.apache.org/viewvc?rev=1390946&view=rev
Log:
CAMEL-5655: Fixed endpoint factorty bean when using multiple camel contexts.

Added:
    camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/DualCamelContextEndpointOutsideTest.java
      - copied, changed from r1390936, camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/management/DualCamelContextManagedTest.java
    camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/config/DualCamelContextEndpointOutsideTest.xml
      - copied, changed from r1390936, camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/management/dualCamelContextManagedTest.xml
Modified:
    camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelFactoryBean.java

Modified: camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelFactoryBean.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelFactoryBean.java?rev=1390946&r1=1390945&r2=1390946&view=diff
==============================================================================
--- camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelFactoryBean.java (original)
+++ camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelFactoryBean.java Thu Sep 27 11:36:07 2012
@@ -63,6 +63,10 @@ public abstract class AbstractCamelFacto
     }
 
     public CamelContext getCamelContext() {
+        if (ObjectHelper.isNotEmpty(camelContextId)) {
+            // always return the context by its id
+            return getCamelContextWithId(camelContextId);
+        }
         return camelContext;
     }
 

Copied: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/DualCamelContextEndpointOutsideTest.java (from r1390936, camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/management/DualCamelContextManagedTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/DualCamelContextEndpointOutsideTest.java?p2=camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/DualCamelContextEndpointOutsideTest.java&p1=camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/management/DualCamelContextManagedTest.java&r1=1390936&r2=1390946&rev=1390946&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/management/DualCamelContextManagedTest.java (original)
+++ camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/DualCamelContextEndpointOutsideTest.java Thu Sep 27 11:36:07 2012
@@ -14,12 +14,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.spring.management;
-
-import java.util.Set;
-import javax.management.MBeanServer;
-import javax.management.ObjectName;
+package org.apache.camel.spring.config;
 
+import org.apache.camel.CamelContext;
+import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.spring.SpringTestSupport;
 import org.springframework.context.support.AbstractXmlApplicationContext;
 import org.springframework.context.support.ClassPathXmlApplicationContext;
@@ -27,58 +25,30 @@ import org.springframework.context.suppo
 /**
  * @version 
  */
-public class DualCamelContextManagedTest extends SpringTestSupport {
-
-    @Override
-    protected boolean useJmx() {
-        return true;
-    }
+public class DualCamelContextEndpointOutsideTest extends SpringTestSupport {
 
     protected AbstractXmlApplicationContext createApplicationContext() {
-        return new ClassPathXmlApplicationContext("org/apache/camel/spring/management/dualCamelContextManagedTest.xml");
+        return new ClassPathXmlApplicationContext("org/apache/camel/spring/config/DualCamelContextEndpointOutsideTest.xml");
     }
 
-    public void testDualCamelContextManaged() throws Exception {
-        
-        MBeanServer mbeanServer = context.getManagementStrategy().getManagementAgent().getMBeanServer();
-
-        ObjectName on1 = null;
-        ObjectName on2 = null;
-        Set<ObjectName> set = mbeanServer.queryNames(new ObjectName("*:type=routes,*"), null);
-        // filter out only camel-A and camel-B
-        for (ObjectName on : set) {
-            if (on.getCanonicalName().contains("camel-A")) {
-                on1 = on;
-            } else if (on.getCanonicalName().contains("camel-B")) {
-                on2 = on;
-            }
-        }
-        assertNotNull("Should have found camel-A route", on1);
-        assertNotNull("Should have found camel-B route", on2);
-
-        assertTrue("Route 1 is missing", on1.getCanonicalName().contains("route1"));
-        assertTrue("Route 2 is missing", on2.getCanonicalName().contains("route2"));
-
-        set = mbeanServer.queryNames(new ObjectName("*:type=endpoints,*"), null);
-        assertTrue("Should be at least 7 endpoints, was: " + set.size(), set.size() >= 7);
-
-        for (ObjectName on : set) {
-            String name = on.getCanonicalName();
-            
-            if (name.contains("mock://mock1")) {
-                String id = (String) mbeanServer.getAttribute(on, "CamelId");
-                assertEquals("camel-A", id);
-            } else if (name.contains("mock://mock2")) {
-                String id = (String) mbeanServer.getAttribute(on, "CamelId");
-                assertEquals("camel-B", id);
-            } else if (name.contains("file://target/route1")) {
-                String id = (String) mbeanServer.getAttribute(on, "CamelId");
-                assertEquals("camel-A", id);
-            } else if (name.contains("file://target/route2")) {
-                String id = (String) mbeanServer.getAttribute(on, "CamelId");
-                assertEquals("camel-B", id);
-            }
-        }
+    public void testDualCamelContextEndpoint() throws Exception {
+        CamelContext camelA = applicationContext.getBean("camel-A", CamelContext.class);
+        assertNotNull(camelA);
+
+        CamelContext camelB = applicationContext.getBean("camel-B", CamelContext.class);
+        assertNotNull(camelB);
+
+        MockEndpoint mockA = camelA.getEndpoint("mock:mock1", MockEndpoint.class);
+        mockA.expectedBodiesReceived("Hello A");
+
+        MockEndpoint mockB = camelB.getEndpoint("mock:mock2", MockEndpoint.class);
+        mockB.expectedBodiesReceived("Hello B");
+
+        camelA.createProducerTemplate().sendBody("direct:start1", "Hello A");
+        camelB.createProducerTemplate().sendBody("direct:start2", "Hello B");
+
+        mockA.assertIsSatisfied();
+        mockB.assertIsSatisfied();
     }
 
 }

Copied: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/config/DualCamelContextEndpointOutsideTest.xml (from r1390936, camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/management/dualCamelContextManagedTest.xml)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/config/DualCamelContextEndpointOutsideTest.xml?p2=camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/config/DualCamelContextEndpointOutsideTest.xml&p1=camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/management/dualCamelContextManagedTest.xml&r1=1390936&r2=1390946&rev=1390946&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/management/dualCamelContextManagedTest.xml (original)
+++ camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/config/DualCamelContextEndpointOutsideTest.xml Thu Sep 27 11:36:07 2012
@@ -22,9 +22,11 @@
        http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
     ">
 
-    <camelContext id="camel-A" xmlns="http://camel.apache.org/schema/spring">
+	<endpoint id="fromFile" camelContextId="camel-A" uri="direct:start1" xmlns="http://camel.apache.org/schema/spring"/>
+	<endpoint id="fromFile2" camelContextId="camel-B" uri="direct:start2" xmlns="http://camel.apache.org/schema/spring"/>
+
+	<camelContext id="camel-A" xmlns="http://camel.apache.org/schema/spring">
         
-        <endpoint id="fromFile" uri="file://target/route1"/>
         <endpoint id="mock1" uri="mock:mock1"/>
 
         <route id="route1">
@@ -36,7 +38,6 @@
 
     <camelContext id="camel-B" xmlns="http://camel.apache.org/schema/spring">
         
-        <endpoint id="fromFile2" uri="file://target/route2"/>
         <endpoint id="mock2" uri="mock:mock2"/>
 
         <route id="route2">