You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by lg...@apache.org on 2015/11/06 13:23:08 UTC

[1/4] [lang] LANG-1169 Added equalsAny() and equalsAnyIgnoreCase() methods to StringUtils.

Repository: commons-lang
Updated Branches:
  refs/heads/master a5650a167 -> 481137553


LANG-1169 Added equalsAny() and equalsAnyIgnoreCase() methods to StringUtils.


Project: http://git-wip-us.apache.org/repos/asf/commons-lang/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-lang/commit/3a68fe8b
Tree: http://git-wip-us.apache.org/repos/asf/commons-lang/tree/3a68fe8b
Diff: http://git-wip-us.apache.org/repos/asf/commons-lang/diff/3a68fe8b

Branch: refs/heads/master
Commit: 3a68fe8b7e2aecaf75535415d2a7c8268345cd26
Parents: 47c1862
Author: Arman Sharif <ar...@gmail.com>
Authored: Wed Sep 2 17:09:06 2015 -0700
Committer: Arman Sharif <ar...@gmail.com>
Committed: Mon Nov 2 09:47:08 2015 -0800

----------------------------------------------------------------------
 .../org/apache/commons/lang3/StringUtils.java   | 59 ++++++++++++++++++++
 .../lang3/StringUtilsEqualsIndexOfTest.java     | 43 ++++++++++++++
 2 files changed, 102 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-lang/blob/3a68fe8b/src/main/java/org/apache/commons/lang3/StringUtils.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/lang3/StringUtils.java b/src/main/java/org/apache/commons/lang3/StringUtils.java
index 7bf62d1..f2faa68 100644
--- a/src/main/java/org/apache/commons/lang3/StringUtils.java
+++ b/src/main/java/org/apache/commons/lang3/StringUtils.java
@@ -1008,6 +1008,65 @@ public class StringUtils {
         return str1.compareToIgnoreCase(str2);
     }
 
