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/09/23 19:53:14 UTC
svn commit: r1389107 - in /camel/trunk/camel-core/src:
main/java/org/apache/camel/language/simple/SimpleTokenizer.java
test/java/org/apache/camel/language/simple/SimpleTest.java
Author: davsclaus
Date: Sun Sep 23 17:53:13 2012
New Revision: 1389107
URL: http://svn.apache.org/viewvc?rev=1389107&view=rev
Log:
CAMEL-5642: Simple language - Limit escaping to newline related characters.
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/SimpleTokenizer.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/SimpleTokenizer.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/SimpleTokenizer.java?rev=1389107&r1=1389106&r2=1389107&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/SimpleTokenizer.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/language/simple/SimpleTokenizer.java Sun Sep 23 17:53:13 2012
@@ -176,18 +176,23 @@ public final class SimpleTokenizer {
// grab next character to escape
char next = expression.charAt(++index);
// special for new line, tabs and carriage return
+ boolean special = false;
if ('n' == next) {
sb.append("\n");
+ special = true;
} else if ('t' == next) {
sb.append("\t");
+ special = true;
} else if ('r' == next) {
sb.append("\r");
+ special = true;
} else {
- // append the next
- sb.append(next);
+ // not special just a regular character
+ sb.append(ch);
}
- // force 2 as length
- return new SimpleToken(new SimpleTokenType(TokenType.character, sb.toString()), index, 2);
+
+ // force 2 as length if special
+ return new SimpleToken(new SimpleTokenType(TokenType.character, sb.toString()), index, special ? 2 : 1);
}
}
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=1389107&r1=1389106&r2=1389107&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 Sep 23 17:53:13 2012
@@ -1086,6 +1086,24 @@ public class SimpleTest extends Language
assertExpression("${body.substring(${header.min}, ${header.max})}", "me");
}
+ public void testBodyOgnlReplace() throws Exception {
+ exchange.getIn().setBody("Kamel is a cool Kamel");
+
+ assertExpression("${body.replace(\"Kamel\", \"Camel\")}", "Camel is a cool Camel");
+ }
+
+ public void testBodyOgnlReplaceEscapedChar() throws Exception {
+ exchange.getIn().setBody("foo$bar$baz");
+
+ assertExpression("${body.replace('$', '-')}", "foo-bar-baz");
+ }
+
+ public void testBodyOgnlReplaceEscapedBackslashChar() throws Exception {
+ exchange.getIn().setBody("foo\\bar\\baz");
+
+ assertExpression("${body.replace('\\', '\\\\')}", "foo\\\\bar\\\\baz");
+ }
+
public void testClassSimpleName() throws Exception {
Animal tiger = new Animal("Tony the Tiger", 13);
exchange.getIn().setBody(tiger);
@@ -1109,7 +1127,7 @@ public class SimpleTest extends Language
public void testSlashBeforeHeader() throws Exception {
assertExpression("foo/${header.foo}", "foo/abc");
- assertExpression("foo\\\\${header.foo}", "foo\\abc");
+ assertExpression("foo\\${header.foo}", "foo\\abc");
}
public void testJSonLike() throws Exception {
@@ -1133,7 +1151,7 @@ public class SimpleTest extends Language
exchange.getIn().setBody("Something");
// slash foo
- assertExpression("\\\\foo", "\\foo");
+ assertExpression("\\foo", "\\foo");
assertExpression("\\n${body}", "\nSomething");
assertExpression("\\t${body}", "\tSomething");
@@ -1144,9 +1162,7 @@ public class SimpleTest extends Language
assertExpression("\\r${body}\\r", "\rSomething\r");
assertExpression("\\n\\r${body}\\n\\r", "\n\rSomething\n\r");
- assertExpression("\\$${body}", "$Something");
- assertExpression("\\$\\{${body}\\}", "${Something}");
- assertExpression("\\$\\{body\\}", "${body}");
+ assertExpression("$${body}", "$Something");
}
protected String getLanguageName() {
@@ -1154,15 +1170,12 @@ public class SimpleTest extends Language
}
protected void assertExpressionResultInstanceOf(String expressionText, Class<?> expectedType) {
- // TODO [hz]: we should refactor TestSupport.assertExpression(Expression, Exchange, Object)
- // into 2 methods, a helper that returns the value and use that helper in assertExpression
- // Then use the helper here to get the value and move this method to LanguageTestSupport
Language language = assertResolveLanguage(getLanguageName());
Expression expression = language.createExpression(expressionText);
assertNotNull("Cannot assert type when no type is provided", expectedType);
assertNotNull("No Expression could be created for text: " + expressionText + " language: " + language, expression);
Object answer = expression.evaluate(exchange, Object.class);
- assertIsInstanceOf(Animal.class, answer);
+ assertIsInstanceOf(expectedType, answer);
}
public static final class Animal {