Author: ningjiang Date: Thu Nov 26 08:36:15 2009 New Revision: 884462 URL: http://svn.apache.org/viewvc?rev=884462&view=rev Log: CAMEL-2228 Fixed the issue that camel-example-spring-javaconfig can not work in Servicemix
Added: camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/SpringCamelContextFactory.java (with props) Modified: camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/CamelContextFactory.java camel/trunk/components/camel-spring-javaconfig/src/main/java/org/apache/camel/spring/javaconfig/CamelConfiguration.java camel/trunk/examples/camel-example-spring-javaconfig/pom.xml camel/trunk/examples/camel-example-spring-javaconfig/src/main/java/org/apache/camel/example/spring/javaconfig/MyRouteConfig.java Modified: camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/CamelContextFactory.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/CamelContextFactory.java?rev=884462&r1=884461&r2=884462&view=diff ============================================================================== --- camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/CamelContextFactory.java (original) +++ camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/CamelContextFactory.java Thu Nov 26 08:36:15 2009 @@ -47,10 +47,14 @@ this.bundleContext = bundleContext; } + protected DefaultCamelContext newCamelContext() { + return new DefaultCamelContext(); + } + public DefaultCamelContext createContext() { LOG.debug("Creating DefaultCamelContext"); - DefaultCamelContext context = new DefaultCamelContext(); + DefaultCamelContext context = newCamelContext(); if (bundleContext != null) { if (LOG.isDebugEnabled()) { LOG.debug("Using OSGI resolvers"); Added: camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/SpringCamelContextFactory.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/SpringCamelContextFactory.java?rev=884462&view=auto ============================================================================== --- camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/SpringCamelContextFactory.java (added) +++ camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/SpringCamelContextFactory.java Thu Nov 26 08:36:15 2009 @@ -0,0 +1,36 @@ +/** + * 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.osgi; + +import org.apache.camel.impl.DefaultCamelContext; +import org.apache.camel.spring.SpringCamelContext; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; + +public class SpringCamelContextFactory extends CamelContextFactory implements ApplicationContextAware { + private ApplicationContext applicationContext; + + public void setApplicationContext(ApplicationContext context) { + this.applicationContext = context; + } + + @Override + protected DefaultCamelContext newCamelContext() { + return new SpringCamelContext(applicationContext); + } + +} Propchange: camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/SpringCamelContextFactory.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/SpringCamelContextFactory.java ------------------------------------------------------------------------------ svn:keywords = Rev Date Modified: camel/trunk/components/camel-spring-javaconfig/src/main/java/org/apache/camel/spring/javaconfig/CamelConfiguration.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring-javaconfig/src/main/java/org/apache/camel/spring/javaconfig/CamelConfiguration.java?rev=884462&r1=884461&r2=884462&view=diff ============================================================================== --- camel/trunk/components/camel-spring-javaconfig/src/main/java/org/apache/camel/spring/javaconfig/CamelConfiguration.java (original) +++ camel/trunk/components/camel-spring-javaconfig/src/main/java/org/apache/camel/spring/javaconfig/CamelConfiguration.java Thu Nov 26 08:36:15 2009 @@ -52,7 +52,7 @@ */ @Bean public CamelContext camelContext() throws Exception { - SpringCamelContext camelContext = new SpringCamelContext(getApplicationContext()); + CamelContext camelContext = createCamelContext(); setupCamelContext(camelContext); List<RouteBuilder> routes = routes(); for (RoutesBuilder route : routes) { @@ -61,8 +61,13 @@ return camelContext; } - // maybe register the camel component, language here - public void setupCamelContext(CamelContext camelContext) throws Exception { + // Can register the camel component, language here + protected void setupCamelContext(CamelContext camelContext) throws Exception { + + } + + protected CamelContext createCamelContext() throws Exception { + return new SpringCamelContext(getApplicationContext()); } /** Modified: camel/trunk/examples/camel-example-spring-javaconfig/pom.xml URL: http://svn.apache.org/viewvc/camel/trunk/examples/camel-example-spring-javaconfig/pom.xml?rev=884462&r1=884461&r2=884462&view=diff ============================================================================== --- camel/trunk/examples/camel-example-spring-javaconfig/pom.xml (original) +++ camel/trunk/examples/camel-example-spring-javaconfig/pom.xml Thu Nov 26 08:36:15 2009 @@ -33,8 +33,10 @@ <description>An example showing how to work with Camel and Spring Java Config</description> <properties> - <camel.osgi.export.pkg>org.apache.camel.example.spring.*</camel.osgi.export.pkg> - <camel.osgi.import.pkg>org.apache.activemq.xbean,org.apache.activemq.broker,org.apache.activemq.pool,*</camel.osgi.import.pkg> + <camel.osgi.export>org.apache.camel.example.spring.*</camel.osgi.export> + <camel.osgi.import>org.apache.activemq.xbean,org.apache.activemq.broker,org.apache.activemq.pool</camel.osgi.import> + <!-- avoid to import the bunch of spring related package --> + <camel.osgi.dynamic>*</camel.osgi.dynamic> </properties> <dependencies> @@ -46,6 +48,11 @@ <dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-spring-javaconfig</artifactId> + </dependency> + + <dependency> + <groupId>org.apache.camel</groupId> + <artifactId>camel-osgi</artifactId> </dependency> <dependency> @@ -57,6 +64,12 @@ <groupId>org.apache.activemq</groupId> <artifactId>activemq-core</artifactId> </dependency> + + <dependency> + <groupId>org.apache.felix</groupId> + <artifactId>org.osgi.core</artifactId> + <scope>provided</scope> + </dependency> <dependency> <groupId>log4j</groupId> Modified: camel/trunk/examples/camel-example-spring-javaconfig/src/main/java/org/apache/camel/example/spring/javaconfig/MyRouteConfig.java URL: http://svn.apache.org/viewvc/camel/trunk/examples/camel-example-spring-javaconfig/src/main/java/org/apache/camel/example/spring/javaconfig/MyRouteConfig.java?rev=884462&r1=884461&r2=884462&view=diff ============================================================================== --- camel/trunk/examples/camel-example-spring-javaconfig/src/main/java/org/apache/camel/example/spring/javaconfig/MyRouteConfig.java (original) +++ camel/trunk/examples/camel-example-spring-javaconfig/src/main/java/org/apache/camel/example/spring/javaconfig/MyRouteConfig.java Thu Nov 26 08:36:15 2009 @@ -16,14 +16,23 @@ */ package org.apache.camel.example.spring.javaconfig; +import java.util.List; + import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.camel.CamelContext; +import org.apache.camel.RoutesBuilder; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.jms.JmsComponent; + +import org.apache.camel.osgi.SpringCamelContextFactory; +import org.apache.camel.spring.SpringCamelContext; import org.apache.camel.spring.javaconfig.Main; import org.apache.camel.spring.javaconfig.SingleRouteCamelConfiguration; +import org.osgi.framework.BundleContext; +import org.springframework.beans.factory.InitializingBean; import org.springframework.config.java.annotation.Bean; import org.springframework.config.java.annotation.Configuration; +import org.springframework.osgi.context.BundleContextAware; //START SNIPPET: RouteConfig /** @@ -32,7 +41,10 @@ * @version $Revision$ */ @Configuration -public class MyRouteConfig extends SingleRouteCamelConfiguration { +public class MyRouteConfig extends SingleRouteCamelConfiguration implements InitializingBean, BundleContextAware { + + private BundleContext bundleContext; + /** * Allow this route to be run as an application * @@ -43,19 +55,38 @@ new Main().run(args); } + public BundleContext getBundleContext() { + return bundleContext; + } + + public void setBundleContext(BundleContext bundleContext) { + this.bundleContext = bundleContext; + } + + + /** + * Returns the CamelContext which support OSGi + */ + @Override + protected CamelContext createCamelContext() throws Exception { + SpringCamelContextFactory factory = new SpringCamelContextFactory(); + factory.setApplicationContext(getApplicationContext()); + factory.setBundleContext(getBundleContext()); + return factory.createContext(); + } + @Override // setup the ActiveMQ component and register it into the camel context - public void setupCamelContext(CamelContext camelContext) throws Exception { + protected void setupCamelContext(CamelContext camelContext) throws Exception { JmsComponent answer = new JmsComponent(); ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(); - connectionFactory.setBrokerURL("vm://localhost?broker.persistent=false&broker.useJmx=false"); + connectionFactory.setBrokerURL("vm://localhost.spring.javaconfig?marshal=false&broker.persistent=false&broker.useJmx=false"); answer.setConnectionFactory(connectionFactory); camelContext.addComponent("jms", answer); } public static class SomeBean { - public void someMethod(String body) { System.out.println("Received: " + body); } @@ -80,5 +111,9 @@ } }; } + + public void afterPropertiesSet() throws Exception { + // just to make SpringDM happy do nothing here + } } //END SNIPPET: RouteConfig \ No newline at end of file