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/07/08 16:42:27 UTC

svn commit: r792166 - in /camel/trunk: camel-core/src/test/java/org/apache/camel/processor/ components/camel-spring/src/main/java/org/apache/camel/spring/spi/ components/camel-spring/src/test/java/org/apache/camel/spring/ components/camel-spring/src/te...

Author: davsclaus
Date: Wed Jul  8 14:42:27 2009
New Revision: 792166

URL: http://svn.apache.org/viewvc?rev=792166&view=rev
Log:
CAMEL-1811: SpringInject capable of doing constructor injection again as in 2.0m1.

Added:
    camel/trunk/camel-core/src/test/java/org/apache/camel/processor/RedeliverWithExceptionAndFaultTest.java   (with props)
    camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/routebuilder/
    camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/routebuilder/CamelRouteBuilderTest.java   (with props)
    camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/routebuilder/MyOtherRoute.java   (with props)
    camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/routebuilder/MyRoute.java   (with props)
    camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/routebuilder/
    camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/routebuilder/camelRouteBuilder.xml
      - copied, changed from r792042, camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/postprocessor/camelCustomPostProcessorOnRouteBuilderTest.xml
Modified:
    camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/SpringInjector.java
    camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/SpringTestSupport.java

Added: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/RedeliverWithExceptionAndFaultTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/RedeliverWithExceptionAndFaultTest.java?rev=792166&view=auto
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/RedeliverWithExceptionAndFaultTest.java (added)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/RedeliverWithExceptionAndFaultTest.java Wed Jul  8 14:42:27 2009
@@ -0,0 +1,95 @@
+/**
+ * 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.processor;
+
+import org.apache.camel.ContextTestSupport;
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.camel.builder.RouteBuilder;
+
+/**
+ * @version $Revision$
+ */
+public class RedeliverWithExceptionAndFaultTest extends ContextTestSupport {
+
+    private static int counter;
+
+    public void testOk() throws Exception {
+        counter = 0;
+
+        getMockEndpoint("mock:result").expectedMessageCount(1);
+
+        String out = template.requestBody("direct:start", "Hello World", String.class);
+        assertEquals("Bye World", out);
+
+        assertMockEndpointsSatisfied();
+    }
+
+    public void testTransientAndPersistentError() throws Exception {
+        counter = 0;
+
+        getMockEndpoint("mock:result").expectedMessageCount(0);
+
+        String out = template.requestBody("direct:start", "Boom", String.class);
+        assertEquals("Persistent error", out);
+
+        assertMockEndpointsSatisfied();
+    }
+
+    public void testTransientAndPersistentErrorWithExchange() throws Exception {
+        counter = 0;
+
+        getMockEndpoint("mock:result").expectedMessageCount(0);
+
+        Exchange out = template.request("direct:start", new Processor() {
+            public void process(Exchange exchange) throws Exception {
+                exchange.getIn().setBody("Boom");
+            }
+        });
+        assertTrue("Should be failed", out.isFailed());
+        assertNull("No exception", out.getException());
+        assertEquals("Persistent error", out.getFault().getBody());
+
+        assertMockEndpointsSatisfied();
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                errorHandler(defaultErrorHandler().maximumRedeliveries(5).redeliverDelay(0));
+
+                from("direct:start")
+                    .process(new Processor() {
+                        public void process(Exchange exchange) throws Exception {
+                            counter++;
+                            if (counter < 3) {
+                                throw new IllegalArgumentException("Try again");
+                            }
+
+                            if (exchange.getIn().getBody().equals("Boom")) {
+                                exchange.getFault().setBody("Persistent error");
+                            } else {
+                                exchange.getOut().setBody("Bye World");
+                            }
+                        }
+                    }).to("mock:result");
+            }
+        };
+    }
+}

Propchange: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/RedeliverWithExceptionAndFaultTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/RedeliverWithExceptionAndFaultTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/SpringInjector.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/SpringInjector.java?rev=792166&r1=792165&r2=792166&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/SpringInjector.java (original)
+++ camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/SpringInjector.java Wed Jul  8 14:42:27 2009
@@ -18,6 +18,7 @@
 
 import org.apache.camel.IsSingleton;
 import org.apache.camel.spi.Injector;
+import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
 import org.springframework.context.ConfigurableApplicationContext;
 
 /**
@@ -27,13 +28,15 @@
  */
 public class SpringInjector implements Injector {
     private final ConfigurableApplicationContext applicationContext;
+    private int autowireMode = AutowireCapableBeanFactory.AUTOWIRE_CONSTRUCTOR;
+    private boolean dependencyCheck;
 
     public SpringInjector(ConfigurableApplicationContext applicationContext) {
         this.applicationContext = applicationContext;
     }
 
     public <T> T newInstance(Class<T> type) {
-        Object value = applicationContext.getBeanFactory().createBean(type);
+        Object value = applicationContext.getBeanFactory().createBean(type, autowireMode, dependencyCheck);
         return type.cast(value);
     }
 
@@ -47,4 +50,19 @@
         return newInstance(type);
     }
 
+    public int getAutowireMode() {
+        return autowireMode;
+    }
+
+    public void setAutowireMode(int autowireMode) {
+        this.autowireMode = autowireMode;
+    }
+
+    public boolean isDependencyCheck() {
+        return dependencyCheck;
+    }
+
+    public void setDependencyCheck(boolean dependencyCheck) {
+        this.dependencyCheck = dependencyCheck;
+    }
 }

