CAMEL-6953: contains predicate should deal with StringBuilder/StringBuffer types, if checking with String types
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/573a3028 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/573a3028 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/573a3028 Branch: refs/heads/camel-2.12.x Commit: 573a3028ac73e257a95028fe1ede03a3a1e97f27 Parents: da00bb6 Author: Claus Ibsen <[email protected]> Authored: Mon Nov 11 15:55:45 2013 +0100 Committer: Claus Ibsen <[email protected]> Committed: Mon Nov 11 15:56:07 2013 +0100 ---------------------------------------------------------------------- .../org/apache/camel/util/ObjectHelper.java | 8 ++++++ .../org/apache/camel/util/ObjectHelperTest.java | 26 ++++++++++++++++++++ 2 files changed, 34 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/573a3028/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java b/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java index d6b9a3e..2b0827a 100644 --- a/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java +++ b/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java @@ -455,6 +455,14 @@ public final class ObjectHelper { * Returns true if the collection contains the specified value */ public static boolean contains(Object collectionOrArray, Object value) { + // favor String types + if (collectionOrArray != null && (collectionOrArray instanceof StringBuffer || collectionOrArray instanceof StringBuilder)) { + collectionOrArray = collectionOrArray.toString(); + } + if (value != null && (value instanceof StringBuffer || value instanceof StringBuilder)) { + value = value.toString(); + } + if (collectionOrArray instanceof Collection) { Collection<?> collection = (Collection<?>)collectionOrArray; return collection.contains(value); http://git-wip-us.apache.org/repos/asf/camel/blob/573a3028/camel-core/src/test/java/org/apache/camel/util/ObjectHelperTest.java ---------------------------------------------------------------------- diff --git a/camel-core/src/test/java/org/apache/camel/util/ObjectHelperTest.java b/camel-core/src/test/java/org/apache/camel/util/ObjectHelperTest.java index 106c42c..315f866 100644 --- a/camel-core/src/test/java/org/apache/camel/util/ObjectHelperTest.java +++ b/camel-core/src/test/java/org/apache/camel/util/ObjectHelperTest.java @@ -93,6 +93,32 @@ public class ObjectHelperTest extends TestCase { assertFalse(ObjectHelper.contains("foo", "xyz")); } + public void testContainsStringBuilder() throws Exception { + StringBuilder sb = new StringBuilder(); + sb.append("Hello World"); + + assertTrue(ObjectHelper.contains(sb, "World")); + assertTrue(ObjectHelper.contains(sb, new StringBuffer("World"))); + assertTrue(ObjectHelper.contains(sb, new StringBuilder("World"))); + + assertFalse(ObjectHelper.contains(sb, "Camel")); + assertFalse(ObjectHelper.contains(sb, new StringBuffer("Camel"))); + assertFalse(ObjectHelper.contains(sb, new StringBuilder("Camel"))); + } + + public void testContainsStringBuffer() throws Exception { + StringBuffer sb = new StringBuffer(); + sb.append("Hello World"); + + assertTrue(ObjectHelper.contains(sb, "World")); + assertTrue(ObjectHelper.contains(sb, new StringBuffer("World"))); + assertTrue(ObjectHelper.contains(sb, new StringBuilder("World"))); + + assertFalse(ObjectHelper.contains(sb, "Camel")); + assertFalse(ObjectHelper.contains(sb, new StringBuffer("Camel"))); + assertFalse(ObjectHelper.contains(sb, new StringBuilder("Camel"))); + } + public void testEqual() { assertTrue(ObjectHelper.equal(null, null)); assertTrue(ObjectHelper.equal("", ""));
