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/01/15 21:25:51 UTC

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

Author: davsclaus
Date: Thu Jan 15 12:25:51 2009
New Revision: 734805

URL: http://svn.apache.org/viewvc?rev=734805&view=rev
Log:
CAMEL-1261: expression renamed to languageExpression. Added unit test for using methodCall expression for splitter.

Added:
    activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SplitterMethodCallTest.java   (contents, props changed)
      - copied, changed from r734613, activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SplitterTest.java
    activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringSplitterMethodCallTest.java   (contents, props changed)
      - copied, changed from r734613, activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringChoiceTest.java
    activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/splitterMethodCallTest.xml   (contents, props changed)
      - copied, changed from r734613, activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/choice.xml
Modified:
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/LanguageExpression.java
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/MethodCallExpression.java
    activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/delayer.xml

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/LanguageExpression.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/LanguageExpression.java?rev=734805&r1=734804&r2=734805&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/LanguageExpression.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/LanguageExpression.java Thu Jan 15 12:25:51 2009
@@ -27,7 +27,7 @@
  *
  * @version $Revision$
  */
-@XmlRootElement(name = "expression")
+@XmlRootElement(name = "languageExpression")
 @XmlAccessorType(XmlAccessType.FIELD)
 public class LanguageExpression extends ExpressionType {
     @XmlAttribute

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/MethodCallExpression.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/MethodCallExpression.java?rev=734805&r1=734804&r2=734805&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/MethodCallExpression.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/MethodCallExpression.java Thu Jan 15 12:25:51 2009
@@ -81,4 +81,9 @@
         }
         return getExpression();
     }
+
+    @Override
+    public String toString() {
+        return "bean{" + beanName() + (method != null ? ", method=" + method : "") + "}";
+    }
 }

Copied: activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SplitterMethodCallTest.java (from r734613, activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SplitterTest.java)
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SplitterMethodCallTest.java?p2=activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SplitterMethodCallTest.java&p1=activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SplitterTest.java&r1=734613&r2=734805&rev=734805&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SplitterTest.java (original)
+++ activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SplitterMethodCallTest.java Thu Jan 15 12:25:51 2009
@@ -16,217 +16,57 @@
  */
 package org.apache.camel.processor;
 
+import java.util.Arrays;
 import java.util.List;
-import java.util.Set;
-import java.util.TreeSet;
 
-import org.apache.camel.CamelException;
 import org.apache.camel.ContextTestSupport;
-import org.apache.camel.Exchange;
-import org.apache.camel.Message;
-import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.processor.aggregate.UseLatestAggregationStrategy;
+import org.apache.camel.impl.JndiRegistry;
 
 /**
  * @version $Revision$
  */
