From 9d14e4415a343ea7ab7b02be0c9639d008c4f03b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=96mer=20Said=20=C3=87engel?= Date: Sun, 1 Feb 2026 16:59:56 +0300 Subject: [PATCH] Replace String concatenation with StringBuilder in InternalPrefixedConfig --- .../internal/util/InternalPrefixedConfig.java | 13 ++++++------- .../util/InternalPrefixedConfigTest.java | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/eureka-client-archaius2/src/main/java/com/netflix/discovery/internal/util/InternalPrefixedConfig.java b/eureka-client-archaius2/src/main/java/com/netflix/discovery/internal/util/InternalPrefixedConfig.java index b74eaeb538..93986ef8b8 100644 --- a/eureka-client-archaius2/src/main/java/com/netflix/discovery/internal/util/InternalPrefixedConfig.java +++ b/eureka-client-archaius2/src/main/java/com/netflix/discovery/internal/util/InternalPrefixedConfig.java @@ -1,6 +1,7 @@ package com.netflix.discovery.internal.util; import com.netflix.archaius.api.Config; +import org.apache.commons.lang.StringUtils; import java.util.Iterator; @@ -16,16 +17,14 @@ public final class InternalPrefixedConfig { public InternalPrefixedConfig(Config config, String... namespaces) { this.config = config; - String tempNamespace = ""; + StringBuilder builder = new StringBuilder(); for (String namespace : namespaces) { - if (namespace != null && !namespace.isEmpty()) { - tempNamespace += namespace.endsWith(".") - ? namespace - : namespace + "."; - } + if (StringUtils.isEmpty(namespace)) continue; + builder.append(namespace); + if (!namespace.endsWith(".")) builder.append('.'); } - this.namespace = tempNamespace; + this.namespace = builder.toString(); } public String getNamespace() { diff --git a/eureka-client-archaius2/src/test/java/com/netflix/discovery/internal/util/InternalPrefixedConfigTest.java b/eureka-client-archaius2/src/test/java/com/netflix/discovery/internal/util/InternalPrefixedConfigTest.java index 6e5b909e82..bbd660d3f5 100644 --- a/eureka-client-archaius2/src/test/java/com/netflix/discovery/internal/util/InternalPrefixedConfigTest.java +++ b/eureka-client-archaius2/src/test/java/com/netflix/discovery/internal/util/InternalPrefixedConfigTest.java @@ -23,4 +23,22 @@ public void testPrefixes() { config = new InternalPrefixedConfig(configInstance, "foo", "bar"); Assert.assertEquals("foo.bar.", config.getNamespace()); } + + @Test + public void testEmptyAndNullPrefixesAreIgnored() { + Config configInstance = Mockito.mock(Config.class); + + InternalPrefixedConfig config = new InternalPrefixedConfig(configInstance, null, "", "foo"); + + Assert.assertEquals("foo.", config.getNamespace()); + } + + @Test + public void testPrefixEndingWithDotIsNotDuplicated() { + Config configInstance = Mockito.mock(Config.class); + + InternalPrefixedConfig config = new InternalPrefixedConfig(configInstance, "foo.", "bar"); + + Assert.assertEquals("foo.bar.", config.getNamespace()); + } }