This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-text.git
The following commit(s) were added to refs/heads/master by this push: new a713ac59 StringLookupFactory.DefaultStringLookupsHolder.createDefaultStringLookups() maps DefaultStringLookup.LOCAL_HOST twice instead of once for LOCAL_HOST and LOOPBACK_ADDRESS a713ac59 is described below commit a713ac59c096e4233886c2b1e9a90fc2e06ef9ce Author: Gary Gregory <garydgreg...@gmail.com> AuthorDate: Tue Mar 4 15:38:38 2025 -0500 StringLookupFactory.DefaultStringLookupsHolder.createDefaultStringLookups() maps DefaultStringLookup.LOCAL_HOST twice instead of once for LOCAL_HOST and LOOPBACK_ADDRESS --- src/changes/changes.xml | 1 + .../commons/text/lookup/StringLookupFactory.java | 4 +- .../text/lookup/StringLookupFactoryTest.java | 83 +++++++++++++++------- 3 files changed, 60 insertions(+), 28 deletions(-) diff --git a/src/changes/changes.xml b/src/changes/changes.xml index f63863b7..a655bc77 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -49,6 +49,7 @@ The <action> type attribute can be add,update,fix,remove. <!-- FIX --> <action type="fix" dev="ggregory" due-to="Gary Gregory">Remove -nouses directive from maven-bundle-plugin. OSGi package imports now state 'uses' definitions for package imports, this doesn't affect JPMS (from org.apache.commons:commons-parent:80).</action> <action type="fix" dev="ggregory" due-to="Gary Gregory">Deprecate EntityArrays.EntityArrays().</action> + <action type="fix" dev="ggregory" due-to="Gary Gregory">StringLookupFactory.DefaultStringLookupsHolder.createDefaultStringLookups() maps DefaultStringLookup.LOCAL_HOST twice instead of once for LOCAL_HOST and LOOPBACK_ADDRESS.</action> <!-- ADD --> <!-- UPDATE --> <action type="update" dev="ggregory" due-to="Gary Gregory">Bump org.apache.commons:commons-parent from 79 to 81.</action> diff --git a/src/main/java/org/apache/commons/text/lookup/StringLookupFactory.java b/src/main/java/org/apache/commons/text/lookup/StringLookupFactory.java index 3bf59559..4916e8d8 100644 --- a/src/main/java/org/apache/commons/text/lookup/StringLookupFactory.java +++ b/src/main/java/org/apache/commons/text/lookup/StringLookupFactory.java @@ -295,7 +295,6 @@ public final class StringLookupFactory { */ private static Map<String, StringLookup> createDefaultStringLookups() { final Map<String, StringLookup> lookupMap = new HashMap<>(); - addLookup(DefaultStringLookup.BASE64_DECODER, lookupMap); addLookup(DefaultStringLookup.BASE64_ENCODER, lookupMap); addLookup(DefaultStringLookup.CONST, lookupMap); @@ -304,7 +303,7 @@ public final class StringLookupFactory { addLookup(DefaultStringLookup.FILE, lookupMap); addLookup(DefaultStringLookup.JAVA, lookupMap); addLookup(DefaultStringLookup.LOCAL_HOST, lookupMap); - addLookup(DefaultStringLookup.LOCAL_HOST, lookupMap); + addLookup(DefaultStringLookup.LOOPBACK_ADDRESS, lookupMap); addLookup(DefaultStringLookup.PROPERTIES, lookupMap); addLookup(DefaultStringLookup.RESOURCE_BUNDLE, lookupMap); addLookup(DefaultStringLookup.SYSTEM_PROPERTIES, lookupMap); @@ -313,7 +312,6 @@ public final class StringLookupFactory { addLookup(DefaultStringLookup.XML, lookupMap); addLookup(DefaultStringLookup.XML_DECODER, lookupMap); addLookup(DefaultStringLookup.XML_ENCODER, lookupMap); - return lookupMap; } diff --git a/src/test/java/org/apache/commons/text/lookup/StringLookupFactoryTest.java b/src/test/java/org/apache/commons/text/lookup/StringLookupFactoryTest.java index b32b01ad..34bf7aa5 100644 --- a/src/test/java/org/apache/commons/text/lookup/StringLookupFactoryTest.java +++ b/src/test/java/org/apache/commons/text/lookup/StringLookupFactoryTest.java @@ -16,15 +16,21 @@ */ package org.apache.commons.text.lookup; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertSame; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + import java.util.HashMap; import java.util.HashSet; +import java.util.Locale; import java.util.Map; import java.util.Properties; import java.util.Set; import javax.xml.XMLConstants; -import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; /** @@ -60,12 +66,12 @@ public class StringLookupFactoryTest { for (final String key : keys) { final String normalizedKey = StringLookupFactory.toKey(key); - Assertions.assertNotNull(normalizedKey, () -> "Expected map to contain string lookup for key " + key); + assertNotNull(normalizedKey, () -> "Expected map to contain string lookup for key " + key); remainingKeys.remove(normalizedKey); } - Assertions.assertTrue(remainingKeys.isEmpty(), () -> "Unexpected keys in lookup map: " + remainingKeys); + assertTrue(remainingKeys.isEmpty(), () -> "Unexpected keys in lookup map: " + remainingKeys); } private static void checkDefaultStringLookupsHolder(final Properties props, final String... keys) { @@ -157,9 +163,9 @@ public class StringLookupFactoryTest { final Properties props = new Properties(); props.setProperty(StringLookupFactory.DEFAULT_STRING_LOOKUPS_PROPERTY, "base64_encoder nope"); - final Exception exc = Assertions.assertThrows(IllegalArgumentException.class, + final Exception exc = assertThrows(IllegalArgumentException.class, () -> new StringLookupFactory.DefaultStringLookupsHolder(props)); - Assertions.assertEquals("Invalid default string lookups definition: base64_encoder nope", exc.getMessage()); + assertEquals("Invalid default string lookups definition: base64_encoder nope", exc.getMessage()); } @Test @@ -215,30 +221,57 @@ public class StringLookupFactoryTest { @Test public void testSingletons() { final StringLookupFactory stringLookupFactory = StringLookupFactory.INSTANCE; - Assertions.assertSame(StringLookupFactory.INSTANCE_BASE64_DECODER, + assertSame(StringLookupFactory.INSTANCE_BASE64_DECODER, stringLookupFactory.base64DecoderStringLookup()); - Assertions.assertSame(StringLookupFactory.INSTANCE_BASE64_ENCODER, + assertSame(StringLookupFactory.INSTANCE_BASE64_ENCODER, stringLookupFactory.base64EncoderStringLookup()); - Assertions.assertSame(ConstantStringLookup.INSTANCE, stringLookupFactory.constantStringLookup()); - Assertions.assertSame(DateStringLookup.INSTANCE, stringLookupFactory.dateStringLookup()); - Assertions.assertSame(DnsStringLookup.INSTANCE, stringLookupFactory.dnsStringLookup()); - Assertions.assertSame(StringLookupFactory.INSTANCE_ENVIRONMENT_VARIABLES, + assertSame(ConstantStringLookup.INSTANCE, stringLookupFactory.constantStringLookup()); + assertSame(DateStringLookup.INSTANCE, stringLookupFactory.dateStringLookup()); + assertSame(DnsStringLookup.INSTANCE, stringLookupFactory.dnsStringLookup()); + assertSame(StringLookupFactory.INSTANCE_ENVIRONMENT_VARIABLES, stringLookupFactory.environmentVariableStringLookup()); - Assertions.assertSame(InterpolatorStringLookup.INSTANCE, stringLookupFactory.interpolatorStringLookup()); - Assertions.assertSame(JavaPlatformStringLookup.INSTANCE, stringLookupFactory.javaPlatformStringLookup()); - Assertions.assertSame(InetAddressStringLookup.LOCAL_HOST, stringLookupFactory.localHostStringLookup()); - Assertions.assertSame(InetAddressStringLookup.LOOPACK_ADDRESS, stringLookupFactory.loopbackAddressStringLookup()); - Assertions.assertSame(StringLookupFactory.INSTANCE_NULL, stringLookupFactory.nullStringLookup()); - Assertions.assertSame(ResourceBundleStringLookup.INSTANCE, stringLookupFactory.resourceBundleStringLookup()); - Assertions.assertSame(ScriptStringLookup.INSTANCE, stringLookupFactory.scriptStringLookup()); - Assertions.assertSame(StringLookupFactory.INSTANCE_SYSTEM_PROPERTIES, + assertSame(InterpolatorStringLookup.INSTANCE, stringLookupFactory.interpolatorStringLookup()); + assertSame(JavaPlatformStringLookup.INSTANCE, stringLookupFactory.javaPlatformStringLookup()); + assertSame(InetAddressStringLookup.LOCAL_HOST, stringLookupFactory.localHostStringLookup()); + assertSame(InetAddressStringLookup.LOOPACK_ADDRESS, stringLookupFactory.loopbackAddressStringLookup()); + assertSame(StringLookupFactory.INSTANCE_NULL, stringLookupFactory.nullStringLookup()); + assertSame(ResourceBundleStringLookup.INSTANCE, stringLookupFactory.resourceBundleStringLookup()); + assertSame(ScriptStringLookup.INSTANCE, stringLookupFactory.scriptStringLookup()); + assertSame(StringLookupFactory.INSTANCE_SYSTEM_PROPERTIES, stringLookupFactory.systemPropertyStringLookup()); - Assertions.assertSame(UrlDecoderStringLookup.INSTANCE, stringLookupFactory.urlDecoderStringLookup()); - Assertions.assertSame(UrlEncoderStringLookup.INSTANCE, stringLookupFactory.urlEncoderStringLookup()); - Assertions.assertSame(UrlStringLookup.INSTANCE, stringLookupFactory.urlStringLookup()); - Assertions.assertSame(XmlStringLookup.INSTANCE, stringLookupFactory.xmlStringLookup()); - Assertions.assertSame(XmlDecoderStringLookup.INSTANCE, stringLookupFactory.xmlDecoderStringLookup()); - Assertions.assertSame(XmlEncoderStringLookup.INSTANCE, stringLookupFactory.xmlEncoderStringLookup()); + assertSame(UrlDecoderStringLookup.INSTANCE, stringLookupFactory.urlDecoderStringLookup()); + assertSame(UrlEncoderStringLookup.INSTANCE, stringLookupFactory.urlEncoderStringLookup()); + assertSame(UrlStringLookup.INSTANCE, stringLookupFactory.urlStringLookup()); + assertSame(XmlStringLookup.INSTANCE, stringLookupFactory.xmlStringLookup()); + assertSame(XmlDecoderStringLookup.INSTANCE, stringLookupFactory.xmlDecoderStringLookup()); + assertSame(XmlEncoderStringLookup.INSTANCE, stringLookupFactory.xmlEncoderStringLookup()); + } + + /** + * Tests that we return the singleton. + */ + @Test + public void testDefault() { + final StringLookupFactory stringLookupFactory = StringLookupFactory.INSTANCE; + final Map<String, StringLookup> stringLookupMap = new HashMap<>(); + stringLookupFactory.addDefaultStringLookups(stringLookupMap); + assertTrue(stringLookupMap.containsKey("base64")); + assertTrue(stringLookupMap.containsKey(StringLookupFactory.KEY_BASE64_ENCODER.toLowerCase(Locale.ROOT))); + assertTrue(stringLookupMap.containsKey(StringLookupFactory.KEY_CONST.toLowerCase(Locale.ROOT))); + assertTrue(stringLookupMap.containsKey(StringLookupFactory.KEY_DATE)); + assertTrue(stringLookupMap.containsKey(StringLookupFactory.KEY_ENV.toLowerCase(Locale.ROOT))); + assertTrue(stringLookupMap.containsKey(StringLookupFactory.KEY_FILE.toLowerCase(Locale.ROOT))); + assertTrue(stringLookupMap.containsKey(StringLookupFactory.KEY_JAVA.toLowerCase(Locale.ROOT))); + assertTrue(stringLookupMap.containsKey(StringLookupFactory.KEY_LOCALHOST.toLowerCase(Locale.ROOT))); + assertTrue(stringLookupMap.containsKey(StringLookupFactory.KEY_LOOPBACK_ADDRESS.toLowerCase(Locale.ROOT))); + assertTrue(stringLookupMap.containsKey(StringLookupFactory.KEY_PROPERTIES.toLowerCase(Locale.ROOT))); + assertTrue(stringLookupMap.containsKey(StringLookupFactory.KEY_RESOURCE_BUNDLE.toLowerCase(Locale.ROOT))); + assertTrue(stringLookupMap.containsKey(StringLookupFactory.KEY_SYS.toLowerCase(Locale.ROOT))); + assertTrue(stringLookupMap.containsKey(StringLookupFactory.KEY_URL_DECODER.toLowerCase(Locale.ROOT))); + assertTrue(stringLookupMap.containsKey(StringLookupFactory.KEY_URL_ENCODER.toLowerCase(Locale.ROOT))); + assertTrue(stringLookupMap.containsKey(StringLookupFactory.KEY_XML.toLowerCase(Locale.ROOT))); + assertTrue(stringLookupMap.containsKey(StringLookupFactory.KEY_XML_DECODER.toLowerCase(Locale.ROOT))); + assertTrue(stringLookupMap.containsKey(StringLookupFactory.KEY_XML_ENCODER.toLowerCase(Locale.ROOT))); } @Test