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>