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

svn commit: r1390918 - in /camel/trunk: components/camel-cdi/src/main/java/org/apache/camel/cdi/internal/ examples/camel-example-cdi/ examples/camel-example-cdi/src/test/java/org/apache/camel/example/cdi/ examples/camel-example-cdi/src/test/java/org/ap...

Author: jstrachan
Date: Thu Sep 27 10:04:36 2012
New Revision: 1390918

URL: http://svn.apache.org/viewvc?rev=1390918&view=rev
Log:
split the example integration test into 2 separate tests; one using an embedded @Produces @ContextAware RouteBuilder producer method and another using a separate TestRouteBuilder; also fixed the bug in CamelContextConfig of not correctly using the correct class for producer methods or beans

Added:
    camel/trunk/examples/camel-example-cdi/src/test/java/org/apache/camel/example/cdi/one/
    camel/trunk/examples/camel-example-cdi/src/test/java/org/apache/camel/example/cdi/one/IntegrationTest.java   (contents, props changed)
      - copied, changed from r1390881, camel/trunk/examples/camel-example-cdi/src/test/java/org/apache/camel/example/cdi/IntegrationTest.java
    camel/trunk/examples/camel-example-cdi/src/test/java/org/apache/camel/example/cdi/two/
    camel/trunk/examples/camel-example-cdi/src/test/java/org/apache/camel/example/cdi/two/SeparateRouteBuilderIntegrationTest.java   (contents, props changed)
      - copied, changed from r1390867, camel/trunk/examples/camel-example-cdi/src/test/java/org/apache/camel/example/cdi/IntegrationTest.java
    camel/trunk/examples/camel-example-cdi/src/test/java/org/apache/camel/example/cdi/two/TestRouteBuilder.java   (with props)
Removed:
    camel/trunk/examples/camel-example-cdi/src/test/java/org/apache/camel/example/cdi/IntegrationTest.java
Modified:
    camel/trunk/components/camel-cdi/src/main/java/org/apache/camel/cdi/internal/CamelContextConfig.java
    camel/trunk/examples/camel-example-cdi/pom.xml

Modified: camel/trunk/components/camel-cdi/src/main/java/org/apache/camel/cdi/internal/CamelContextConfig.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cdi/src/main/java/org/apache/camel/cdi/internal/CamelContextConfig.java?rev=1390918&r1=1390917&r2=1390918&view=diff
==============================================================================
--- camel/trunk/components/camel-cdi/src/main/java/org/apache/camel/cdi/internal/CamelContextConfig.java (original)
+++ camel/trunk/components/camel-cdi/src/main/java/org/apache/camel/cdi/internal/CamelContextConfig.java Thu Sep 27 10:04:36 2012
@@ -28,6 +28,7 @@ import org.apache.camel.RuntimeCamelExce
 import org.apache.camel.cdi.CdiCamelContext;
 import org.apache.camel.model.RouteContainer;
 import org.apache.camel.util.ObjectHelper;
