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 2012/05/27 14:22:05 UTC

svn commit: r1343037 - in /camel/trunk: 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/language/simple/ components/camel-spring/src/test/jav...

Author: davsclaus
Date: Sun May 27 12:22:05 2012
New Revision: 1343037

URL: http://svn.apache.org/viewvc?rev=1343037&view=rev
Log:
CAMEL-5294: XML DSL language expressions added trim option. This removes the whitespace noise from XML in the expressions.

Added:
    camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/example/SpringExpressionTrimTest.java
      - copied, changed from r1343030, camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/example/SpringXPathFilterTest.java
    camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/example/expressionTrim.xml
      - copied, changed from r1343030, camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/example/xpathFilter.xml
Modified:
    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/ExpressionDefinition.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/language/simple/SimpleTest.java

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=1343037&r1=1343036&r2=1343037&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 Sun May 27 12:22:05 2012
@@ -127,8 +127,6 @@ public class SimpleLanguage implements L
     public Predicate createPredicate(String expression) {
         ObjectHelper.notNull(expression, "expression");
 
-        // trim the expression first
-        expression = expression.trim();
         // support old simple language syntax
         @SuppressWarnings("deprecation")
         Predicate answer = SimpleBackwardsCompatibleParser.parsePredicate(expression, allowEscape);
@@ -143,8 +141,6 @@ public class SimpleLanguage implements L
     public Expression createExpression(String expression) {
         ObjectHelper.notNull(expression, "expression");
 
-        // trim the expression first
-        expression = expression.trim();
         // support old simple language syntax
         @SuppressWarnings("deprecation")
         Expression answer = SimpleBackwardsCompatibleParser.parseExpression(expression, allowEscape);

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/ExpressionDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/ExpressionDefinition.java?rev=1343037&r1=1343036&r2=1343037&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/ExpressionDefinition.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/language/ExpressionDefinition.java Sun May 27 12:22:05 2012
@@ -56,6 +56,8 @@ public class ExpressionDefinition implem
     private String id;
     @XmlValue
     private String expression;
+    @XmlAttribute
+    private Boolean trim;
     @XmlTransient
     private Predicate predicate;
     @XmlTransient
@@ -150,7 +152,12 @@ public class ExpressionDefinition implem
             } else if (getExpression() != null) {
                 ObjectHelper.notNull("language", getLanguage());
                 Language language = camelContext.resolveLanguage(getLanguage());
-                predicate = language.createPredicate(getExpression());
+                String exp = getExpression();
+                // trim if configured to trim
+                if (exp != null && isTrim()) {
+                    exp = exp.trim();
+                }
+                predicate = language.createPredicate(exp);
                 configurePredicate(camelContext, predicate);
             }
         }
@@ -168,7 +175,12 @@ public class ExpressionDefinition implem
             } else if (getExpression() != null) {
                 ObjectHelper.notNull("language", getLanguage());
                 Language language = camelContext.resolveLanguage(getLanguage());
-                setExpressionValue(language.createExpression(getExpression()));
+                String exp = getExpression();
+                // trim if configured to trim
+                if (exp != null && isTrim()) {
+                    exp = exp.trim();
+                }
+                setExpressionValue(language.createExpression(exp));
                 configureExpression(camelContext, getExpressionValue());
             }
         }
@@ -214,6 +226,19 @@ public class ExpressionDefinition implem
         return expressionType;
     }
 
+    public Boolean getTrim() {
+        return trim;
+    }
+
+    public void setTrim(Boolean trim) {
+        this.trim = trim;
+    }
+
+    public boolean isTrim() {
+        // trim by default
+        return trim == null || trim;
+    }
+
     /**
      * Returns some descriptive text to describe this node
      */

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=1343037&r1=1343036&r2=1343037&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 Sun May 27 12:22:05 2012
@@ -83,7 +83,12 @@ public class SimpleExpression extends Ex
             }
         }
 
