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 2013/01/03 11:30:33 UTC

svn commit: r1428267 - in /camel/trunk/components/camel-servletlistener/src: main/java/org/apache/camel/component/servletlistener/ test/java/org/apache/camel/component/servletlistener/ test/java/org/apache/camel/component/servletlistener/routes/ test/r...

Author: davsclaus
Date: Thu Jan  3 10:30:33 2013
New Revision: 1428267

URL: http://svn.apache.org/viewvc?rev=1428267&view=rev
Log:
CAMEL-5906: Added new camel-servletlistener component for bootstrapping Camel in web app without using spring etc. Work in progress.

Added:
    camel/trunk/components/camel-servletlistener/src/test/java/org/apache/camel/component/servletlistener/RoutesFromPackageScanTest.java
      - copied, changed from r1428260, camel/trunk/components/camel-servletlistener/src/test/java/org/apache/camel/component/servletlistener/RoutesFromXmlTest.java
    camel/trunk/components/camel-servletlistener/src/test/java/org/apache/camel/component/servletlistener/routes/
    camel/trunk/components/camel-servletlistener/src/test/java/org/apache/camel/component/servletlistener/routes/BarRouteBuilder.java   (with props)
    camel/trunk/components/camel-servletlistener/src/test/java/org/apache/camel/component/servletlistener/routes/FooRouteBuilder.java   (with props)
    camel/trunk/components/camel-servletlistener/src/test/resources/myweb3.xml
      - copied, changed from r1428260, camel/trunk/components/camel-servletlistener/src/test/resources/myweb2.xml
Modified:
    camel/trunk/components/camel-servletlistener/src/main/java/org/apache/camel/component/servletlistener/CamelContextServletListener.java

Modified: camel/trunk/components/camel-servletlistener/src/main/java/org/apache/camel/component/servletlistener/CamelContextServletListener.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-servletlistener/src/main/java/org/apache/camel/component/servletlistener/CamelContextServletListener.java?rev=1428267&r1=1428266&r2=1428267&view=diff
==============================================================================
--- camel/trunk/components/camel-servletlistener/src/main/java/org/apache/camel/component/servletlistener/CamelContextServletListener.java (original)
+++ camel/trunk/components/camel-servletlistener/src/main/java/org/apache/camel/component/servletlistener/CamelContextServletListener.java Thu Jan  3 10:30:33 2013
@@ -19,8 +19,10 @@ package org.apache.camel.component.servl
 import java.io.InputStream;
 import java.util.Enumeration;
 import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
 import java.util.Locale;
 import java.util.Map;
+import java.util.Set;
 import javax.naming.NamingException;
 import javax.servlet.ServletContextEvent;
 import javax.servlet.ServletContextListener;
@@ -99,6 +101,16 @@ public class CamelContextServletListener
                 } catch (Exception e) {
                     throw new RuntimeException("Error adding route(s) " + entry.getKey(), e);
                 }
