You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2014/04/10 15:51:06 UTC

svn commit: r1586300 - in /commons/proper/codec/trunk/src: changes/ main/java/org/apache/commons/codec/binary/ main/java/org/apache/commons/codec/language/ test/java/org/apache/commons/codec/language/

Author: ggregory
Date: Thu Apr 10 13:51:06 2014
New Revision: 1586300

URL: http://svn.apache.org/r1586300
Log:
<action dev="ggregory" type="add" issue="CODEC-184" due-to="Cyrille Artho">NullPointerException in DoubleMetaPhone.isDoubleMetaphoneEqual when using empty strings</action>

Added:
    commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/CharSequenceUtils.java   (with props)
Modified:
    commons/proper/codec/trunk/src/changes/changes.xml
    commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/StringUtils.java
    commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/DoubleMetaphone.java
    commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/language/DoubleMetaphoneTest.java

Modified: commons/proper/codec/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/changes/changes.xml?rev=1586300&r1=1586299&r2=1586300&view=diff
==============================================================================
--- commons/proper/codec/trunk/src/changes/changes.xml (original)
+++ commons/proper/codec/trunk/src/changes/changes.xml Thu Apr 10 13:51:06 2014
@@ -43,6 +43,7 @@ The <action> type attribute can be add,u
   </properties>
   <body>
     <release version="1.10" date="DD Mmmm 2014" description="Feature and fix release."> 
+      <action dev="ggregory" type="add" issue="CODEC-184" due-to="Cyrille Artho">NullPointerException in DoubleMetaPhone.isDoubleMetaphoneEqual when using empty strings</action>   
       <action dev="ggregory" type="add" issue="CODEC-181" due-to="Ivan Martinez-Ortiz">Make possible to provide padding byte to BaseNCodec in constructor</action>   
       <action dev="ggregory" type="fix" issue="CODEC-180" due-to="Ville Skyttä">Fix Javadoc 1.8.0 errors</action>   
       <action dev="ggregory" type="update" issue="CODEC-178">Deprecate Charsets Charset constants in favor of Java 7's java.nio.charset.StandardCharsets</action>   

Added: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/CharSequenceUtils.java
URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/CharSequenceUtils.java?rev=1586300&view=auto
==============================================================================
--- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/CharSequenceUtils.java (added)
+++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/CharSequenceUtils.java Thu Apr 10 13:51:06 2014
@@ -0,0 +1,63 @@
+package org.apache.commons.codec.binary;
+
+/**
+ * <p>
+ * Operations on {@link CharSequence} that are {@code null} safe.
+ * </p>
+ * <p>
+ * Copied from Apache Commons Lang r1586295 on April 10, 2014 (day of 3.3.2 release).
+ * </p>
+ * 
+ * @see CharSequence
+ * @since 1.10
+ */
+public class CharSequenceUtils {
+
+    /**
+     * Green implementation of regionMatches.
+     * 
+     * @param cs
+     *            the {@code CharSequence} to be processed
+     * @param ignoreCase
+     *            whether or not to be case insensitive
+     * @param thisStart
+     *            the index to start on the {@code cs} CharSequence
+     * @param substring
+     *            the {@code CharSequence} to be looked for
+     * @param start
+     *            the index to start on the {@code substring} CharSequence
+     * @param length
+     *            character length of the region
+     * @return whether the region matched
+     */
+    static boolean regionMatches(final CharSequence cs, final boolean ignoreCase, final int thisStart,
+            final CharSequence substring, final int start, final int length) {
+        if (cs instanceof String && substring instanceof String) {
+            return ((String) cs).regionMatches(ignoreCase, thisStart, (String) substring, start, length);
+        }
+        int index1 = thisStart;
+        int index2 = start;
+        int tmpLen = length;
+
+        while (tmpLen-- > 0) {
+            char c1 = cs.charAt(index1++);
+            char c2 = substring.charAt(index2++);
+
+            if (c1 == c2) {
+                continue;
+            }
+
+            if (!ignoreCase) {
+                return false;
+            }
+
+            // The same check as in String.regionMatches():
+            if (Character.toUpperCase(c1) != Character.toUpperCase(c2)
+                    && Character.toLowerCase(c1) != Character.toLowerCase(c2)) {
+                return false;
+            }
+        }
+
+        return true;
+    }
+}

