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 -->