-public class SplitterTest extends ContextTestSupport {
+public class SplitterMethodCallTest extends ContextTestSupport {
 
-    public void testSendingAMessageUsingMulticastReceivesItsOwnExchange() throws Exception {
+    public void testSplitUsingMethodCall() throws Exception {
         MockEndpoint resultEndpoint = getMockEndpoint("mock:result");
-        resultEndpoint.expectedBodiesReceived("James", "Guillaume", "Hiram", "Rob");
+        resultEndpoint.expectedBodiesReceived("Claus", "James", "Willem");
 
-        // InOnly
-        template.send("direct:seqential", new Processor() {
-            public void process(Exchange exchange) {
-                Message in = exchange.getIn();
-                in.setBody("James,Guillaume,Hiram,Rob");
-                in.setHeader("foo", "bar");
-            }
-        });
-
-        assertMockEndpointsSatisfied();
-
-        List<Exchange> list = resultEndpoint.getReceivedExchanges();
-        for (int i = 0; i < 4; i++) {
-            Exchange exchange = list.get(i);
-            Message in = exchange.getIn();
-            assertMessageHeader(in, Splitter.SPLIT_COUNTER, i);
-            assertMessageHeader(in, Splitter.SPLIT_SIZE, 4);
-        }
-    }
-
-    public void testSpliterWithAggregationStrategy() throws Exception {
-        MockEndpoint resultEndpoint = getMockEndpoint("mock:result");
-        resultEndpoint.expectedBodiesReceived("James", "Guillaume", "Hiram", "Rob", "Roman");
-
-        Exchange result = template.request("direct:seqential", new Processor() {
-            public void process(Exchange exchange) {
-                Message in = exchange.getIn();
-                in.setBody("James,Guillaume,Hiram,Rob,Roman");
-                in.setHeader("foo", "bar");
-            }
-        });
+        template.sendBody("direct:start", "Claus@James@Willem");
 
         assertMockEndpointsSatisfied();
-        Message out = result.getOut();
-        assertEquals("Roman", out.getBody());
-        assertMessageHeader(out, "foo", "bar");
-        assertMessageHeader(out, Splitter.SPLIT_COUNTER, 4);
-    }
-
-    public void testEmptyBody() {
-        Exchange result = template.request("direct:seqential", new Processor() {
-            public void process(Exchange exchange) throws Exception {
-                exchange.getIn().setHeader("foo", "bar");
-            }
-        });
-
-        assertNull(result.getOut(false));
     }
 
-    public void testSendingAMessageUsingMulticastReceivesItsOwnExchangeParallel() throws Exception {
-        MockEndpoint resultEndpoint = getMockEndpoint("mock:result");
-
-        resultEndpoint.expectsNoDuplicates(body());
-        resultEndpoint.expectedMessageCount(4);
-
-        // InOnly
-        template.send("direct:parallel", new Processor() {
-            public void process(Exchange exchange) {
-                Message in = exchange.getIn();
-                in.setBody("James,Guillaume,Hiram,Rob");
-                in.setHeader("foo", "bar");
-            }
-        });
-
-        assertMockEndpointsSatisfied();
-
-        List<Exchange> list = resultEndpoint.getReceivedExchanges();
-
-        Set<Integer> numbersFound = new TreeSet<Integer>();
-
-        final String[] names = {"James", "Guillaume", "Hiram", "Rob"};
-
-        for (int i = 0; i < 4; i++) {
-            Exchange exchange = list.get(i);
-            Message in = exchange.getIn();
-            Integer splitCounter = in.getHeader(Splitter.SPLIT_COUNTER, Integer.class);
-            numbersFound.add(splitCounter);
-            assertEquals(names[splitCounter], in.getBody());
-            assertMessageHeader(in, Splitter.SPLIT_SIZE, 4);
-        }
-
-        assertEquals(4, numbersFound.size());
+    @Override
+    protected JndiRegistry createRegistry() throws Exception {
+        JndiRegistry jndi = super.createRegistry();
+        jndi.bind("splitterBean", new SplitWordsBean());
+        return jndi;
     }
 
-    public void testSpliterWithAggregationStrategyParallel() throws Exception {
-        MockEndpoint resultEndpoint = getMockEndpoint("mock:result");
-        resultEndpoint.expectedMessageCount(5);
-
-        Exchange result = template.request("direct:parallel", new Processor() {
-            public void process(Exchange exchange) {
-                Message in = exchange.getIn();
-                in.setBody("James,Guillaume,Hiram,Rob,Roman");
-                in.setHeader("foo", "bar");
+    protected RouteBuilder createRouteBuilder() {
+        return new RouteBuilder() {
+            public void configure() {
+                // START SNIPPET: e1
+                from("direct:start")
+                    .split().method("splitterBean", "splitWords")
+                    .to("mock:result");
+                // END SNIPPET: e1
             }
-        });
-
-        assertMockEndpointsSatisfied();
-        Message out = result.getOut();
-
-        assertMessageHeader(out, "foo", "bar");
-        assertEquals((Integer)5, result.getProperty("aggregated", Integer.class));
+        };
     }
-    
-    public void testSpliterWithAggregationStrategyParallelStreaming() throws Exception {
-        MockEndpoint resultEndpoint = getMockEndpoint("mock:result");
-        resultEndpoint.expectedMessageCount(5);
-        resultEndpoint.expectedBodiesReceivedInAnyOrder("James", "Guillaume", "Hiram", "Rob", "Roman");
-
-        Exchange result = template.request("direct:parallel-streaming", new Processor() {
-            public void process(Exchange exchange) {
-                Message in = exchange.getIn();
-                in.setBody("James,Guillaume,Hiram,Rob,Roman");
-                in.setHeader("foo", "bar");
-            }
-        });
 
-        assertMockEndpointsSatisfied();
-        Message out = result.getOut();
-
-        assertMessageHeader(out, "foo", "bar");
-        assertEquals((Integer)5, result.getProperty("aggregated", Integer.class));
-    }
-    
-    public void testSplitterWithStreaming() throws Exception {
-        MockEndpoint resultEndpoint = getMockEndpoint("mock:result");
-        resultEndpoint.expectedMessageCount(5);
-        resultEndpoint.expectedHeaderReceived("foo", "bar");
+    // START SNIPPET: e2
+    public static class SplitWordsBean {
 
-        template.request("direct:streaming", new Processor() {
-            public void process(Exchange exchange) {
-                Message in = exchange.getIn();
-                in.setBody("James,Guillaume,Hiram,Rob,Roman");
-                in.setHeader("foo", "bar");
-            }
-        });
-        
-        assertMockEndpointsSatisfied();
-        for (Exchange exchange : resultEndpoint.getReceivedExchanges()) {
-            assertNotNull(exchange.getIn().getHeader(Splitter.SPLIT_COUNTER));
-            //this header cannot be set when streaming is used
-            assertNull(exchange.getIn().getHeader(Splitter.SPLIT_SIZE));
+        public static List<String> splitWords(String body) {
+            // here we split the payload using java code
+            // we have the true power of Java to do the splitting
+            // as we like. As this is based on a unit test we just do it easy
+            return Arrays.asList(body.split("@"));
         }
 
     }
-    
-    public void testSplitterWithException() throws Exception {
-        MockEndpoint resultEndpoint = getMockEndpoint("mock:result");
-        resultEndpoint.expectedMessageCount(4);
-        resultEndpoint.expectedHeaderReceived("foo", "bar");
-        
-        MockEndpoint failedEndpoint = getMockEndpoint("mock:failed");
-        failedEndpoint.expectedMessageCount(1);
-        failedEndpoint.expectedHeaderReceived("foo", "bar");
-        
-        Exchange result = template.request("direct:exception", new Processor() {
-            public void process(Exchange exchange) {
-                Message in = exchange.getIn();
-                in.setBody("James,Guillaume,Hiram,Rob,Exception");
-                in.setHeader("foo", "bar");
-            }
-        });
-        
-        assertTrue("The result exchange should have a camel exception", result.getException() instanceof CamelException);
-
-        assertMockEndpointsSatisfied();
-    }
-
-    protected RouteBuilder createRouteBuilder() {
-        return new RouteBuilder() {
-            public void configure() {
-                errorHandler(deadLetterChannel("mock:failed").maximumRedeliveries(0));
-                from("direct:seqential").split(body().tokenize(","), new UseLatestAggregationStrategy()).to("mock:result");
-                from("direct:parallel").split(body().tokenize(","), new MyAggregationStrategy()).parallelProcessing(true).to("mock:result");
-                from("direct:streaming").split(body().tokenize(",")).streaming().to("mock:result");
-                from("direct:parallel-streaming").split(body().tokenize(","), new MyAggregationStrategy()).parallelProcessing().streaming().to("mock:result");
-                from("direct:exception")
-                    .split(body().tokenize(","))
-                    .aggregationStrategy(new MyAggregationStrategy())
-                    .parallelProcessing(true).streaming()
-                    .process(new Processor() {
-                        public void process(Exchange exchange) throws Exception {
-                            String string = exchange.getIn().getBody(String.class);
-                            if ("Exception".equals(string)) {
-                                throw new CamelException("Just want to throw exception here");
-                            }
-                        
-                        }                    
-                    }).to("mock:result");
-            }
-        };
-    }
-}
+    // END SNIPPET: e2
+}
\ No newline at end of file

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

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

Propchange: activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SplitterMethodCallTest.java
------------------------------------------------------------------------------
    svn:mergeinfo = 

Copied: activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringSplitterMethodCallTest.java (from r734613, activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringChoiceTest.java)
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringSplitterMethodCallTest.java?p2=activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringSplitterMethodCallTest.java&p1=activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringChoiceTest.java&r1=734613&r2=734805&rev=734805&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringChoiceTest.java (original)
+++ activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringSplitterMethodCallTest.java Thu Jan 15 12:25:51 2009
@@ -17,14 +17,14 @@
 package org.apache.camel.spring.processor;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.processor.ChoiceTest;
+import org.apache.camel.processor.SplitterMethodCallTest;
 import static org.apache.camel.spring.processor.SpringTestHelper.createSpringCamelContext;
 
 /**
  * @version $Revision$
  */
-public class SpringChoiceTest extends ChoiceTest {
+public class SpringSplitterMethodCallTest extends SplitterMethodCallTest {
     protected CamelContext createCamelContext() throws Exception {
-        return createSpringCamelContext(this, "org/apache/camel/spring/processor/choice.xml");
+        return createSpringCamelContext(this, "org/apache/camel/spring/processor/splitterMethodCallTest.xml");
     }
 }
\ No newline at end of file

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

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

Propchange: activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringSplitterMethodCallTest.java
------------------------------------------------------------------------------
    svn:mergeinfo = 

Modified: activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/delayer.xml
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/delayer.xml?rev=734805&r1=734804&r2=734805&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/delayer.xml (original)
+++ activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/delayer.xml Thu Jan 15 12:25:51 2009
@@ -39,7 +39,7 @@
     <route>
       <from uri="seda:b"/>
       <delay>
-        <expression/>
+        <languageExpression/>
         <delayTime>3000</delayTime>
       </delay>
       <to uri="mock:result"/>

Copied: activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/splitterMethodCallTest.xml (from r734613, activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/choice.xml)
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/splitterMethodCallTest.xml?p2=activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/splitterMethodCallTest.xml&p1=activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/choice.xml&r1=734613&r2=734805&rev=734805&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/choice.xml (original)
+++ activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/splitterMethodCallTest.xml Thu Jan 15 12:25:51 2009
@@ -22,25 +22,18 @@
        http://activemq.apache.org/camel/schema/spring http://activemq.apache.org/camel/schema/spring/camel-spring.xsd
     ">
 
-  <!-- START SNIPPET: example -->
-  <camelContext id="camel" xmlns="http://activemq.apache.org/camel/schema/spring">
-    <route>
-      <from uri="direct:start"/>
-      <choice>
-        <when>
-          <xpath>$foo = 'bar'</xpath>
-          <to uri="mock:x"/>
-        </when>
-        <when>
-          <xpath>$foo = 'cheese'</xpath>
-          <to uri="mock:y"/>
-        </when>
-        <otherwise>
-          <to uri="mock:z"/>
-        </otherwise>
-      </choice>
-    </route>
-  </camelContext>
-  <!-- END SNIPPET: example -->
+    <!-- START SNIPPET: e1 -->
+    <camelContext id="camel" xmlns="http://activemq.apache.org/camel/schema/spring">
+        <route>
+            <from uri="direct:start"/>
+            <split>
+                <method bean="splitWordsBean" method="splitWords"/>
+                <to uri="mock:result"/>
+            </split>
+        </route>
+    </camelContext>
+    <!-- END SNIPPET: e1 -->
+
+    <bean id="splitWordsBean" class="org.apache.camel.processor.SplitterMethodCallTest$SplitWordsBean"/>
 
 </beans>

Propchange: activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/splitterMethodCallTest.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/splitterMethodCallTest.xml
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/splitterMethodCallTest.xml
------------------------------------------------------------------------------
    svn:mergeinfo = 

Propchange: activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/splitterMethodCallTest.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml