This is an automated email from the ASF dual-hosted git repository.
garydgregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-codec.git
The following commit(s) were added to refs/heads/master by this push:
new 38087c0f [CODEC-347] Handle names emptied during Match Rating Approach
cleaning (#448)
38087c0f is described below
commit 38087c0fc5233120a60c23de5318a4fb12ba648a
Author: Aryan R. Ganjoo <[email protected]>
AuthorDate: Sun Oct 18 19:00:12 2026 +0530
[CODEC-347] Handle names emptied during Match Rating Approach cleaning
(#448)
* CODEC-347 Handle names emptied during MRA cleaning
Return false from isEncodeEquals when cleaning removes all characters, add
public-API regression coverage, and record the issue in the changes log.
* Remove fix action for CODEC-347 from changes.xml
Removed a fix action related to CODEC-347 from the release notes.
---------
Co-authored-by: Gary Gregory <[email protected]>
---
.../commons/codec/language/MatchRatingApproachEncoder.java | 5 +++++
.../codec/language/MatchRatingApproachEncoderTest.java | 11 +++++++++++
2 files changed, 16 insertions(+)
diff --git
a/src/main/java/org/apache/commons/codec/language/MatchRatingApproachEncoder.java
b/src/main/java/org/apache/commons/codec/language/MatchRatingApproachEncoder.java
index e9d9a9e1..664dacf6 100644
---
a/src/main/java/org/apache/commons/codec/language/MatchRatingApproachEncoder.java
+++
b/src/main/java/org/apache/commons/codec/language/MatchRatingApproachEncoder.java
@@ -236,6 +236,11 @@ public class MatchRatingApproachEncoder implements
StringEncoder {
name1 = cleanName(name1);
name2 = cleanName(name2);
+ // Bulletproof if a name becomes empty after cleanName(name),
consistent with encode(String)
+ if (name1.isEmpty() || name2.isEmpty()) {
+ return false;
+ }
+
// Actual MRA Algorithm
// 1. Remove vowels
diff --git
a/src/test/java/org/apache/commons/codec/language/MatchRatingApproachEncoderTest.java
b/src/test/java/org/apache/commons/codec/language/MatchRatingApproachEncoderTest.java
index 6d14d0eb..d94bb3c0 100644
---
a/src/test/java/org/apache/commons/codec/language/MatchRatingApproachEncoderTest.java
+++
b/src/test/java/org/apache/commons/codec/language/MatchRatingApproachEncoderTest.java
@@ -381,6 +381,17 @@ class MatchRatingApproachEncoderTest extends
AbstractStringEncoderTest<MatchRati
assertFalse(getStringEncoder().isEncodeEquals("test", "t"));
}
+ @Test
+ final void
testIsEncodeEquals_CornerCase_NameEmptyAfterCleaning_ReturnsFalse() {
+ // Names that become empty after cleanName(String), consistent with
encode(String) returning "".
+ assertFalse(getStringEncoder().isEncodeEquals("--", "Smith"));
+ assertFalse(getStringEncoder().isEncodeEquals("Smith", "--"));
+ assertFalse(getStringEncoder().isEncodeEquals(".,-", "Smith"));
+ assertFalse(getStringEncoder().isEncodeEquals(" ", "Smith"));
+ assertFalse(getStringEncoder().isEncodeEquals("Smith", " "));
+ assertFalse(getStringEncoder().isEncodeEquals("--", ".,"));
+ }
+
@Test
final void testIsVowel_CapitalA_ReturnsTrue() {
assertTrue(getStringEncoder().isVowel("A"));