+            } else if (entry.getValue() instanceof Set) {
+                // its a set of route builders
+                for (Object clazz : (Set) entry.getValue()) {
+                    LOG.debug("Adding route(s) {} -> {}", entry.getKey(), clazz);
+                    try {
+                        camelContext.addRoutes((RoutesBuilder) clazz);
+                    } catch (Exception e) {
+                        throw new RuntimeException("Error adding route(s) " + entry.getKey(), e);
+                    }
+                }
             } else if (entry.getValue() instanceof RoutesDefinition) {
                 LOG.debug("Adding routes {} -> {}", entry.getKey(), entry.getValue());
                 try {
@@ -176,6 +188,22 @@ public class CamelContextServletListener
                         } finally {
                             IOHelper.close(is, entry.getKey(), LOG);
                         }
+                    } else if (value.startsWith("packagescan:")) {
+                        // using package scanning
+                        String path = value.substring(12);
+                        Set<Class<?>> classes = camelContext.getPackageScanClassResolver().findImplementations(RouteBuilder.class, path);
+                        if (!classes.isEmpty()) {
+                            Set<RouteBuilder> builders = new LinkedHashSet<RouteBuilder>();
+                            target = builders;
+                            for (Class<?> clazz : classes) {
+                                try {
+                                    RouteBuilder route = (RouteBuilder) camelContext.getInjector().newInstance(clazz);
+                                    builders.add(route);
+                                } catch (Exception e) {
+                                    throw new RuntimeException("Error creating RouteBuilder " + clazz, e);
+                                }
+                            }
+                        }
                     } else {
                         // assume its a FQN classname for a RouteBuilder class
                         try {

Copied: camel/trunk/components/camel-servletlistener/src/test/java/org/apache/camel/component/servletlistener/RoutesFromPackageScanTest.java (from r1428260, camel/trunk/components/camel-servletlistener/src/test/java/org/apache/camel/component/servletlistener/RoutesFromXmlTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-servletlistener/src/test/java/org/apache/camel/component/servletlistener/RoutesFromPackageScanTest.java?p2=camel/trunk/components/camel-servletlistener/src/test/java/org/apache/camel/component/servletlistener/RoutesFromPackageScanTest.java&p1=camel/trunk/components/camel-servletlistener/src/test/java/org/apache/camel/component/servletlistener/RoutesFromXmlTest.java&r1=1428260&r2=1428267&rev=1428267&view=diff
==============================================================================
--- camel/trunk/components/camel-servletlistener/src/test/java/org/apache/camel/component/servletlistener/RoutesFromXmlTest.java (original)
+++ camel/trunk/components/camel-servletlistener/src/test/java/org/apache/camel/component/servletlistener/RoutesFromPackageScanTest.java Thu Jan  3 10:30:33 2013
@@ -24,10 +24,10 @@ import org.junit.Test;
 /**
  *
  */
-public class RoutesFromXmlTest extends ServletCamelTestSupport {
+public class RoutesFromPackageScanTest extends ServletCamelTestSupport {
 
     protected String getConfiguration() {
-        return "/myweb2.xml";
+        return "/myweb3.xml";
     }
 
     @Test
@@ -37,6 +37,8 @@ public class RoutesFromXmlTest extends S
 
         assertEquals("MyCamel", context.getName());
         assertEquals(2, context.getRoutes().size());
+        assertNotNull(context.getRoute("foo"));
+        assertNotNull(context.getRoute("bar"));
 
         ProducerTemplate template = context.createProducerTemplate();
 

Added: camel/trunk/components/camel-servletlistener/src/test/java/org/apache/camel/component/servletlistener/routes/BarRouteBuilder.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-servletlistener/src/test/java/org/apache/camel/component/servletlistener/routes/BarRouteBuilder.java?rev=1428267&view=auto
==============================================================================
--- camel/trunk/components/camel-servletlistener/src/test/java/org/apache/camel/component/servletlistener/routes/BarRouteBuilder.java (added)
+++ camel/trunk/components/camel-servletlistener/src/test/java/org/apache/camel/component/servletlistener/routes/BarRouteBuilder.java Thu Jan  3 10:30:33 2013
@@ -0,0 +1,31 @@
+/**
+ * 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.component.servletlistener.routes;
+
+import org.apache.camel.builder.RouteBuilder;
+
+/**
+ *
+ */
+public class BarRouteBuilder extends RouteBuilder {
+
+    @Override
+    public void configure() throws Exception {
+        from("direct:bar").routeId("bar")
+            .to("mock:bar");
+    }
+}

Propchange: camel/trunk/components/camel-servletlistener/src/test/java/org/apache/camel/component/servletlistener/routes/BarRouteBuilder.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: camel/trunk/components/camel-servletlistener/src/test/java/org/apache/camel/component/servletlistener/routes/BarRouteBuilder.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: camel/trunk/components/camel-servletlistener/src/test/java/org/apache/camel/component/servletlistener/routes/FooRouteBuilder.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-servletlistener/src/test/java/org/apache/camel/component/servletlistener/routes/FooRouteBuilder.java?rev=1428267&view=auto
==============================================================================
--- camel/trunk/components/camel-servletlistener/src/test/java/org/apache/camel/component/servletlistener/routes/FooRouteBuilder.java (added)
+++ camel/trunk/components/camel-servletlistener/src/test/java/org/apache/camel/component/servletlistener/routes/FooRouteBuilder.java Thu Jan  3 10:30:33 2013
@@ -0,0 +1,31 @@
+/**
+ * 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.component.servletlistener.routes;
+
+import org.apache.camel.builder.RouteBuilder;
+
+/**
+ *
+ */
+public class FooRouteBuilder extends RouteBuilder {
+
+    @Override
+    public void configure() throws Exception {
+        from("direct:foo").routeId("foo")
+            .to("mock:foo");
+    }
+}

Propchange: camel/trunk/components/camel-servletlistener/src/test/java/org/apache/camel/component/servletlistener/routes/FooRouteBuilder.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: camel/trunk/components/camel-servletlistener/src/test/java/org/apache/camel/component/servletlistener/routes/FooRouteBuilder.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Copied: camel/trunk/components/camel-servletlistener/src/test/resources/myweb3.xml (from r1428260, camel/trunk/components/camel-servletlistener/src/test/resources/myweb2.xml)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-servletlistener/src/test/resources/myweb3.xml?p2=camel/trunk/components/camel-servletlistener/src/test/resources/myweb3.xml&p1=camel/trunk/components/camel-servletlistener/src/test/resources/myweb2.xml&r1=1428260&r2=1428267&rev=1428267&view=diff
==============================================================================
--- camel/trunk/components/camel-servletlistener/src/test/resources/myweb2.xml (original)
+++ camel/trunk/components/camel-servletlistener/src/test/resources/myweb3.xml Thu Jan  3 10:30:33 2013
@@ -41,8 +41,8 @@
   <!-- Camel will pickup any parameter names that start with routeBuilder (case ignored) -->
   <context-param>
     <param-name>routeBuilder-MyRoute</param-name>
-    <!-- define the routes as a resource from the classpath by prefixing the value with classpath: -->
-    <param-value>classpath:routes/myRoutes.xml</param-value>
+    <!-- define the routes using package scanning by prefixing with packagescan: -->
+    <param-value>packagescan:org.apache.camel.component.servletlistener.routes</param-value>
   </context-param>
 
   <listener>