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 2020/11/04 15:55:00 UTC
[camel] branch master updated: CAMEL-15807: Fixed regression with
Simple language contains function.
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
The following commit(s) were added to refs/heads/master by this push:
new 0cde002 CAMEL-15807: Fixed regression with Simple language contains function.
0cde002 is described below
commit 0cde0023c06e60d459c5008c321782b747a87bbc
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Wed Nov 4 16:54:24 2020 +0100
CAMEL-15807: Fixed regression with Simple language contains function.
---
.../camel/language/simple/SimpleOperatorTest.java | 15 ++++++++---
.../org/apache/camel/support/ObjectHelper.java | 29 ++++++++++++++--------
2 files changed, 30 insertions(+), 14 deletions(-)
diff --git a/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleOperatorTest.java b/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleOperatorTest.java
index 2a69f1b..849a04b 100644
--- a/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleOperatorTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleOperatorTest.java
@@ -380,11 +380,11 @@ public class SimpleOperatorTest extends LanguageTestSupport {
assertPredicate("${in.header.num} <= 123", true);
exchange.getIn().setHeader("strNumNegative", "-123");
- assertPredicate("${in.header.strNumNegative} contains '123'", false);
- assertPredicate("${in.header.strNumNegative} !contains '123'", true);
+ assertPredicate("${in.header.strNumNegative} contains '123'", true);
+ assertPredicate("${in.header.strNumNegative} !contains '123'", false);
assertPredicate("${in.header.strNumNegative} contains '-123'", true);
assertPredicate("${in.header.strNumNegative} !contains '-123'", false);
- assertPredicate("${in.header.strNumNegative} ~~ '123'", false);
+ assertPredicate("${in.header.strNumNegative} ~~ '123'", true);
assertPredicate("${in.header.strNumNegative} ~~ '-123'", true);
}
@@ -499,6 +499,15 @@ public class SimpleOperatorTest extends LanguageTestSupport {
}
@Test
+ public void testContainsNumberInString() throws Exception {
+ exchange.getMessage().setBody("The answer is 42 and is the answer to life the universe and everything");
+ assertPredicate("${body} contains '42'", true);
+ assertPredicate("${body} contains 42", true);
+ assertPredicate("${body} contains '77'", false);
+ assertPredicate("${body} contains 77", false);
+ }
+
+ @Test
public void testNotContains() throws Exception {
assertPredicate("${in.header.foo} not contains 'a'", false);
assertPredicate("${in.header.foo} not contains 'ab'", false);
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/ObjectHelper.java b/core/camel-support/src/main/java/org/apache/camel/support/ObjectHelper.java
index 0075784..18e477c 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/ObjectHelper.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/ObjectHelper.java
@@ -814,23 +814,30 @@ public final class ObjectHelper {
} else {
return collection.contains(value);
}
- } else if (collectionOrArray instanceof String && value instanceof String) {
+ } else if (collectionOrArray instanceof String) {
String str = (String) collectionOrArray;
- String subStr = (String) value;
- if (ignoreCase) {
- String lower = subStr.toLowerCase(Locale.ENGLISH);
- return str.toLowerCase(Locale.ENGLISH).contains(lower);
+ String subStr;
+ if (value instanceof String) {
+ subStr = (String) value;
} else {
- return str.contains(subStr);
+ subStr = typeConverter.tryConvertTo(String.class, value);
}
- } else {
- Iterator<?> iter = createIterator(collectionOrArray);
- while (iter.hasNext()) {
- if (typeCoerceEquals(typeConverter, value, iter.next(), ignoreCase)) {
- return true;
+ if (subStr != null) {
+ if (ignoreCase) {
+ String lower = subStr.toLowerCase(Locale.ENGLISH);
+ return str.toLowerCase(Locale.ENGLISH).contains(lower);
+ } else {
+ return str.contains(subStr);
}
}
}
+
+ Iterator<?> iter = createIterator(collectionOrArray);
+ while (iter.hasNext()) {
+ if (typeCoerceEquals(typeConverter, value, iter.next(), ignoreCase)) {
+ return true;
+ }
+ }
return false;
}