This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
commit 31da47edb3885fb83b9f0c32519ef830e28e79ff Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Sat Jun 22 14:52:12 2019 +0200 CAMEL-13674: Simple language - Add bodyOneLine function --- core/camel-base/src/main/docs/simple-language.adoc | 2 ++ .../simple/ast/SimpleFunctionExpression.java | 2 ++ .../apache/camel/language/simple/SimpleTest.java | 8 ++++++++ .../camel/support/builder/ExpressionBuilder.java | 22 +++++++++++++++++++++- 4 files changed, 33 insertions(+), 1 deletion(-) diff --git a/core/camel-base/src/main/docs/simple-language.adoc b/core/camel-base/src/main/docs/simple-language.adoc index fa1aff4..654b66c 100644 --- a/core/camel-base/src/main/docs/simple-language.adoc +++ b/core/camel-base/src/main/docs/simple-language.adoc @@ -78,6 +78,8 @@ classname. The converted body can be null. classname and then invoke methods using a Camel OGNL expression. The converted body can be null. +|bodyOneLine | String | Converts the body to a String and removes all line-breaks so the string is in one line. + |mandatoryBodyAs(_type_) |Type |Converts the body to the given type determined by its classname, and expects the body to be not null. diff --git a/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java index 641a8ca..ed4ce03 100644 --- a/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java +++ b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java @@ -410,6 +410,8 @@ public class SimpleFunctionExpression extends LiteralExpression { return ExpressionBuilder.bodyExpression(); } else if (ObjectHelper.equal(expression, "out.body")) { return ExpressionBuilder.outBodyExpression(); + } else if (ObjectHelper.equal(expression, "bodyOneLine")) { + return ExpressionBuilder.bodyOneLine(); } else if (ObjectHelper.equal(expression, "id")) { return ExpressionBuilder.messageIdExpression(); } else if (ObjectHelper.equal(expression, "exchangeId")) { diff --git a/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java b/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java index 261d18b..529f8e0 100644 --- a/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java +++ b/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java @@ -1898,6 +1898,14 @@ public class SimpleTest extends LanguageTestSupport { } @Test + public void testBodyAsOneLine() throws Exception { + exchange.getIn().setBody("Hello" + System.lineSeparator() + "Great" + System.lineSeparator() + "World"); + assertExpression("${bodyOneLine}", "HelloGreatWorld"); + assertExpression("Hi ${bodyOneLine}", "Hi HelloGreatWorld"); + assertExpression("Hi ${bodyOneLine} Again", "Hi HelloGreatWorld Again"); + } + + @Test public void testNestedTypeFunction() throws Exception { // when using type: function we need special logic to not lazy evaluate it so its evaluated only once // and won't fool Camel to think its a nested OGNL method call expression instead (CAMEL-10664) diff --git a/core/camel-support/src/main/java/org/apache/camel/support/builder/ExpressionBuilder.java b/core/camel-support/src/main/java/org/apache/camel/support/builder/ExpressionBuilder.java index de302e6..f4f2744 100644 --- a/core/camel-support/src/main/java/org/apache/camel/support/builder/ExpressionBuilder.java +++ b/core/camel-support/src/main/java/org/apache/camel/support/builder/ExpressionBuilder.java @@ -1640,6 +1640,27 @@ public class ExpressionBuilder { }; } + /** + * Returns the expression for the message body as a one-line string + */ + public static Expression bodyOneLine() { + return new ExpressionAdapter() { + public Object evaluate(Exchange exchange) { + String body = exchange.getIn().getBody(String.class); + if (body == null) { + return null; + } + body = StringHelper.replaceAll(body, System.lineSeparator(), ""); + return body; + } + + @Override + public String toString() { + return "bodyOneLine()"; + } + }; + } + protected static void setProperty(CamelContext camelContext, Object bean, String name, Object value) { try { IntrospectionSupport.setProperty(camelContext, bean, name, value); @@ -1647,5 +1668,4 @@ public class ExpressionBuilder { throw new IllegalArgumentException("Failed to set property " + name + " on " + bean + ". Reason: " + e, e); } } - }