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 2010/05/08 16:50:53 UTC

svn commit: r942397 - in /camel/trunk: camel-core/src/main/java/org/apache/camel/model/language/ camel-core/src/main/java/org/apache/camel/processor/ components/camel-spring/src/test/java/org/apache/camel/spring/processor/ components/camel-spring/src/t...

Author: davsclaus
Date: Sat May  8 14:50:53 2010
New Revision: 942397

URL: http://svn.apache.org/viewvc?rev=942397&view=rev
Log:
Made method call expressions support type and ref in Spring XML.

Added:
    camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringMethodCallTest.java   (with props)
    camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringMethodCallTest.xml
      - copied, changed from r942352, camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/aopafter.xml
Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/MethodCallExpression.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RoutingSlip.java

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/MethodCallExpression.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/MethodCallExpression.java?rev=942397&r1=942396&r2=942397&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/MethodCallExpression.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/MethodCallExpression.java Sat May  8 14:50:53 2010
@@ -26,7 +26,6 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.Expression;
 import org.apache.camel.Predicate;
 import org.apache.camel.language.bean.BeanExpression;
-import org.apache.camel.spi.RouteContext;
 import org.apache.camel.util.ObjectHelper;
 
 /**
@@ -39,15 +38,16 @@ import org.apache.camel.util.ObjectHelpe
 @XmlAccessorType(XmlAccessType.FIELD)
 public class MethodCallExpression extends ExpressionDefinition {
     @XmlAttribute(required = false)
+    @Deprecated
     private String bean;
     @XmlAttribute(required = false)
+    private String ref;
+    @XmlAttribute(required = false)
     private String method;
-    @XmlTransient
-    // we don't need to support the beanType class in Spring
+    @XmlAttribute(required = false)
     private Class<?> beanType;
     @XmlTransient
     private Object instance;
-    
 
     public MethodCallExpression() {
     }
@@ -120,6 +120,8 @@ public class MethodCallExpression extend
     protected String beanName() {
         if (bean != null) {
             return bean;
+        } else if (ref != null) {
+            return ref;
         } else if (instance != null) {
             return ObjectHelper.className(instance);
         }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RoutingSlip.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RoutingSlip.java?rev=942397&r1=942396&r2=942397&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RoutingSlip.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RoutingSlip.java Sat May  8 14:50:53 2010
@@ -29,6 +29,7 @@ import org.apache.camel.impl.ProducerCac
 import org.apache.camel.impl.ServiceSupport;
 import org.apache.camel.model.RoutingSlipDefinition;
 import org.apache.camel.util.ExchangeHelper;
+import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.ServiceHelper;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -180,10 +181,10 @@ public class RoutingSlip extends Service
      */
     private String[] recipients(Message message) {
         Object headerValue = message.getHeader(header);
-        if (headerValue != null && !headerValue.equals("")) {
+        if (ObjectHelper.isNotEmpty(headerValue)) {
             return headerValue.toString().split(uriDelimiter);
         }
-        return new String[] {};
+        return new String[]{};
     }
 
     /**

Added: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringMethodCallTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringMethodCallTest.java?rev=942397&view=auto
==============================================================================
--- camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringMethodCallTest.java (added)
+++ camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringMethodCallTest.java Sat May  8 14:50:53 2010
@@ -0,0 +1,60 @@
+/**
+ * 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.processor;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.ContextTestSupport;
+import org.apache.camel.component.mock.MockEndpoint;
+
+import static org.apache.camel.spring.processor.SpringTestHelper.createSpringCamelContext;
+
+/**
+ * @version $Revision$
+ */
+public class SpringMethodCallTest extends ContextTestSupport {
+
+    public void testMethodCallType() throws Exception {
+        MockEndpoint mock = getMockEndpoint("mock:result");
+        mock.expectedBodiesReceived("Camel");
+        mock.expectedHeaderReceived("foo", "Hi Camel");
+
+        template.sendBody("direct:start", "Camel");
+
+        assertMockEndpointsSatisfied();
+    }
+
+    public void testMethodCallRef() throws Exception {
+        MockEndpoint mock = getMockEndpoint("mock:ref");
+        mock.expectedBodiesReceived("Camel");
+        mock.expectedHeaderReceived("foo", "Hi Camel");
+
+        template.sendBody("direct:ref", "Camel");
+
+        assertMockEndpointsSatisfied();
+    }
+
+    protected CamelContext createCamelContext() throws Exception {
+        return createSpringCamelContext(this, "/org/apache/camel/spring/processor/SpringMethodCallTest.xml");
+    }
+
+    public static class MyCoolBean {
+
+        public String cool(String body) {
+            return "Hi " + body;
+        }
+    }
+}

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

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

Copied: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringMethodCallTest.xml (from r942352, camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/aopafter.xml)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringMethodCallTest.xml?p2=camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringMethodCallTest.xml&p1=camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/aopafter.xml&r1=942352&r2=942397&rev=942397&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/aopafter.xml (original)
+++ camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringMethodCallTest.xml Sat May  8 14:50:53 2010
@@ -22,16 +22,24 @@
        http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
     ">
 
-    <!-- START SNIPPET: e1 -->
+    <bean id="coolBean" class="org.apache.camel.spring.processor.SpringMethodCallTest$MyCoolBean"/>
+
     <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
         <route>
             <from uri="direct:start"/>
-            <aop afterUri="mock:after">
-                <transform><constant>Bye World</constant></transform>
-                <to uri="mock:result"/>
-            </aop>
+            <setHeader headerName="foo">
+                <method beanType="org.apache.camel.spring.processor.SpringMethodCallTest$MyCoolBean"/>
+            </setHeader>
+            <to uri="mock:result"/>
+        </route>
+
+        <route>
+            <from uri="direct:ref"/>
+            <setHeader headerName="foo">
+                <method ref="coolBean"/>
+            </setHeader>
+            <to uri="mock:ref"/>
         </route>
     </camelContext>
-    <!-- END SNIPPET: e1 -->
 
 </beans>