Modified: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/SpringTestSupport.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/SpringTestSupport.java?rev=792166&r1=792165&r2=792166&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/SpringTestSupport.java (original)
+++ camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/SpringTestSupport.java Wed Jul  8 14:42:27 2009
@@ -101,7 +101,7 @@
     }
 
     /**
-     * Template method used to exclude {@link org.apache.camel.Routes} from the test time context
+     * Template method used to exclude {@link org.apache.camel.Route} from the test time context
      * route scanning
      *
      * @return Class[] the classes to be excluded from test time context route scanning
@@ -112,7 +112,7 @@
     }
 
     /**
-     * Template method used to exclude a {@link org.apache.camel.Routes} from the test camel context
+     * Template method used to exclude a {@link org.apache.camel.Route} from the test camel context
      */
     protected Class excludeRoute() {
         return null;

Added: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/routebuilder/CamelRouteBuilderTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/routebuilder/CamelRouteBuilderTest.java?rev=792166&view=auto
==============================================================================
--- camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/routebuilder/CamelRouteBuilderTest.java (added)
+++ camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/routebuilder/CamelRouteBuilderTest.java Wed Jul  8 14:42:27 2009
@@ -0,0 +1,42 @@
+/**
+ * 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.routebuilder;
+
+import org.apache.camel.spring.SpringTestSupport;
+import org.springframework.context.support.AbstractXmlApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+/**
+ * @version $Revision$
+ */
+public class CamelRouteBuilderTest extends SpringTestSupport {
+
+    protected AbstractXmlApplicationContext createApplicationContext() {
+        return new ClassPathXmlApplicationContext("org/apache/camel/spring/routebuilder/camelRouteBuilder.xml");
+    }
+
+    public void testShouldProcessAnnotatedFields() throws Exception {
+        getMockEndpoint("mock:a").expectedMessageCount(1);
+        getMockEndpoint("mock:b").expectedMessageCount(1);
+
+        template.sendBody("direct:a", "Hello World");
+        template.sendBody("direct:b", "Bye World");
+
+        assertMockEndpointsSatisfied();
+    }
+
+}

Propchange: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/routebuilder/CamelRouteBuilderTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/routebuilder/CamelRouteBuilderTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/routebuilder/MyOtherRoute.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/routebuilder/MyOtherRoute.java?rev=792166&view=auto
==============================================================================
--- camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/routebuilder/MyOtherRoute.java (added)
+++ camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/routebuilder/MyOtherRoute.java Wed Jul  8 14:42:27 2009
@@ -0,0 +1,41 @@
+/**
+ * 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.routebuilder;
+
+import org.apache.camel.spring.SpringRouteBuilder;
+import org.apache.camel.CamelContextAware;
+import org.apache.camel.CamelContext;
+
+/**
+ * @version $Revision$
+ */
+public class MyOtherRoute extends SpringRouteBuilder implements CamelContextAware {
+
+    private CamelContext ctx;
+
+    public void configure() throws Exception {
+        System.out.println(getContext());
+        from("direct:b").to("mock:b");
+    }
+
+    public void setCamelContext(CamelContext context) {
+        this.ctx = context;
+        if (!"foo".equals(context.getName())) {
+            throw new IllegalArgumentException("Should be named foo");
+        }
+    }
+}

Propchange: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/routebuilder/MyOtherRoute.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/routebuilder/MyOtherRoute.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/routebuilder/MyRoute.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/routebuilder/MyRoute.java?rev=792166&view=auto
==============================================================================
--- camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/routebuilder/MyRoute.java (added)
+++ camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/routebuilder/MyRoute.java Wed Jul  8 14:42:27 2009
@@ -0,0 +1,39 @@
+/**
+ * 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.routebuilder;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spring.SpringRouteBuilder;
+
+/**
+ * @version $Revision$
+ */
+public class MyRoute extends SpringRouteBuilder {
+
+    private CamelContext ctx;
+
+    public MyRoute(CamelContext context) {
+        this.ctx = context;
+        if (!"foo".equals(context.getName())) {
+            throw new IllegalArgumentException("Should be named foo");
+        }
+    }
+
+    public void configure() throws Exception {
+        from("direct:a").to("mock:a");
+    }
+}

Propchange: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/routebuilder/MyRoute.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/routebuilder/MyRoute.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Copied: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/routebuilder/camelRouteBuilder.xml (from r792042, camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/postprocessor/camelCustomPostProcessorOnRouteBuilderTest.xml)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/routebuilder/camelRouteBuilder.xml?p2=camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/routebuilder/camelRouteBuilder.xml&p1=camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/postprocessor/camelCustomPostProcessorOnRouteBuilderTest.xml&r1=792042&r2=792166&rev=792166&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/postprocessor/camelCustomPostProcessorOnRouteBuilderTest.xml (original)
+++ camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/routebuilder/camelRouteBuilder.xml Wed Jul  8 14:42:27 2009
@@ -23,10 +23,8 @@
             http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
             http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
 
-    <context:component-scan base-package="org.apache.camel.spring.postprocessor"/>
-
-    <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
-        <package>org.apache.camel.spring.postprocessor</package>
+    <camelContext id="foo" xmlns="http://camel.apache.org/schema/spring">
+        <package>org.apache.camel.spring.routebuilder</package>
     </camelContext>
 
 </beans>
\ No newline at end of file