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 2009/09/20 10:12:38 UTC
svn commit: r816992 - in /camel/trunk:
camel-core/src/main/java/org/apache/camel/
camel-core/src/main/java/org/apache/camel/impl/
camel-core/src/main/java/org/apache/camel/model/
components/camel-spring-javaconfig/src/main/java/org/apache/camel/spring/...
Author: davsclaus
Date: Sun Sep 20 08:12:37 2009
New Revision: 816992
URL: http://svn.apache.org/viewvc?rev=816992&view=rev
Log:
CAMEL-2027: Fixed NPE when using spring java config.
Added:
camel/trunk/components/camel-spring-javaconfig/src/test/java/org/apache/camel/spring/javaconfig/BeanJavaConfigTest.java (with props)
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java
camel/trunk/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java
camel/trunk/components/camel-spring-javaconfig/src/main/java/org/apache/camel/spring/javaconfig/CamelConfiguration.java
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/SpringCamelContext.java
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java?rev=816992&r1=816991&r2=816992&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java Sun Sep 20 08:12:37 2009
@@ -75,6 +75,14 @@
void addComponent(String componentName, Component component);
/**
+ * Is the given component already registered?
+ *
+ * @param componentName the name of the component
+ * @return the registered Component or <tt>null</tt> if not registered
+ */
+ Component hasComponent(String componentName);
+
+ /**
* Gets a component from the context by name.
*
* @param componentName the name of the component
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java?rev=816992&r1=816991&r2=816992&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java Sun Sep 20 08:12:37 2009
@@ -177,6 +177,10 @@
this.name = name;
}
+ public Component hasComponent(String componentName) {
+ return components.get(componentName);
+ }
+
public void addComponent(String componentName, final Component component) {
ObjectHelper.notNull(component, "component");
synchronized (components) {
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java?rev=816992&r1=816991&r2=816992&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java Sun Sep 20 08:12:37 2009
@@ -57,7 +57,8 @@
private Long delay;
private Boolean autoStartup = Boolean.TRUE;
- public DefaultRouteContext(RouteDefinition route, FromDefinition from, Collection<Route> routes) {
+ public DefaultRouteContext(CamelContext camelContext, RouteDefinition route, FromDefinition from, Collection<Route> routes) {
+ this.camelContext = camelContext;
this.route = route;
this.from = from;
this.routes = routes;
@@ -68,8 +69,8 @@
*/
public DefaultRouteContext(CamelContext camelContext) {
this.camelContext = camelContext;
- routes = new ArrayList<Route>();
- route = new RouteDefinition("temporary");
+ this.routes = new ArrayList<Route>();
+ this.route = new RouteDefinition("temporary");
}
public Endpoint getEndpoint() {
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java?rev=816992&r1=816991&r2=816992&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java Sun Sep 20 08:12:37 2009
@@ -417,7 +417,7 @@
// Implementation methods
// -------------------------------------------------------------------------
protected RouteContext addRoutes(Collection<Route> routes, FromDefinition fromType) throws Exception {
- RouteContext routeContext = new DefaultRouteContext(this, fromType, routes);
+ RouteContext routeContext = new DefaultRouteContext(getCamelContext(), this, fromType, routes);
// configure tracing
if (trace != null) {
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=816992&r1=816991&r2=816992&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 Sun Sep 20 08:12:37 2009
@@ -52,7 +52,7 @@
*/
@Bean
public CamelContext camelContext() throws Exception {
- SpringCamelContext camelContext = new SpringCamelContext();
+ SpringCamelContext camelContext = new SpringCamelContext(getApplicationContext());
setupCamelContext(camelContext);
List<RouteBuilder> routes = routes();
for (RoutesBuilder route : routes) {
Added: camel/trunk/components/camel-spring-javaconfig/src/test/java/org/apache/camel/spring/javaconfig/BeanJavaConfigTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring-javaconfig/src/test/java/org/apache/camel/spring/javaconfig/BeanJavaConfigTest.java?rev=816992&view=auto
==============================================================================
--- camel/trunk/components/camel-spring-javaconfig/src/test/java/org/apache/camel/spring/javaconfig/BeanJavaConfigTest.java (added)
+++ camel/trunk/components/camel-spring-javaconfig/src/test/java/org/apache/camel/spring/javaconfig/BeanJavaConfigTest.java Sun Sep 20 08:12:37 2009
@@ -0,0 +1,86 @@
+/**
+ * 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.spring.javaconfig;
+
+import org.apache.camel.EndpointInject;
+import org.apache.camel.Handler;
+import org.apache.camel.Produce;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.junit.Test;
+import org.springframework.config.java.annotation.Bean;
+import org.springframework.config.java.annotation.Configuration;
+import org.springframework.config.java.test.JavaConfigContextLoader;
+import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
+
+/**
+ * @version $Revision$
+ */
+@ContextConfiguration(
+ locations = "org.apache.camel.spring.javaconfig.BeanJavaConfigTest$ContextConfig",
+ loader = JavaConfigContextLoader.class
+)
+public class BeanJavaConfigTest extends AbstractJUnit4SpringContextTests {
+
+ @EndpointInject(uri = "mock:end")
+ protected MockEndpoint endpoint;
+
+ @EndpointInject(uri = "mock:error")
+ protected MockEndpoint errorEndpoint;
+
+ @Produce(uri = "direct:start")
+ protected ProducerTemplate producer;
+
+ @Test
+ @DirtiesContext
+ public void testRouteUsingBean() throws Exception {
+ endpoint.expectedMessageCount(1);
+ endpoint.message(0).body().isEqualTo("Hello World");
+ producer.sendBody("World");
+ endpoint.assertIsSatisfied();
+ }
+
+ public static class SomeBean {
+
+ @Handler
+ public String someMethod(String body) {
+ return "Hello " + body;
+ }
+ }
+
+ @Configuration
+ public static class ContextConfig extends SingleRouteCamelConfiguration {
+
+ @Bean
+ @Override
+ public RouteBuilder route() {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ from("direct:start")
+ .errorHandler(deadLetterChannel("mock:end"))
+ .bean(new SomeBean())
+ .to("mock:end");
+ }
+ };
+ }
+ }
+
+}
\ No newline at end of file
Propchange: camel/trunk/components/camel-spring-javaconfig/src/test/java/org/apache/camel/spring/javaconfig/BeanJavaConfigTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/components/camel-spring-javaconfig/src/test/java/org/apache/camel/spring/javaconfig/BeanJavaConfigTest.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/SpringCamelContext.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/SpringCamelContext.java?rev=816992&r1=816991&r2=816992&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/SpringCamelContext.java (original)
+++ camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/SpringCamelContext.java Sun Sep 20 08:12:37 2009
@@ -140,7 +140,10 @@
this.applicationContext = applicationContext;
if (applicationContext instanceof ConfigurableApplicationContext) {
- addComponent("spring-event", new EventComponent(applicationContext));
+ // only add if not already added
+ if (hasComponent("spring-event") == null) {
+ addComponent("spring-event", new EventComponent(applicationContext));
+ }
}
}