+    /**
+     * <p>Compares given <code>string</code> to a CharSequences vararg of <code>searchStrings</code>,
+     * returning {@code true} if the <code>string</code> is equal to any of the <code>searchStrings</code>.</p>
+     *
+     * <pre>
+     * StringUtils.equalsAny(null, null, null)    = true
+     * StringUtils.equalsAny(null, "abc", "def")  = false
+     * StringUtils.equalsAny("abc", null, "def")  = false
+     * StringUtils.equalsAny("abc", "abc", "def") = true
+     * StringUtils.equalsAny("abc", "ABC", "DEF") = false
+     * </pre>
+     *
+     * @param string to compare, may be {@code null}.
+     * @param searchStrings a vararg of strings, may be {@code null}.
+     * @return {@code true} if the string is equal (case-sensitive) to any other element of <code>searchStrings</code>;
+     * {@code false} if <code>searchStrings</code> is null or contains no matches.
+     * @since 3.5
+     */
+    public static boolean equalsAny(final CharSequence string, final CharSequence... searchStrings) {
+        if (ArrayUtils.isNotEmpty(searchStrings)) {
+            for (CharSequence next : searchStrings) {
+                if (equals(string, next)) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+
+    /**
+     * <p>Compares given <code>string</code> to a CharSequences vararg of <code>searchStrings</code>,
+     * returning {@code true} if the <code>string</code> is equal to any of the <code>searchStrings</code>, ignoring case.</p>
+     *
+     * <pre>
+     * StringUtils.equalsAnyIgnoreCase(null, null, null)    = true
+     * StringUtils.equalsAnyIgnoreCase(null, "abc", "def")  = false
+     * StringUtils.equalsAnyIgnoreCase("abc", null, "def")  = false
+     * StringUtils.equalsAnyIgnoreCase("abc", "abc", "def") = true
+     * StringUtils.equalsAnyIgnoreCase("abc", "ABC", "DEF") = true
+     * </pre>
+     *
+     * @param string to compare, may be {@code null}.
+     * @param searchStrings a vararg of strings, may be {@code null}.
+     * @return {@code true} if the string is equal (case-insensitive) to any other element of <code>searchStrings</code>;
+     * {@code false} if <code>searchStrings</code> is null or contains no matches.
+     * @since 3.5
+     */
+    public static boolean equalsAnyIgnoreCase(final CharSequence string, final CharSequence...searchStrings) {
+        if (ArrayUtils.isNotEmpty(searchStrings)) {
+            for (CharSequence next : searchStrings) {
+                if (equalsIgnoreCase(string, next)) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
     // IndexOf
     //-----------------------------------------------------------------------
     /**

http://git-wip-us.apache.org/repos/asf/commons-lang/blob/3a68fe8b/src/test/java/org/apache/commons/lang3/StringUtilsEqualsIndexOfTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/lang3/StringUtilsEqualsIndexOfTest.java b/src/test/java/org/apache/commons/lang3/StringUtilsEqualsIndexOfTest.java
index b45a5f6..cf6b815 100644
--- a/src/test/java/org/apache/commons/lang3/StringUtilsEqualsIndexOfTest.java
+++ b/src/test/java/org/apache/commons/lang3/StringUtilsEqualsIndexOfTest.java
@@ -576,6 +576,49 @@ public class StringUtilsEqualsIndexOfTest  {
         assertFalse(StringUtils.equalsIgnoreCase("abcd","abcd "));
     }
 
+    @Test
+    public void testEqualsAny() {
+        assertFalse(StringUtils.equalsAny(FOO));
+        assertFalse(StringUtils.equalsAny(FOO, new String[]{}));
+
+        assertTrue(StringUtils.equalsAny(FOO, FOO));
+        assertTrue(StringUtils.equalsAny(FOO, BAR, new String(new char[] { 'f', 'o', 'o' })));
+        assertFalse(StringUtils.equalsAny(FOO, BAR, new String(new char[] { 'f', 'O', 'O' })));
+        assertFalse(StringUtils.equalsAny(FOO, BAR));
+        assertFalse(StringUtils.equalsAny(FOO, BAR, null));
+        assertFalse(StringUtils.equalsAny(null, FOO));
+        assertFalse(StringUtils.equalsAny(FOO, FOOBAR));
+        assertFalse(StringUtils.equalsAny(FOOBAR, FOO));
+
+        assertTrue(StringUtils.equalsAny(null, null, null));
+        assertFalse(StringUtils.equalsAny(null, FOO, BAR, FOOBAR));
+        assertFalse(StringUtils.equalsAny(FOO, null, BAR));
+        assertTrue(StringUtils.equalsAny(FOO, BAR, null, "", FOO, BAR));
+        assertFalse(StringUtils.equalsAny(FOO, FOO.toUpperCase()));
+    }
+
+    @Test
+    public void testEqualsAnyIgnoreCase() {
+        assertFalse(StringUtils.equalsAnyIgnoreCase(FOO));
+        assertFalse(StringUtils.equalsAnyIgnoreCase(FOO, new String[]{}));
+
+        assertTrue(StringUtils.equalsAnyIgnoreCase(FOO, FOO));
+        assertTrue(StringUtils.equalsAnyIgnoreCase(FOO, FOO.toUpperCase()));
+        assertTrue(StringUtils.equalsAnyIgnoreCase(FOO, FOO, new String(new char[]{'f', 'o', 'o'})));
+        assertTrue(StringUtils.equalsAnyIgnoreCase(FOO, BAR, new String(new char[]{'f', 'O', 'O'})));
+        assertFalse(StringUtils.equalsAnyIgnoreCase(FOO, BAR));
+        assertFalse(StringUtils.equalsAnyIgnoreCase(FOO, BAR, null));
+        assertFalse(StringUtils.equalsAnyIgnoreCase(null, FOO));
+        assertFalse(StringUtils.equalsAnyIgnoreCase(FOO, FOOBAR));
+        assertFalse(StringUtils.equalsAnyIgnoreCase(FOOBAR, FOO));
+
+        assertTrue(StringUtils.equalsAnyIgnoreCase(null, null, null));
+        assertFalse(StringUtils.equalsAnyIgnoreCase(null, FOO, BAR, FOOBAR));
+        assertFalse(StringUtils.equalsAnyIgnoreCase(FOO, null, BAR));
+        assertTrue(StringUtils.equalsAnyIgnoreCase(FOO, BAR, null, "", FOO.toUpperCase(), BAR));
+        assertTrue(StringUtils.equalsAnyIgnoreCase(FOO, FOO.toUpperCase()));
+    }
+
     //-----------------------------------------------------------------------
     @Test
     public void testCompare_StringString() {


[3/4] [lang] Add LANG-1169 to changes.xml

Posted by lg...@apache.org.
Add LANG-1169 to changes.xml


Project: http://git-wip-us.apache.org/repos/asf/commons-lang/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-lang/commit/2c790ccc
Tree: http://git-wip-us.apache.org/repos/asf/commons-lang/tree/2c790ccc
Diff: http://git-wip-us.apache.org/repos/asf/commons-lang/diff/2c790ccc

Branch: refs/heads/master
Commit: 2c790ccc312535e679bd4a24e2065d0b7119e014
Parents: a06f83a
Author: Loic Guibert <lg...@apache.org>
Authored: Fri Nov 6 16:13:57 2015 +0400
Committer: Loic Guibert <lg...@apache.org>
Committed: Fri Nov 6 16:13:57 2015 +0400

----------------------------------------------------------------------
 src/changes/changes.xml | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-lang/blob/2c790ccc/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 432c77c..96f6108 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -22,6 +22,7 @@
   <body>
 
   <release version="3.5" date="tba" description="tba">
+    <action issue="LANG-1169" type="add" dev="lguibert" due-to="Rafal Glowinski, Robert Parr, Arman Sharif">Add StringUtils methods to compare a string to multiple strings</action>
     <action issue="LANG-1183" type="update" dev="lguibert">Making replacePattern/removePattern methods null safe in StringUtils</action>
     <action issue="LANG-1139" type="add" dev="lguibert">Add replace by regular expression methods in StringUtils</action>
     <action issue="LANG-1171" type="add" dev="lguibert">Add compare methods in StringUtils</action>


[4/4] [lang] Merge branch 'fix-LANG-1169'

Posted by lg...@apache.org.
Merge branch 'fix-LANG-1169'

LANG-1169: Add StringUtils methods to compare a string to multiple strings
This closes #109 from github.
Thanks to Arman Sharif for providing a patch.
Thanks to Rafal Glowinski for providing an alternative implementations, see LANG-704.
Thanks to Robert Parr for providing an alternative implementations, see LANG-704.


Conflicts:
	src/changes/changes.xml


Project: http://git-wip-us.apache.org/repos/asf/commons-lang/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-lang/commit/48113755
Tree: http://git-wip-us.apache.org/repos/asf/commons-lang/tree/48113755
Diff: http://git-wip-us.apache.org/repos/asf/commons-lang/diff/48113755

Branch: refs/heads/master
Commit: 481137553f878e2f69ce05129d4aecbf016a1756
Parents: a5650a1 2c790cc
Author: Loic Guibert <lg...@apache.org>
Authored: Fri Nov 6 16:21:32 2015 +0400
Committer: Loic Guibert <lg...@apache.org>
Committed: Fri Nov 6 16:21:32 2015 +0400

----------------------------------------------------------------------
 src/changes/changes.xml                         |  1 +
 .../org/apache/commons/lang3/StringUtils.java   | 61 ++++++++++++++++++++
 .../lang3/StringUtilsEqualsIndexOfTest.java     | 53 +++++++++++++++++
 3 files changed, 115 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-lang/blob/48113755/src/changes/changes.xml
----------------------------------------------------------------------
diff --cc src/changes/changes.xml
index 2dcb559,96f6108..bf529e6
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@@ -22,7 -22,7 +22,8 @@@
    <body>
  
    <release version="3.5" date="tba" description="tba">
+     <action issue="LANG-1169" type="add" dev="lguibert" due-to="Rafal Glowinski, Robert Parr, Arman Sharif">Add StringUtils methods to compare a string to multiple strings</action>
 +    <action issue="LANG-1185" type="add" dev="lguibert">Add remove by regular expression methods in StringUtils</action>
      <action issue="LANG-1183" type="update" dev="lguibert">Making replacePattern/removePattern methods null safe in StringUtils</action>
      <action issue="LANG-1139" type="add" dev="lguibert">Add replace by regular expression methods in StringUtils</action>
      <action issue="LANG-1171" type="add" dev="lguibert">Add compare methods in StringUtils</action>

http://git-wip-us.apache.org/repos/asf/commons-lang/blob/48113755/src/main/java/org/apache/commons/lang3/StringUtils.java
----------------------------------------------------------------------


[2/4] [lang] LANG-1169 Add some other unit tests

Posted by lg...@apache.org.
LANG-1169 Add some other unit tests


Project: http://git-wip-us.apache.org/repos/asf/commons-lang/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-lang/commit/a06f83a7
Tree: http://git-wip-us.apache.org/repos/asf/commons-lang/tree/a06f83a7
Diff: http://git-wip-us.apache.org/repos/asf/commons-lang/diff/a06f83a7

Branch: refs/heads/master
Commit: a06f83a7621f323012ddc69836cda1294a5e2114
Parents: 3a68fe8
Author: Loic Guibert <lg...@apache.org>
Authored: Fri Nov 6 16:13:13 2015 +0400
Committer: Loic Guibert <lg...@apache.org>
Committed: Fri Nov 6 16:13:13 2015 +0400

----------------------------------------------------------------------
 src/main/java/org/apache/commons/lang3/StringUtils.java   |  2 ++
 .../commons/lang3/StringUtilsEqualsIndexOfTest.java       | 10 ++++++++++
 2 files changed, 12 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-lang/blob/a06f83a7/src/main/java/org/apache/commons/lang3/StringUtils.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/lang3/StringUtils.java b/src/main/java/org/apache/commons/lang3/StringUtils.java
index f2faa68..cb35796 100644
--- a/src/main/java/org/apache/commons/lang3/StringUtils.java
+++ b/src/main/java/org/apache/commons/lang3/StringUtils.java
@@ -1013,6 +1013,7 @@ public class StringUtils {
      * returning {@code true} if the <code>string</code> is equal to any of the <code>searchStrings</code>.</p>
      *
      * <pre>
+     * StringUtils.equalsAny(null, (CharSequence[]) null) = false
      * StringUtils.equalsAny(null, null, null)    = true
      * StringUtils.equalsAny(null, "abc", "def")  = false
      * StringUtils.equalsAny("abc", null, "def")  = false
@@ -1043,6 +1044,7 @@ public class StringUtils {
      * returning {@code true} if the <code>string</code> is equal to any of the <code>searchStrings</code>, ignoring case.</p>
      *
      * <pre>
+     * StringUtils.equalsAnyIgnoreCase(null, (CharSequence[]) null) = false
      * StringUtils.equalsAnyIgnoreCase(null, null, null)    = true
      * StringUtils.equalsAnyIgnoreCase(null, "abc", "def")  = false
      * StringUtils.equalsAnyIgnoreCase("abc", null, "def")  = false

http://git-wip-us.apache.org/repos/asf/commons-lang/blob/a06f83a7/src/test/java/org/apache/commons/lang3/StringUtilsEqualsIndexOfTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/lang3/StringUtilsEqualsIndexOfTest.java b/src/test/java/org/apache/commons/lang3/StringUtilsEqualsIndexOfTest.java
index cf6b815..8750de3 100644
--- a/src/test/java/org/apache/commons/lang3/StringUtilsEqualsIndexOfTest.java
+++ b/src/test/java/org/apache/commons/lang3/StringUtilsEqualsIndexOfTest.java
@@ -595,6 +595,12 @@ public class StringUtilsEqualsIndexOfTest  {
         assertFalse(StringUtils.equalsAny(FOO, null, BAR));
         assertTrue(StringUtils.equalsAny(FOO, BAR, null, "", FOO, BAR));
         assertFalse(StringUtils.equalsAny(FOO, FOO.toUpperCase()));
+
+        assertFalse(StringUtils.equalsAny(null, (CharSequence[]) null));
+        assertTrue(StringUtils.equalsAny(FOO, new CustomCharSequence("foo")));
+        assertTrue(StringUtils.equalsAny(FOO, new StringBuilder("foo")));
+        assertFalse(StringUtils.equalsAny(FOO, new CustomCharSequence("fOo")));
+        assertFalse(StringUtils.equalsAny(FOO, new StringBuilder("fOo")));
     }
 
     @Test
@@ -617,6 +623,10 @@ public class StringUtilsEqualsIndexOfTest  {
         assertFalse(StringUtils.equalsAnyIgnoreCase(FOO, null, BAR));
         assertTrue(StringUtils.equalsAnyIgnoreCase(FOO, BAR, null, "", FOO.toUpperCase(), BAR));
         assertTrue(StringUtils.equalsAnyIgnoreCase(FOO, FOO.toUpperCase()));
+
+        assertFalse(StringUtils.equalsAnyIgnoreCase(null, (CharSequence[]) null));
+        assertTrue(StringUtils.equalsAnyIgnoreCase(FOO, new CustomCharSequence("fOo")));
+        assertTrue(StringUtils.equalsAnyIgnoreCase(FOO, new StringBuilder("fOo")));
     }
 
     //-----------------------------------------------------------------------