You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by se...@apache.org on 2018/09/28 22:47:43 UTC
svn commit: r1842290 - in /commons/proper/codec/trunk/src:
changes/changes.xml
main/java/org/apache/commons/codec/language/ColognePhonetic.java
test/java/org/apache/commons/codec/language/ColognePhoneticTest.java
Author: sebb
Date: Fri Sep 28 22:47:42 2018
New Revision: 1842290
URL: http://svn.apache.org/viewvc?rev=1842290&view=rev
Log:
CODEC-250 Wrong value calculated by Cologne Phonetic if a special character is placed between equal letters
Modified:
commons/proper/codec/trunk/src/changes/changes.xml
commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/ColognePhonetic.java
commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/language/ColognePhoneticTest.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=1842290&r1=1842289&r2=1842290&view=diff
==============================================================================
--- commons/proper/codec/trunk/src/changes/changes.xml (original)
+++ commons/proper/codec/trunk/src/changes/changes.xml Fri Sep 28 22:47:42 2018
@@ -44,6 +44,7 @@ The <action> type attribute can be add,u
<body>
<release version="1.12" date="2017-MM-DD" description="Feature and fix release.">
<!-- The first attribute below should be the issue id; makes it easier to navigate in the IDE outline -->
+ <action issue="CODEC-250" dev="sebb" type="fix" due-to="Alex Volodko">Wrong value calculated by Cologne Phonetic if a special character is placed between equal letters</action>
<action issue="CODEC-244" dev="ggregory" type="update">Update from Java 6 to Java 7</action>
<action issue="CODEC-240" dev="ggregory" type="add" due-to="Ioannis Sermetziadis">Add Percent-Encoding Codec (described in RFC3986 and RFC7578)</action>
<action issue="CODEC-246" dev="ggregory" type="fix" due-to="Oscar Luis Vera Pérez">ColognePhoneticTest.testIsEncodeEquals missing assertions</action>
Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/ColognePhonetic.java
URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/ColognePhonetic.java?rev=1842290&r1=1842289&r2=1842290&view=diff
==============================================================================
--- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/ColognePhonetic.java (original)
+++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/ColognePhonetic.java Fri Sep 28 22:47:42 2018
@@ -337,13 +337,13 @@ public class ColognePhonetic implements
nextChar = CHAR_IGNORE;
}
+ // OK to ignore H here because it only affects nextChar which has already been set up
+ if (chr == 'H' || chr < 'A' || chr > 'Z') {
+ continue; // ignore unwanted characters
+ }
+
if (arrayContains(AEIJOUY, chr)) {
code = '0';
- } else if (chr == 'H' || chr < 'A' || chr > 'Z') {
- if (lastCode == CHAR_FIRST_POS) {
- continue; // ignore leading unwanted characters
- }
- code = CHAR_IGNORE;
} else if (chr == 'B' || (chr == 'P' && nextChar != 'H')) {
code = '1';
} else if ((chr == 'D' || chr == 'T') && !arrayContains(SCZ, nextChar)) {
@@ -380,7 +380,7 @@ public class ColognePhonetic implements
} else if (chr == 'M' || chr == 'N') {
code = '6';
} else {
- code = chr;
+ code = chr; // should not happen?
}
if (code != CHAR_IGNORE && (lastCode != code && (code != '0' || lastCode == CHAR_FIRST_POS) || code < '0' || code > '8')) {
Modified: commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/language/ColognePhoneticTest.java
URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/language/ColognePhoneticTest.java?rev=1842290&r1=1842289&r2=1842290&view=diff
==============================================================================
--- commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/language/ColognePhoneticTest.java (original)
+++ commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/language/ColognePhoneticTest.java Fri Sep 28 22:47:42 2018
@@ -235,6 +235,12 @@ public class ColognePhoneticTest extends
this.checkEncodingVariations("67", data);
}
+ @Test
+ public void testSpecialCharsBetweenSameLetters() throws EncoderException {
+ final String data[] = {"Test test", "Testtest", "Test-test", "TesT#Test", "TesT?test"};
+ this.checkEncodingVariations("28282", data);
+ }
+
// Allow command-line testing
public static void main(String args[]) {
ColognePhonetic coder = new ColognePhonetic();