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 2011/06/11 18:22:26 UTC

svn commit: r1134682 - in /camel/trunk: camel-core/src/main/java/org/apache/camel/builder/ camel-core/src/main/java/org/apache/camel/language/simple/ camel-core/src/main/java/org/apache/camel/model/language/ camel-core/src/test/java/org/apache/camel/bu...

Author: davsclaus
Date: Sat Jun 11 16:22:25 2011
New Revision: 1134682

URL: http://svn.apache.org/viewvc?rev=1134682&view=rev
Log:
CAMEL-4090: Added resultType to simple expression. This allows end users to decide what the type of the evaluation should be. Can easily be configured in the DSL.

Added:
    camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SimpleResultTypeRouteTest.java
    camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringSimpleResultTypeRouteTest.java
    camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringSimpleResultTypeRouteTest.xml
Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/builder/Builder.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/builder/BuilderSupport.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionClause.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/builder/SimpleBuilder.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/SimpleExpression.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/builder/SimpleBuilderTest.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/language/SimpleTest.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ValidateRegExpTest.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ValidateSimpleTest.java

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/builder/Builder.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/Builder.java?rev=1134682&r1=1134681&r2=1134682&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/builder/Builder.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/builder/Builder.java Sat Jun 11 16:22:25 2011
@@ -97,6 +97,14 @@ public final class Builder {
     }
     
     /**
+     * Returns a simple expression
+     */
+    public static ValueBuilder simple(String value, Class<?> resultType) {
+        Expression expression = ExpressionBuilder.simpleExpression(value);
+        return new ValueBuilder(expression);
+    }
+
+    /**
      * Returns a predicate and value builder for headers on an exchange
      */
     public static ValueBuilder header(String name) {

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=1134682&r1=1134681&r2=1134682&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 Sat Jun 11 16:22:25 2011
@@ -137,6 +137,13 @@ public abstract class BuilderSupport {
     }
     
     /**
+     * Returns a simple expression value builder
+     */
+    public SimpleBuilder simple(String value, Class<?> resultType) {
+        return SimpleBuilder.simple(value, resultType);
+    }
+
+    /**
      * Returns a xpath expression value builder
      */
     public XPathBuilder xpath(String value) {

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionClause.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionClause.java?rev=1134682&r1=1134681&r2=1134682&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionClause.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionClause.java Sat Jun 11 16:22:25 2011
@@ -379,6 +379,18 @@ public class ExpressionClause<T> extends
     }
 
     /**
+     * Evaluates a <a href="http://camel.apache.org/simple.html">Simple
+     * expression</a>
+     *
+     * @param text the expression to be evaluated
+     * @param resultType the result type
+     * @return the builder to continue processing the DSL
+     */
+    public T simple(String text, Class<?> resultType) {
+        return delegate.simple(text, resultType);
+    }
+
+    /**
      * Evaluates an <a href="http://camel.apache.org/xpath.html">XPath
      * expression</a>
      * 

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java?rev=1134682&r1=1134681&r2=1134682&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java Sat Jun 11 16:22:25 2011
@@ -417,6 +417,21 @@ public class ExpressionClauseSupport<T> 
     }
 
     /**
+     * Evaluates a <a href="http://camel.apache.org/simple.html">Simple
+     * expression</a>
+     *
+     * @param text the expression to be evaluated
+     * @param resultType the result type
+     * @return the builder to continue processing the DSL
+     */
+    public T simple(String text, Class<?> resultType) {
+        SimpleExpression expression = new SimpleExpression(text);
+        expression.setResultType(resultType);
+        setExpressionType(expression);
+        return result;
+    }
+
+    /**
      * Evaluates an <a href="http://camel.apache.org/xpath.html">XPath
      * expression</a>
      *

Modified: 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=1134682&r1=1134681&r2=1134682&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/builder/SimpleBuilder.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/builder/SimpleBuilder.java Sat Jun 11 16:22:25 2011
@@ -19,6 +19,7 @@ package org.apache.camel.builder;
 import org.apache.camel.Exchange;
 import org.apache.camel.Expression;
 import org.apache.camel.Predicate;
+import org.apache.camel.language.simple.SimpleLanguage;
 
 /**
  * Creates an {@link org.apache.camel.language.Simple} language builder.
@@ -31,6 +32,7 @@ import org.apache.camel.Predicate;
 public class SimpleBuilder implements Predicate, Expression {
 
     private final String text;
+    private Class<?> resultType;
 
     public SimpleBuilder(String text) {
         this.text = text;
@@ -40,12 +42,39 @@ public class SimpleBuilder implements Pr
         return new SimpleBuilder(text);
     }
 
+    public static SimpleBuilder simple(String text, Class<?> resultType) {
+        SimpleBuilder answer = simple(text);
+        answer.setResultType(resultType);
+        return answer;
+    }
+
+    public Class<?> getResultType() {
+        return resultType;
+    }
+
+    public void setResultType(Class<?> resultType) {
+        this.resultType = resultType;
+    }
+
+    public SimpleBuilder resultType(Class<?> resultType) {
+        setResultType(resultType);
+        return this;
+    }
+
     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);
+        return createExpression(exchange).evaluate(exchange, type);
+    }
+
+    private Expression createExpression(Exchange exchange) {
+        SimpleLanguage simple = (SimpleLanguage) exchange.getContext().resolveLanguage("simple");
+        if (resultType != null) {
+            simple.setResultType(resultType);
+        }
+        return simple.createExpression(text);
     }
 
     public String toString() {

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java?rev=1134682&r1=1134681&r2=1134682&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java Sat Jun 11 16:22:25 2011
@@ -91,8 +91,34 @@ import org.apache.camel.util.StringHelpe
  */
 public class SimpleLanguage extends SimpleLanguageSupport {
 
+    // singleton for expressions without a result type
     private static final SimpleLanguage SIMPLE = new SimpleLanguage();
 
+    private Class<?> resultType;
+
+    public Class<?> getResultType() {
+        return resultType;
+    }
+
+    public void setResultType(Class<?> resultType) {
+        this.resultType = resultType;
+    }
+
+    @Override
+    public boolean isSingleton() {
+        // we cannot be singleton as we have state
+        return false;
+    }
+
+    @Override
+    public Expression createExpression(String expression) {
+        Expression answer = super.createExpression(expression);
+        if (resultType != null) {
+            return ExpressionBuilder.convertToExpression(answer, resultType);
+        }
+        return answer;
+    }
+
     /**
      * Does the expression have the simple language start token?
      *
@@ -111,6 +137,12 @@ public class SimpleLanguage extends Simp
         return SIMPLE.createExpression(expression);
     }
 
+    public static Expression simple(String expression, Class<?> resultType) {
+        SimpleLanguage answer = new SimpleLanguage();
+        answer.setResultType(resultType);
+        return answer.createExpression(expression);
+    }
+
     protected Expression createSimpleExpressionDirectly(String expression) {
 
         if (ObjectHelper.isEqualToAny(expression, "body", "in.body")) {
@@ -362,7 +394,4 @@ public class SimpleLanguage extends Simp
         throw new ExpressionIllegalSyntaxException("File language syntax: " + remainder);
     }
 
-    public boolean isSingleton() {
-        return true;
-    }
 }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/SimpleExpression.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/SimpleExpression.java?rev=1134682&r1=1134681&r2=1134682&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/SimpleExpression.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/SimpleExpression.java Sat Jun 11 16:22:25 2011
@@ -18,8 +18,14 @@ package org.apache.camel.model.language;
 
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlRootElement;
 
+import org.apache.camel.CamelContext;
+import org.apache.camel.Expression;
+import org.apache.camel.Predicate;
+import org.apache.camel.builder.SimpleBuilder;
+
 /**
  * For expressions and predicates using the
  * <a href="http://camel.apache.org/simple.html">simple language</a>
@@ -29,6 +35,8 @@ import javax.xml.bind.annotation.XmlRoot
 @XmlRootElement(name = "simple")
 @XmlAccessorType(XmlAccessType.FIELD)
 public class SimpleExpression extends ExpressionDefinition {
+    @XmlAttribute
+    private Class<?> resultType;
 
     public SimpleExpression() {
     }
@@ -40,4 +48,25 @@ public class SimpleExpression extends Ex
     public String getLanguage() {
         return "simple";
     }
+
+    public Class<?> getResultType() {
+        return resultType;
+    }
+
+    public void setResultType(Class<?> resultType) {
+        this.resultType = resultType;
+    }
+
+    @Override
+    public Expression createExpression(CamelContext camelContext) {
+        SimpleBuilder answer = new SimpleBuilder(getExpression());
+        answer.setResultType(resultType);
+        return answer;
+    }
+
+    @Override
+    public Predicate createPredicate(CamelContext camelContext) {
+        // SimpleBuilder is also a Predicate
+        return (Predicate) createExpression(camelContext);
+    }
 }

Modified: 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=1134682&r1=1134681&r2=1134682&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/builder/SimpleBuilderTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/builder/SimpleBuilderTest.java Sat Jun 11 16:22:25 2011
@@ -41,4 +41,28 @@ public class SimpleBuilderTest extends T
         assertEquals("foo", SimpleBuilder.simple("${body}").evaluate(exchange, String.class));
         assertNull(SimpleBuilder.simple("${header.cheese}").evaluate(exchange, String.class));
     }
+
+    public void testResultType() throws Exception {
+        exchange.getIn().setBody("foo");
+        exchange.getIn().setHeader("cool", true);
+
+        assertEquals("foo", SimpleBuilder.simple("${body}", String.class).evaluate(exchange, Object.class));
+        // not possible
+        assertEquals(null, SimpleBuilder.simple("${body}", int.class).evaluate(exchange, Object.class));
+
+        assertEquals(true, SimpleBuilder.simple("${header.cool}", boolean.class).evaluate(exchange, Object.class));
+        assertEquals("true", SimpleBuilder.simple("${header.cool}", String.class).evaluate(exchange, Object.class));
+        // not possible
+        assertEquals(null, SimpleBuilder.simple("${header.cool}", int.class).evaluate(exchange, Object.class));
+
+        assertEquals(true, SimpleBuilder.simple("${header.cool}").resultType(Boolean.class).evaluate(exchange, Object.class));
+        assertEquals("true", SimpleBuilder.simple("${header.cool}").resultType(String.class).evaluate(exchange, Object.class));
+        // not possible
+        assertEquals(null, SimpleBuilder.simple("${header.cool}").resultType(int.class).evaluate(exchange, Object.class));
+
+        // should be convertable to integers
+        assertEquals(9, SimpleBuilder.simple("9", int.class).evaluate(exchange, Object.class));
+        assertEquals(9, SimpleBuilder.simple("09", int.class).evaluate(exchange, Object.class));
+        assertEquals(9, SimpleBuilder.simple("0009", int.class).evaluate(exchange, Object.class));
+    }
 }

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/language/SimpleTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/language/SimpleTest.java?rev=1134682&r1=1134681&r2=1134682&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/language/SimpleTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/language/SimpleTest.java Sat Jun 11 16:22:25 2011
@@ -18,6 +18,7 @@ package org.apache.camel.language;
 
 import java.util.ArrayList;
 import java.util.Calendar;
+import java.util.Date;
 import java.util.GregorianCalendar;
 import java.util.HashMap;
 import java.util.List;
@@ -48,6 +49,14 @@ public class SimpleTest extends Language
         return jndi;
     }
 
+    public void testResultType() throws Exception {
+        assertEquals(123, SimpleLanguage.simple("${header.bar}", int.class).evaluate(exchange, Object.class));
+        assertEquals("123", SimpleLanguage.simple("${header.bar}", String.class).evaluate(exchange, Object.class));
+        // should not be possible
+        assertEquals(null, SimpleLanguage.simple("${header.bar}", Date.class).evaluate(exchange, Object.class));
+        assertEquals(null, SimpleLanguage.simple("${header.unknown}", String.class).evaluate(exchange, Object.class));
+    }
+
     public void testRefExpression() throws Exception {
         assertExpressionResultInstanceOf("ref:myAnimal", Animal.class);
         assertExpressionResultInstanceOf("${ref:myAnimal}", Animal.class);

Added: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SimpleResultTypeRouteTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SimpleResultTypeRouteTest.java?rev=1134682&view=auto
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SimpleResultTypeRouteTest.java (added)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SimpleResultTypeRouteTest.java Sat Jun 11 16:22:25 2011
@@ -0,0 +1,77 @@
+/**
+ * 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.processor;
+
+import org.apache.camel.ContextTestSupport;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+
+/**
+ *
+ */
+public class SimpleResultTypeRouteTest extends ContextTestSupport {
+
+    public void testSimpleResultTypeFoo() throws Exception {
+        MockEndpoint mock = getMockEndpoint("mock:foo");
+        mock.expectedMessageCount(1);
+        // cool header is a boolean
+        mock.message(0).header("cool").isInstanceOf(Boolean.class);
+        mock.message(0).header("cool").isEqualTo(true);
+        // fail header is not a boolean
+        mock.message(0).header("fail").isInstanceOf(String.class);
+        mock.message(0).header("fail").isEqualTo("true");
+
+        template.sendBody("direct:foo", "Hello World");
+
+        assertMockEndpointsSatisfied();
+    }
+
+    public void testSimpleResultTypeBar() throws Exception {
+        MockEndpoint mock = getMockEndpoint("mock:bar");
+        mock.expectedMessageCount(1);
+        // cool header is a boolean
+        mock.message(0).header("cool").isInstanceOf(Boolean.class);
+        mock.message(0).header("cool").isEqualTo(true);
+        // fail header is not a boolean
+        mock.message(0).header("fail").isInstanceOf(String.class);
+        mock.message(0).header("fail").isEqualTo("true");
+
+        template.sendBody("direct:bar", "Hello World");
+
+        assertMockEndpointsSatisfied();
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                from("direct:foo")
+                    // set using builder support
+                    .setHeader("cool", simple("true", Boolean.class))
+                    .setHeader("fail", simple("true"))
+                    .to("mock:foo");
+
+                from("direct:bar")
+                    // set using expression clause
+                    .setHeader("cool").simple("true", Boolean.class)
+                    .setHeader("fail", simple("true"))
+                    .to("mock:bar");
+            }
+        };
+    }
+}

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ValidateRegExpTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ValidateRegExpTest.java?rev=1134682&r1=1134681&r2=1134682&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ValidateRegExpTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ValidateRegExpTest.java Sat Jun 11 16:22:25 2011
@@ -57,8 +57,9 @@ public class ValidateRegExpTest extends 
             // expected
             assertIsInstanceOf(PredicateValidationException.class, e.getCause());
             // as the Expression could be different between the DSL and simple language, here we just check part of the message 