+import org.jboss.weld.bean.ProducerMethod;
 
 /**
  * Configuration options to be applied to a {@link org.apache.camel.CamelContext} by a {@link CamelContextBean}
@@ -43,6 +44,10 @@ public class CamelContextConfig {
         for (Bean<?> bean : routeBuilderBeans) {
             CreationalContext<?> createContext = beanManager.createCreationalContext(bean);
             Class<?> beanClass = bean.getBeanClass();
+            if (bean instanceof ProducerMethod) {
+                ProducerMethod producerMethod = (ProducerMethod) bean;
+                beanClass = producerMethod.getType();
+            }
             Object reference = beanManager.getReference(bean, beanClass, createContext);
             ObjectHelper.notNull(reference, "Could not instantiate bean of type " + beanClass.getName() + " for " + bean);
             try {

Modified: camel/trunk/examples/camel-example-cdi/pom.xml
URL: http://svn.apache.org/viewvc/camel/trunk/examples/camel-example-cdi/pom.xml?rev=1390918&r1=1390917&r2=1390918&view=diff
==============================================================================
--- camel/trunk/examples/camel-example-cdi/pom.xml (original)
+++ camel/trunk/examples/camel-example-cdi/pom.xml Thu Sep 27 10:04:36 2012
@@ -145,6 +145,20 @@
           <failOnMissingWebXml>false</failOnMissingWebXml>
         </configuration>
       </plugin>
+
+      <plugin>
+        <!-- lets re-enable IntegrationTest -->
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <configuration>
+          <includes>
+            <include>**/*Test.java</include>
+          </includes>
+          <excludes>
+            <exclude>**/*XXXTest.*</exclude>
+          </excludes>
+        </configuration>
+      </plugin>
     </plugins>
   </build>
 
@@ -156,6 +170,13 @@
       </activation>
       <dependencies>
         <dependency>
+            <groupId>org.jboss.spec</groupId>
+            <artifactId>jboss-javaee-6.0</artifactId>
+            <version>${jboss-javaee-6-version}</version>
+            <type>pom</type>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
           <groupId>org.jboss.arquillian.container</groupId>
           <artifactId>arquillian-weld-ee-embedded-1.1</artifactId>
           <version>${arquillian-weld-ee-embedded-version}</version>

Copied: camel/trunk/examples/camel-example-cdi/src/test/java/org/apache/camel/example/cdi/one/IntegrationTest.java (from r1390881, camel/trunk/examples/camel-example-cdi/src/test/java/org/apache/camel/example/cdi/IntegrationTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/examples/camel-example-cdi/src/test/java/org/apache/camel/example/cdi/one/IntegrationTest.java?p2=camel/trunk/examples/camel-example-cdi/src/test/java/org/apache/camel/example/cdi/one/IntegrationTest.java&p1=camel/trunk/examples/camel-example-cdi/src/test/java/org/apache/camel/example/cdi/IntegrationTest.java&r1=1390881&r2=1390918&rev=1390918&view=diff
==============================================================================
--- camel/trunk/examples/camel-example-cdi/src/test/java/org/apache/camel/example/cdi/IntegrationTest.java (original)
+++ camel/trunk/examples/camel-example-cdi/src/test/java/org/apache/camel/example/cdi/one/IntegrationTest.java Thu Sep 27 10:04:36 2012
@@ -14,17 +14,20 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.example.cdi;
+package org.apache.camel.example.cdi.one;
 
+import javax.enterprise.context.ApplicationScoped;
 import javax.enterprise.inject.Produces;
 import javax.inject.Inject;
 
+import org.apache.camel.Endpoint;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.cdi.CdiCamelContext;
 import org.apache.camel.cdi.ContextName;
 import org.apache.camel.cdi.Mock;
 import org.apache.camel.cdi.internal.CamelExtension;
 import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.example.cdi.MyRoutes;
 import org.jboss.arquillian.container.test.api.Deployment;
 import org.jboss.arquillian.junit.Arquillian;
 import org.jboss.shrinkwrap.api.ShrinkWrap;
@@ -32,13 +35,18 @@ import org.jboss.shrinkwrap.api.asset.Em
 import org.jboss.shrinkwrap.api.spec.JavaArchive;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
 
 /**
+ * Lets use an embedded {@link RouteBuilder} to test {@link MyRoutes}
  */
 @RunWith(Arquillian.class)
 public class IntegrationTest {
+    private static final transient Logger LOG = LoggerFactory.getLogger(IntegrationTest.class);
 
     @Inject
     MyRoutes config;
@@ -47,12 +55,19 @@ public class IntegrationTest {
     @Mock
     MockEndpoint result;
 
+    static boolean routeConfigured;
+
     @Produces
+    @ApplicationScoped
     @ContextName
     public RouteBuilder createRoutes() {
         return new RouteBuilder() {
             public void configure() {
-                from(config.getResultEndpoint()).to(result);
+                routeConfigured = true;
+                Endpoint resultEndpoint = config.getResultEndpoint();
+                LOG.info("consuming from output: " + resultEndpoint + " to endpoint: " + result);
+
+                from(resultEndpoint).to(result);
             }
         };
     }
@@ -61,6 +76,7 @@ public class IntegrationTest {
     public void integrationTest() throws Exception {
         assertNotNull("config not injected!", config);
         assertNotNull("MockEndpoint result not injected!", result);
+        assertTrue("RouteBuilder has not been configured!", routeConfigured);
 
         result.expectedMessageCount(2);
         result.assertIsSatisfied();
@@ -69,9 +85,10 @@ public class IntegrationTest {
     @Deployment
     public static JavaArchive createDeployment() {
         return ShrinkWrap.create(JavaArchive.class)
-                .addPackage(CdiCamelContext.class.getPackage())
+                //.addPackage(CdiCamelContext.class.getPackage())
                 .addPackage(CamelExtension.class.getPackage())
                 .addPackage(MyRoutes.class.getPackage())
+                .addPackage(IntegrationTest.class.getPackage())
                 .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");
     }
 }

Propchange: camel/trunk/examples/camel-example-cdi/src/test/java/org/apache/camel/example/cdi/one/IntegrationTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Copied: camel/trunk/examples/camel-example-cdi/src/test/java/org/apache/camel/example/cdi/two/SeparateRouteBuilderIntegrationTest.java (from r1390867, camel/trunk/examples/camel-example-cdi/src/test/java/org/apache/camel/example/cdi/IntegrationTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/examples/camel-example-cdi/src/test/java/org/apache/camel/example/cdi/two/SeparateRouteBuilderIntegrationTest.java?p2=camel/trunk/examples/camel-example-cdi/src/test/java/org/apache/camel/example/cdi/two/SeparateRouteBuilderIntegrationTest.java&p1=camel/trunk/examples/camel-example-cdi/src/test/java/org/apache/camel/example/cdi/IntegrationTest.java&r1=1390867&r2=1390918&rev=1390918&view=diff
==============================================================================
--- camel/trunk/examples/camel-example-cdi/src/test/java/org/apache/camel/example/cdi/IntegrationTest.java (original)
+++ camel/trunk/examples/camel-example-cdi/src/test/java/org/apache/camel/example/cdi/two/SeparateRouteBuilderIntegrationTest.java Thu Sep 27 10:04:36 2012
@@ -14,17 +14,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.example.cdi;
+package org.apache.camel.example.cdi.two;
 
-import javax.enterprise.inject.Produces;
-import javax.inject.Inject;
-
-import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.cdi.CdiCamelContext;
-import org.apache.camel.cdi.ContextName;
-import org.apache.camel.cdi.Mock;
 import org.apache.camel.cdi.internal.CamelExtension;
 import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.example.cdi.MyRoutes;
 import org.jboss.arquillian.container.test.api.Deployment;
 import org.jboss.arquillian.junit.Arquillian;
 import org.jboss.shrinkwrap.api.ShrinkWrap;
@@ -33,37 +28,24 @@ import org.jboss.shrinkwrap.api.spec.Jav
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
+import javax.inject.Inject;
+
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
 
 /**
+ * Lets use a separate {@link TestRouteBuilder} to test the routes
  */
 @RunWith(Arquillian.class)
-public class IntegrationTest {
-
+public class SeparateRouteBuilderIntegrationTest {
     @Inject
-    MyRoutes config;
-
-    @Inject
-    @Mock
-    MockEndpoint result;
-
-    @Produces
-    @ContextName
-    public RouteBuilder createRoutes() {
-        return new RouteBuilder() {
-            public void configure() {
-                from(config.getResultEndpoint()).to(result);
-            }
-        };
-    }
+    TestRouteBuilder testRouteBuilder;
 
     @Test
     public void integrationTest() throws Exception {
-        assertNotNull("config not injected!", config);
-        assertNotNull("MockEndpoint result not injected!", result);
+        assertNotNull("testRouteBuilder not injected!", testRouteBuilder);
 
-        result.expectedMessageCount(2);
-        result.assertIsSatisfied();
+        testRouteBuilder.assertIsSatisfied();
     }
 
     @Deployment
@@ -72,6 +54,7 @@ public class IntegrationTest {
                 .addPackage(CdiCamelContext.class.getPackage())
                 .addPackage(CamelExtension.class.getPackage())
                 .addPackage(MyRoutes.class.getPackage())
+                .addPackage(SeparateRouteBuilderIntegrationTest.class.getPackage())
                 .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");
     }
 }

Propchange: camel/trunk/examples/camel-example-cdi/src/test/java/org/apache/camel/example/cdi/two/SeparateRouteBuilderIntegrationTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: camel/trunk/examples/camel-example-cdi/src/test/java/org/apache/camel/example/cdi/two/TestRouteBuilder.java
URL: http://svn.apache.org/viewvc/camel/trunk/examples/camel-example-cdi/src/test/java/org/apache/camel/example/cdi/two/TestRouteBuilder.java?rev=1390918&view=auto
==============================================================================
--- camel/trunk/examples/camel-example-cdi/src/test/java/org/apache/camel/example/cdi/two/TestRouteBuilder.java (added)
+++ camel/trunk/examples/camel-example-cdi/src/test/java/org/apache/camel/example/cdi/two/TestRouteBuilder.java Thu Sep 27 10:04:36 2012
@@ -0,0 +1,64 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.example.cdi.two;
+
+import org.apache.camel.Endpoint;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.cdi.ContextName;
+import org.apache.camel.cdi.Mock;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.example.cdi.MyRoutes;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.enterprise.context.ApplicationScoped;
+import javax.inject.Inject;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+@ApplicationScoped
+@ContextName
+public class TestRouteBuilder extends RouteBuilder {
+    private static final transient Logger LOG = LoggerFactory.getLogger(TestRouteBuilder.class);
+
+    @Inject
+    MyRoutes config;
+
+    @Inject
+    @Mock
+    MockEndpoint result;
+
+    boolean routeConfigured;
+
+    @Override
+    public void configure() throws Exception {
+        routeConfigured = true;
+        Endpoint resultEndpoint = config.getResultEndpoint();
+        LOG.info("consuming from output: " + resultEndpoint + " to : " + result);
+
+        from(resultEndpoint).to(result);
+    }
+
+    public void assertIsSatisfied() {
+        assertTrue("TestRouteBuilder has not been configured!" + routeConfigured, routeConfigured);
+        assertNotNull("MockEndpoint result not injected!", result);
+
+        result.expectedMessageCount(2);
+    }
+}

Propchange: camel/trunk/examples/camel-example-cdi/src/test/java/org/apache/camel/example/cdi/two/TestRouteBuilder.java
------------------------------------------------------------------------------
    svn:eol-style = native