-        SimpleBuilder answer = new SimpleBuilder(getExpression());
+        String exp = getExpression();
+        if (isTrim() && exp != null) {
+            exp = exp.trim();
+        }
+
+        SimpleBuilder answer = new SimpleBuilder(exp);
         answer.setResultType(resultType);
         return answer;
     }

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java?rev=1343037&r1=1343036&r2=1343037&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java Sun May 27 12:22:05 2012
@@ -77,7 +77,7 @@ public class SimpleTest extends Language
 
     public void testEmptyExpression() throws Exception {
         assertExpression("", "");
-        assertExpression(" ", "");
+        assertExpression(" ", " ");
         try {
             assertExpression(null, null);
             fail("Should have thrown exception");
@@ -126,10 +126,10 @@ public class SimpleTest extends Language
     }
     
     public void testTrimSimpleExpressions() throws Exception {
-        assertExpression(" \texchangeId\n", exchange.getExchangeId());
-        assertExpression("\nid\r", exchange.getIn().getMessageId());
-        assertExpression("\t\r body", "<hello id='m123'>world!</hello>");
-        assertExpression("\nin.body\r", "<hello id='m123'>world!</hello>");
+        assertExpression(" \texchangeId\n".trim(), exchange.getExchangeId());
+        assertExpression("\nid\r".trim(), exchange.getIn().getMessageId());
+        assertExpression("\t\r body".trim(), "<hello id='m123'>world!</hello>");
+        assertExpression("\nin.body\r".trim(), "<hello id='m123'>world!</hello>");
     }
 
     public void testSimpleThreadName() throws Exception {

Copied: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/example/SpringExpressionTrimTest.java (from r1343030, camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/example/SpringXPathFilterTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/example/SpringExpressionTrimTest.java?p2=camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/example/SpringExpressionTrimTest.java&p1=camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/example/SpringXPathFilterTest.java&r1=1343030&r2=1343037&rev=1343037&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/example/SpringXPathFilterTest.java (original)
+++ camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/example/SpringExpressionTrimTest.java Sun May 27 12:22:05 2012
@@ -16,24 +16,34 @@
  */
 package org.apache.camel.spring.example;
 
-import org.apache.camel.CamelContext;
-import org.apache.camel.processor.XPathFilterTest;
-import org.apache.camel.spring.SpringCamelContext;
+import org.apache.camel.spring.SpringTestSupport;
+import org.springframework.context.support.AbstractXmlApplicationContext;
 import org.springframework.context.support.ClassPathXmlApplicationContext;
 
 /**
  * @version 
  */
-public class SpringXPathFilterTest extends XPathFilterTest {
+public class SpringExpressionTrimTest extends SpringTestSupport {
 
     @Override
-    public boolean isUseRouteBuilder() {
-        return false;
+    protected AbstractXmlApplicationContext createApplicationContext() {
+        return new ClassPathXmlApplicationContext("org/apache/camel/spring/example/expressionTrim.xml");
     }
 
-    @Override
-    protected CamelContext createCamelContext() throws Exception {
-        return SpringCamelContext.springCamelContext(new ClassPathXmlApplicationContext("org/apache/camel/spring/example/xpathFilter.xml"));
+    public void testDefault() throws Exception {
+        String out = template.requestBody("direct:a", "World", String.class);
+        assertEquals("Hello World", out);
+    }
+
+    public void testTrim() throws Exception {
+        String out = template.requestBody("direct:b", "World", String.class);
+        assertEquals("Hello World", out);
+    }
+
+    public void testNoTrim() throws Exception {
+        String out = template.requestBody("direct:c", "World", String.class);
+        // the xml has whitespace noise which is not trimmed
+        assertEquals("\n          Hello World\n        ", out);
     }
 
 }

Copied: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/example/expressionTrim.xml (from r1343030, camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/example/xpathFilter.xml)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/example/expressionTrim.xml?p2=camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/example/expressionTrim.xml&p1=camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/example/xpathFilter.xml&r1=1343030&r2=1343037&rev=1343037&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/example/xpathFilter.xml (original)
+++ camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/example/expressionTrim.xml Sun May 27 12:22:05 2012
@@ -22,18 +22,33 @@
        http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
     ">
 
-  <!-- START SNIPPET: example -->
   <camelContext xmlns="http://camel.apache.org/schema/spring">
     <route>
-      <from uri="direct:start"/>
-      <filter>
-        <xpath>
-          /person[@name='James']
-        </xpath>
-        <to uri="mock:result"/>
-      </filter>
+      <from uri="direct:a"/>
+      <transform>
+        <simple>
+          Hello ${body}
+        </simple>
+      </transform>
+    </route>
+
+    <route>
+      <from uri="direct:b"/>
+      <transform>
+        <simple trim="true">
+          Hello ${body}
+        </simple>
+      </transform>
+    </route>
+
+    <route>
+      <from uri="direct:c"/>
+      <transform>
+        <simple trim="false">
+          Hello ${body}
+        </simple>
+      </transform>
     </route>
   </camelContext>
-  <!-- END SNIPPET: example -->
 
 </beans>