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