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/07/05 07:19:33 UTC
svn commit: r960448 - in /camel/trunk/camel-core/src:
main/java/org/apache/camel/builder/ test/java/org/apache/camel/builder/
test/java/org/apache/camel/processor/
Author: davsclaus
Date: Mon Jul 5 05:19:32 2010
New Revision: 960448
URL: http://svn.apache.org/viewvc?rev=960448&view=rev
Log:
CAMEL-2906: Introduced SimpleBuilder to make it easy to use simple language in Java DSL as both Expression/Predicate.
Added:
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/SimpleBuilder.java (with props)
camel/trunk/camel-core/src/test/java/org/apache/camel/builder/SimpleBuilderTest.java (with props)
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/BuilderSupport.java
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ChoiceWithSimpleExpressionTest.java
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/builder/BuilderSupport.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/BuilderSupport.java?rev=960448&r1=960447&r2=960448&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/builder/BuilderSupport.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/builder/BuilderSupport.java Mon Jul 5 05:19:32 2010
@@ -132,8 +132,8 @@ public abstract class BuilderSupport {
/**
* Returns a simple expression value builder
*/
- public ValueBuilder simple(String value) {
- return Builder.simple(value);
+ public SimpleBuilder simple(String value) {
+ return SimpleBuilder.simple(value);
}
/**
Added: camel/trunk/camel-core/src/main/java/org/apache/camel/builder/SimpleBuilder.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/SimpleBuilder.java?rev=960448&view=auto
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/builder/SimpleBuilder.java (added)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/builder/SimpleBuilder.java Mon Jul 5 05:19:32 2010
@@ -0,0 +1,51 @@
+/**
+ * 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.builder;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.Expression;
+import org.apache.camel.Predicate;
+
+/**
+ * Creates an {@link org.apache.camel.language.Simple} language builder.
+ * <p/>
+ * This builder is available in the Java DSL from the {@link RouteBuilder} which means that using
+ * simple language for {@link Expression}s or {@link Predicate}s is very easy with the help of this builder.
+ *
+ * @version $Revision$
+ */
+public class SimpleBuilder implements Predicate, Expression {
+
+ private final String text;
+
+ public SimpleBuilder(String text) {
+ this.text = text;
+ }
+
+ public static SimpleBuilder simple(String text) {
+ return new SimpleBuilder(text);
+ }
+
+ public boolean matches(Exchange exchange) {
+ return exchange.getContext().resolveLanguage("simple").createPredicate(text).matches(exchange);
+ }
+
+ public <T> T evaluate(Exchange exchange, Class<T> type) {
+ return exchange.getContext().resolveLanguage("simple").createExpression(text).evaluate(exchange, type);
+ }
+
+}
Propchange: camel/trunk/camel-core/src/main/java/org/apache/camel/builder/SimpleBuilder.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/camel-core/src/main/java/org/apache/camel/builder/SimpleBuilder.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java?rev=960448&r1=960447&r2=960448&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java Mon Jul 5 05:19:32 2010
@@ -51,8 +51,7 @@ public class ValueBuilder implements Exp
// Predicate builders
// -------------------------------------------------------------------------
- // this method will be removed , please use PredicateBuilder.toPredicate(Expression)
- @Deprecated
+
public Predicate matches(Expression expression) {
return onNewPredicate(PredicateBuilder.toPredicate(expression));
}
Added: camel/trunk/camel-core/src/test/java/org/apache/camel/builder/SimpleBuilderTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/SimpleBuilderTest.java?rev=960448&view=auto
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/builder/SimpleBuilderTest.java (added)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/builder/SimpleBuilderTest.java Mon Jul 5 05:19:32 2010
@@ -0,0 +1,44 @@
+/**
+ * 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.builder;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.TestSupport;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.impl.DefaultExchange;
+
+/**
+ * @version $Revision$
+ */
+public class SimpleBuilderTest extends TestSupport {
+
+ protected Exchange exchange = new DefaultExchange(new DefaultCamelContext());
+
+ public void testPredicate() throws Exception {
+ exchange.getIn().setBody("foo");
+
+ assertTrue(SimpleBuilder.simple("${body} == 'foo'").matches(exchange));
+ assertFalse(SimpleBuilder.simple("${body} == 'bar'").matches(exchange));
+ }
+
+ public void testExpression() throws Exception {
+ exchange.getIn().setBody("foo");
+
+ assertEquals("foo", SimpleBuilder.simple("${body}").evaluate(exchange, String.class));
+ assertNull(SimpleBuilder.simple("${header.cheese}").evaluate(exchange, String.class));
+ }
+}
Propchange: camel/trunk/camel-core/src/test/java/org/apache/camel/builder/SimpleBuilderTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/camel-core/src/test/java/org/apache/camel/builder/SimpleBuilderTest.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ChoiceWithSimpleExpressionTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ChoiceWithSimpleExpressionTest.java?rev=960448&r1=960447&r2=960448&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ChoiceWithSimpleExpressionTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ChoiceWithSimpleExpressionTest.java Mon Jul 5 05:19:32 2010
@@ -16,10 +16,7 @@
*/
package org.apache.camel.processor;
-import org.apache.camel.ContextTestSupport;
import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import static org.apache.camel.component.mock.MockEndpoint.expectsMessageCount;
/**
* @version $Revision$
@@ -30,8 +27,8 @@ public class ChoiceWithSimpleExpressionT
return new RouteBuilder() {
public void configure() {
from("direct:start").choice()
- .when(simple("${header.foo} == 'bar'").matches()).to("mock:x")
- .when(simple("${in.header.foo} == 'cheese'").matches()).to("mock:y")
+ .when(simple("${header.foo} == 'bar'")).to("mock:x")
+ .when(simple("${in.header.foo} == 'cheese'")).to("mock:y")
.otherwise().to("mock:z").end().to("mock:end");
}
};