-            assertTrue("Get a wrong exception message", e.getCause().getMessage().startsWith("Validation failed for Predicate[bodyAs[java.lang.String]"));
-            assertTrue("Get a wrong exception message", e.getCause().getMessage().endsWith("Exchange[Message: 1.1.2010]"));           
+            assertTrue("Get a wrong exception message", e.getCause().getMessage().startsWith("Validation failed for Predicate"));
+            assertTrue(e.getCause().getMessage().contains("^\\d{2}\\.\\d{2}\\.\\d{4}$"));
+            assertTrue("Get a wrong exception message", e.getCause().getMessage().endsWith("Exchange[Message: 1.1.2010]"));
         }
 
         assertMockEndpointsSatisfied();

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ValidateSimpleTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ValidateSimpleTest.java?rev=1134682&r1=1134681&r2=1134682&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ValidateSimpleTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ValidateSimpleTest.java Sat Jun 11 16:22:25 2011
@@ -56,7 +56,7 @@ public class ValidateSimpleTest extends 
         } catch (CamelExecutionException e) {
             // expected
             assertIsInstanceOf(PredicateValidationException.class, e.getCause());
-            assertEquals("Validation failed for Predicate[body contains Camel]."
+            assertEquals("Validation failed for Predicate[Simple: ${body} contains 'Camel']."
                 + " Exchange[Message: Bye World]", e.getCause().getMessage());
         }
 

Added: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringSimpleResultTypeRouteTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringSimpleResultTypeRouteTest.java?rev=1134682&view=auto
==============================================================================
--- camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringSimpleResultTypeRouteTest.java (added)
+++ camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringSimpleResultTypeRouteTest.java Sat Jun 11 16:22:25 2011
@@ -0,0 +1,33 @@
+/**
+ * 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.processor.SimpleResultTypeRouteTest;
+
+import static org.apache.camel.spring.processor.SpringTestHelper.createSpringCamelContext;
+
+/**
+ *
+ */
+public class SpringSimpleResultTypeRouteTest extends SimpleResultTypeRouteTest {
+
+    protected CamelContext createCamelContext() throws Exception {
+        return createSpringCamelContext(this, "org/apache/camel/spring/processor/SpringSimpleResultTypeRouteTest.xml");
+    }
+
+}

Added: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringSimpleResultTypeRouteTest.xml
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringSimpleResultTypeRouteTest.xml?rev=1134682&view=auto
==============================================================================
--- camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringSimpleResultTypeRouteTest.xml (added)
+++ camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringSimpleResultTypeRouteTest.xml Sat Jun 11 16:22:25 2011
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    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.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="
+       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+       http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
+    ">
+
+  <camelContext xmlns="http://camel.apache.org/schema/spring">
+    <!-- START SNIPPET: e1 -->
+    <route>
+      <from uri="direct:foo"/>
+      <setHeader headerName="cool">
+        <!-- use resultType to indicate that the type should be a java.lang.Boolean -->
+        <simple resultType="java.lang.Boolean">true</simple>
+      </setHeader>
+      <!-- here we have no result type, so the type would be java.lang.String -->
+      <setHeader headerName="fail">
+        <simple>true</simple>
+      </setHeader>
+      <to uri="mock:foo"/>
+    </route>
+    <!-- END SNIPPET: e1 -->
+
+    <route>
+      <from uri="direct:bar"/>
+      <setHeader headerName="cool">
+        <simple resultType="java.lang.Boolean">true</simple>
+      </setHeader>
+      <setHeader headerName="fail">
+        <simple>true</simple>
+      </setHeader>
+      <to uri="mock:bar"/>
+    </route>
+  </camelContext>
+
+</beans>