diff --git a/config/config-mp/src/main/java/io/helidon/config/mp/SeConfig.java b/config/config-mp/src/main/java/io/helidon/config/mp/SeConfig.java index d512bb8a9bb..3586a82399c 100644 --- a/config/config-mp/src/main/java/io/helidon/config/mp/SeConfig.java +++ b/config/config-mp/src/main/java/io/helidon/config/mp/SeConfig.java @@ -260,8 +260,12 @@ public ConfigValue> asMap() throws MissingValueException { continue; } if (propertyName.startsWith(stringKey + ".")) { - String noPrefix = propertyName.substring(stringPrefix.length()); - + String noPrefix; + if (stringPrefix.isEmpty()) { + noPrefix = propertyName; + } else { + noPrefix = propertyName.substring(stringPrefix.length() + 1); + } children.put(noPrefix, delegate.getValue(propertyName, String.class)); } } diff --git a/config/config-mp/src/test/java/io/helidon/config/mp/MpConfigTest.java b/config/config-mp/src/test/java/io/helidon/config/mp/MpConfigTest.java index d00e6d3c5e1..fd3917b7cde 100644 --- a/config/config-mp/src/test/java/io/helidon/config/mp/MpConfigTest.java +++ b/config/config-mp/src/test/java/io/helidon/config/mp/MpConfigTest.java @@ -188,8 +188,14 @@ public void testSeConfigAsMap() { "client.headers.0.name", "foo" ))) .build(); - Map map = MpConfig.toHelidonConfig(mpConfig).get("client").asMap().orElse(Map.of()); + io.helidon.config.Config seConfig = MpConfig.toHelidonConfig(mpConfig); + Map map; + + map = seConfig.get("client").asMap().orElse(Map.of()); assertThat(map.get("client.headers.0.name"), is("foo")); + + map = seConfig.get("client").detach().asMap().orElse(Map.of()); + assertThat(map.get("headers.0.name"), is("foo")); } // Github issue #2206