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/02/18 10:07:54 UTC

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

Author: davsclaus
Date: Wed Feb 18 09:07:54 2009
New Revision: 745442

URL: http://svn.apache.org/viewvc?rev=745442&view=rev
Log:
CAMEL-1344: Introduced TokenizerExpression to allow tokenizer in Spring DSL so end users can split bodies using tokenizer.

Added:
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/TokenizerExpression.java
      - copied, changed from r745121, camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/MethodCallExpression.java
    camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringTokenizerTest.java   (contents, props changed)
      - copied, changed from r745121, camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringSplitterMethodCallTest.java
    camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/splitterTokenizerTest.xml   (contents, props changed)
      - copied, changed from r745121, camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/splitterMethodCallTest.xml
Modified:
    camel/trunk/camel-core/src/main/resources/org/apache/camel/model/language/jaxb.index
    camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringSetHeaderTest-context.xml
    camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/splitterWithCustomThreadPoolExecutor.xml

Copied: camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/TokenizerExpression.java (from r745121, 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/TokenizerExpression.java?p2=camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/TokenizerExpression.java&p1=camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/MethodCallExpression.java&r1=745121&r2=745442&rev=745442&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/TokenizerExpression.java Wed Feb 18 09:07:54 2009
@@ -21,69 +21,74 @@
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlRootElement;
 
-import org.apache.camel.Exchange;
 import org.apache.camel.Expression;
 import org.apache.camel.Predicate;
-import org.apache.camel.language.bean.BeanExpression;
 import org.apache.camel.spi.RouteContext;
+import static org.apache.camel.builder.Builder.body;
+import static org.apache.camel.builder.Builder.header;
+import static org.apache.camel.builder.ExpressionBuilder.regexTokenize;
+import static org.apache.camel.builder.ExpressionBuilder.tokenizeExpression;
+import static org.apache.camel.builder.PredicateBuilder.toPredicate;
 
 /**
- * For expressions and predicates using the
- * <a href="http://camel.apache.org/bean-language.html">bean language</a>
+ * For expressions and predicates using a body or header tokenzier
  *
  * @version $Revision$
  */
-@XmlRootElement(name = "method")
+@XmlRootElement(name = "tokenizer")
 @XmlAccessorType(XmlAccessType.FIELD)
-public class MethodCallExpression extends ExpressionType {
+public class TokenizerExpression extends ExpressionType {
+    @XmlAttribute(required = true)
+    private String token;
     @XmlAttribute(required = false)
-    private String bean;
+    private String headerName;
     @XmlAttribute(required = false)
-    private String method;
+    private Boolean regex;
 
-    public MethodCallExpression() {
+    public TokenizerExpression() {
     }
 
-    public MethodCallExpression(String beanName) {
-        super(beanName);
+    public String getToken() {
+        return token;
     }
 
-    public MethodCallExpression(String beanName, String method) {
-        super(beanName);
-        this.method = method;
+    public void setToken(String token) {
+        this.token = token;
     }
 
-    public String getLanguage() {
-        return "bean";
+    public String getHeaderName() {
+        return headerName;
     }
 
-    public String getMethod() {
-        return method;
+    public void setHeaderName(String headerName) {
+        this.headerName = headerName;
     }
 
-    public void setMethod(String method) {
-        this.method = method;
+    public void setRegex(boolean regex) {
+        this.regex = regex;
+    }
+
+    public Boolean getRegex() {
+        return regex;
     }
 
     @Override
     public Expression createExpression(RouteContext routeContext) {
-        return new BeanExpression(beanName(), getMethod());
+        Expression exp = headerName == null ? body() : header(headerName);
+        if (regex != null && regex) {
+            return regexTokenize(exp, token);
+        } else {
+            return tokenizeExpression(exp, token);
+        }
     }
 
     @Override
     public Predicate createPredicate(RouteContext routeContext) {
-        return new BeanExpression(beanName(), getMethod());
-    }
-
-    protected String beanName() {
-        if (bean != null) {
-            return bean;
-        }
-        return getExpression();
+        return toPredicate(createExpression(routeContext));
     }
 
     @Override
     public String toString() {
-        return "bean{" + beanName() + (method != null ? ", method=" + method : "") + "}";
+        return "tokenize{" + (headerName != null ? "header: " + headerName : "body()") + " using token: " + token + "}";
     }
-}
+}
\ No newline at end of file

Modified: camel/trunk/camel-core/src/main/resources/org/apache/camel/model/language/jaxb.index
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/resources/org/apache/camel/model/language/jaxb.index?rev=745442&r1=745441&r2=745442&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/resources/org/apache/camel/model/language/jaxb.index (original)
+++ camel/trunk/camel-core/src/main/resources/org/apache/camel/model/language/jaxb.index Wed Feb 18 09:07:54 2009
@@ -31,5 +31,6 @@
 RubyExpression
 SimpleExpression
 SqlExpression
+TokenizerExpression
 XPathExpression
 XQueryExpression

Copied: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringTokenizerTest.java (from r745121, camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringSplitterMethodCallTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringTokenizerTest.java?p2=camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringTokenizerTest.java&p1=camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringSplitterMethodCallTest.java&r1=745121&r2=745442&rev=745442&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringSplitterMethodCallTest.java (original)
+++ camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringTokenizerTest.java Wed Feb 18 09:07:54 2009
@@ -23,8 +23,8 @@
 /**
  * @version $Revision$
  */
-public class SpringSplitterMethodCallTest extends SplitterMethodCallTest {
+public class SpringTokenizerTest extends SplitterMethodCallTest {
     protected CamelContext createCamelContext() throws Exception {
-        return createSpringCamelContext(this, "org/apache/camel/spring/processor/splitterMethodCallTest.xml");
+        return createSpringCamelContext(this, "org/apache/camel/spring/processor/splitterTokenizerTest.xml");
     }
 }
\ No newline at end of file

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

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

Modified: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringSetHeaderTest-context.xml
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringSetHeaderTest-context.xml?rev=745442&r1=745441&r2=745442&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringSetHeaderTest-context.xml (original)
+++ camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringSetHeaderTest-context.xml Wed Feb 18 09:07:54 2009
@@ -27,6 +27,7 @@
     <route>
       <from uri="seda:a"/>
       <setHeader headerName="oldBodyValue">
+          <
         <simple>body</simple>
       </setHeader>
       <to uri="mock:b"/>     

Copied: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/splitterTokenizerTest.xml (from r745121, camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/splitterMethodCallTest.xml)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/splitterTokenizerTest.xml?p2=camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/splitterTokenizerTest.xml&p1=camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/splitterMethodCallTest.xml&r1=745121&r2=745442&rev=745442&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/splitterMethodCallTest.xml (original)
+++ camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/splitterTokenizerTest.xml Wed Feb 18 09:07:54 2009
@@ -27,13 +27,11 @@
         <route>
             <from uri="direct:start"/>
             <split>
-                <method bean="splitWordsBean" method="splitWords"/>
+                <tokenizer token="@"/>
                 <to uri="mock:result"/>
             </split>
         </route>
     </camelContext>
     <!-- END SNIPPET: e1 -->
 
-    <bean id="splitWordsBean" class="org.apache.camel.processor.SplitterMethodCallTest$SplitWordsBean"/>
-
 </beans>

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

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

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

Modified: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/splitterWithCustomThreadPoolExecutor.xml
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/splitterWithCustomThreadPoolExecutor.xml?rev=745442&r1=745441&r2=745442&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/splitterWithCustomThreadPoolExecutor.xml (original)
+++ camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/splitterWithCustomThreadPoolExecutor.xml Wed Feb 18 09:07:54 2009
@@ -26,7 +26,7 @@
   <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
     <route>
       <from uri="direct:parallel-custom-pool"/>
-      <split threadPoolExecutorRef="threadPoolExecutor"> 
+      <split threadPoolExecutorRef="threadPoolExecutor">
         <xpath>/invoice/lineItems</xpath>
         <to uri="mock:result"/>
       </split>
@@ -36,10 +36,10 @@
   <!-- There's an easier way of specifying constructor args, just can't remember it
        at the moment... old Spring syntax will do for now! -->
   <bean id="threadPoolExecutor" class="java.util.concurrent.ThreadPoolExecutor">
-    <constructor-arg index="0"><value>8</value></constructor-arg>
-    <constructor-arg index="1"><value>16</value></constructor-arg>
-    <constructor-arg index="2"><value>0</value></constructor-arg>
-    <constructor-arg index="3"><value>MILLISECONDS</value></constructor-arg>
+    <constructor-arg index="0" value="8"/>
+    <constructor-arg index="1" value="16"/>
+    <constructor-arg index="2" value="0"/>
+    <constructor-arg index="3" value="MILLISECONDS"/>
     <constructor-arg index="4"><bean class="java.util.concurrent.LinkedBlockingQueue"/></constructor-arg>
   </bean>
   <!-- END SNIPPET: example -->