Propchange: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/CharSequenceUtils.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/CharSequenceUtils.java
------------------------------------------------------------------------------
    svn:keywords = Id

Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/StringUtils.java
URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/StringUtils.java?rev=1586300&r1=1586299&r2=1586300&view=diff
==============================================================================
--- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/StringUtils.java (original)
+++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/StringUtils.java Thu Apr 10 13:51:06 2014
@@ -38,6 +38,49 @@ import org.apache.commons.codec.Charsets
 public class StringUtils {
 
     /**
+     * <p>
+     * Compares two CharSequences, returning {@code true} if they represent equal sequences of characters.
+     * </p>
+     * 
+     * <p>
+     * {@code null}s are handled without exceptions. Two {@code null} references are considered to be equal. The
+     * comparison is case sensitive.
+     * </p>
+     * 
+     * <pre>
+     * StringUtils.equals(null, null)   = true
+     * StringUtils.equals(null, "abc")  = false
+     * StringUtils.equals("abc", null)  = false
+     * StringUtils.equals("abc", "abc") = true
+     * StringUtils.equals("abc", "ABC") = false
+     * </pre>
+     * 
+     * <p>
+     * Copied from Apache Commons Lang r1583482 on April 10, 2014 (day of 3.3.2 release).
+     * </p>
+     * 
+     * @see Object#equals(Object)
+     * @param cs1
+     *            the first CharSequence, may be {@code null}
+     * @param cs2
+     *            the second CharSequence, may be {@code null}
+     * @return {@code true} if the CharSequences are equal (case-sensitive), or both {@code null}
+     * @since 1.10
+     */
+    public static boolean equals(final CharSequence cs1, final CharSequence cs2) {
+        if (cs1 == cs2) {
+            return true;
+        }
+        if (cs1 == null || cs2 == null) {
+            return false;
+        }
+        if (cs1 instanceof String && cs2 instanceof String) {
+            return cs1.equals(cs2);
+        }
+        return CharSequenceUtils.regionMatches(cs1, false, 0, cs2, 0, Math.max(cs1.length(), cs2.length()));
+    }
+
+    /**
      * Calls {@link String#getBytes(Charset)}
      *
      * @param string

Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/DoubleMetaphone.java
URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/DoubleMetaphone.java?rev=1586300&r1=1586299&r2=1586300&view=diff
==============================================================================
--- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/DoubleMetaphone.java (original)
+++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/DoubleMetaphone.java Thu Apr 10 13:51:06 2014
@@ -19,6 +19,7 @@ package org.apache.commons.codec.languag
 
 import org.apache.commons.codec.EncoderException;
 import org.apache.commons.codec.StringEncoder;
+import org.apache.commons.codec.binary.StringUtils;
 
 /**
  * Encodes a string into a double metaphone value. This Implementation is based on the algorithm by <CITE>Lawrence
@@ -241,7 +242,7 @@ public class DoubleMetaphone implements 
      *          {@code false} otherwise.
      */
     public boolean isDoubleMetaphoneEqual(final String value1, final String value2, final boolean alternate) {
-        return doubleMetaphone(value1, alternate).equals(doubleMetaphone(value2, alternate));
+        return StringUtils.equals(doubleMetaphone(value1, alternate), doubleMetaphone(value2, alternate));
     }
 
     /**

Modified: commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/language/DoubleMetaphoneTest.java
URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/language/DoubleMetaphoneTest.java?rev=1586300&r1=1586299&r2=1586300&view=diff
==============================================================================
--- commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/language/DoubleMetaphoneTest.java (original)
+++ commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/language/DoubleMetaphoneTest.java Thu Apr 10 13:51:06 2014
@@ -1061,6 +1061,16 @@ public class DoubleMetaphoneTest extends
     }
 
     @Test
+    public void testCodec184() throws Throwable {
+        assertTrue(new DoubleMetaphone().isDoubleMetaphoneEqual("", "", false));
+        assertTrue(new DoubleMetaphone().isDoubleMetaphoneEqual("", "", true));
+        assertFalse(new DoubleMetaphone().isDoubleMetaphoneEqual("aa", "", false));
+        assertFalse(new DoubleMetaphone().isDoubleMetaphoneEqual("aa", "", true));
+        assertFalse(new DoubleMetaphone().isDoubleMetaphoneEqual("", "aa", false));
+        assertFalse(new DoubleMetaphone().isDoubleMetaphoneEqual("", "aa", true));
+      }
+
+    @Test
     public void testDoubleMetaphone() {
         assertDoubleMetaphone("TSTN", "testing");
         assertDoubleMetaphone("0", "The");
@@ -1111,7 +1121,9 @@ public class DoubleMetaphoneTest extends
 
     @Test
     public void testIsDoubleMetaphoneEqualBasic() {
-        final String[][] testFixture = new String[][] { { "Case", "case" }, {
+        final String[][] testFixture = new String[][] { { 
+                "", "" }, {
+                "Case", "case" }, {
                 "CASE", "Case" }, {
                 "caSe", "cAsE" }, {
                 "cookie", "quick" }, {



Re: svn commit: r1586300 - in /commons/proper/codec/trunk/src: changes/ main/java/org/apache/commons/codec/binary/ main/java/org/apache/commons/codec/language/ test/java/org/apache/commons/codec/language/

Posted by Gary Gregory <ga...@gmail.com>.
On Thu, Apr 10, 2014 at 10:14 AM, sebb <se...@gmail.com> wrote:

> On 10 April 2014 14:51,  <gg...@apache.org> wrote:
> > Author: ggregory
> > Date: Thu Apr 10 13:51:06 2014
> > New Revision: 1586300
> >
> > URL: http://svn.apache.org/r1586300
> > Log:
> > <action dev="ggregory" type="add" issue="CODEC-184" due-to="Cyrille
> Artho">NullPointerException in DoubleMetaPhone.isDoubleMetaphoneEqual when
> using empty strings</action>
> >
> > Added:
> >
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/CharSequenceUtils.java
>   (with props)
> > Modified:
> >     commons/proper/codec/trunk/src/changes/changes.xml
> >
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/StringUtils.java
> >
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/DoubleMetaphone.java
> >
> commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/language/DoubleMetaphoneTest.java
> >
> > Modified: commons/proper/codec/trunk/src/changes/changes.xml
> > URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/changes/changes.xml?rev=1586300&r1=1586299&r2=1586300&view=diff
> >
> ==============================================================================
> > --- commons/proper/codec/trunk/src/changes/changes.xml (original)
> > +++ commons/proper/codec/trunk/src/changes/changes.xml Thu Apr 10
> 13:51:06 2014
> > @@ -43,6 +43,7 @@ The <action> type attribute can be add,u
> >    </properties>
> >    <body>
> >      <release version="1.10" date="DD Mmmm 2014" description="Feature
> and fix release.">
> > +      <action dev="ggregory" type="add" issue="CODEC-184"
> due-to="Cyrille Artho">NullPointerException in
> DoubleMetaPhone.isDoubleMetaphoneEqual when using empty strings</action>
> >        <action dev="ggregory" type="add" issue="CODEC-181" due-to="Ivan
> Martinez-Ortiz">Make possible to provide padding byte to BaseNCodec in
> constructor</action>
> >        <action dev="ggregory" type="fix" issue="CODEC-180" due-to="Ville
> Skyttä">Fix Javadoc 1.8.0 errors</action>
> >        <action dev="ggregory" type="update" issue="CODEC-178">Deprecate
> Charsets Charset constants in favor of Java 7's
> java.nio.charset.StandardCharsets</action>
> >
> > Added:
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/CharSequenceUtils.java
> > URL:
> http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/CharSequenceUtils.java?rev=1586300&view=auto
> >
> ==============================================================================
> > ---
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/CharSequenceUtils.java
> (added)
> > +++
> commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/CharSequenceUtils.java
> Thu Apr 10 13:51:06 2014
> > @@ -0,0 +1,63 @@
>
> Where is the AL header?
>

Now in SVN. TY.  GG.

>
> > +package org.apache.commons.codec.binary;
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
> For additional commands, e-mail: dev-help@commons.apache.org
>
>


-- 
E-Mail: garydgregory@gmail.com | ggregory@apache.org
Java Persistence with Hibernate, Second Edition<http://www.manning.com/bauer3/>
JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
Spring Batch in Action <http://www.manning.com/templier/>
Blog: http://garygregory.wordpress.com
Home: http://garygregory.com/
Tweet! http://twitter.com/GaryGregory

Re: svn commit: r1586300 - in /commons/proper/codec/trunk/src: changes/ main/java/org/apache/commons/codec/binary/ main/java/org/apache/commons/codec/language/ test/java/org/apache/commons/codec/language/

Posted by sebb <se...@gmail.com>.
On 10 April 2014 14:51,  <gg...@apache.org> wrote:
> Author: ggregory
> Date: Thu Apr 10 13:51:06 2014
> New Revision: 1586300
>
> URL: http://svn.apache.org/r1586300
> Log:
> <action dev="ggregory" type="add" issue="CODEC-184" due-to="Cyrille Artho">NullPointerException in DoubleMetaPhone.isDoubleMetaphoneEqual when using empty strings</action>
>
> Added:
>     commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/CharSequenceUtils.java   (with props)
> Modified:
>     commons/proper/codec/trunk/src/changes/changes.xml
>     commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/StringUtils.java
>     commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/DoubleMetaphone.java
>     commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/language/DoubleMetaphoneTest.java
>
> Modified: commons/proper/codec/trunk/src/changes/changes.xml
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/changes/changes.xml?rev=1586300&r1=1586299&r2=1586300&view=diff
> ==============================================================================
> --- commons/proper/codec/trunk/src/changes/changes.xml (original)
> +++ commons/proper/codec/trunk/src/changes/changes.xml Thu Apr 10 13:51:06 2014
> @@ -43,6 +43,7 @@ The <action> type attribute can be add,u
>    </properties>
>    <body>
>      <release version="1.10" date="DD Mmmm 2014" description="Feature and fix release.">
> +      <action dev="ggregory" type="add" issue="CODEC-184" due-to="Cyrille Artho">NullPointerException in DoubleMetaPhone.isDoubleMetaphoneEqual when using empty strings</action>
>        <action dev="ggregory" type="add" issue="CODEC-181" due-to="Ivan Martinez-Ortiz">Make possible to provide padding byte to BaseNCodec in constructor</action>
>        <action dev="ggregory" type="fix" issue="CODEC-180" due-to="Ville Skyttä">Fix Javadoc 1.8.0 errors</action>
>        <action dev="ggregory" type="update" issue="CODEC-178">Deprecate Charsets Charset constants in favor of Java 7's java.nio.charset.StandardCharsets</action>
>
> Added: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/CharSequenceUtils.java
> URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/CharSequenceUtils.java?rev=1586300&view=auto
> ==============================================================================
> --- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/CharSequenceUtils.java (added)
> +++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/binary/CharSequenceUtils.java Thu Apr 10 13:51:06 2014
> @@ -0,0 +1,63 @@

Where is the AL header?

> +package org.apache.commons.codec.binary;

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org