From 8e8580a6c2262c5e2d8f8e69661f78e95908cd9a Mon Sep 17 00:00:00 2001 From: Roberto Cortez Date: Thu, 1 Sep 2022 12:57:28 +0100 Subject: [PATCH] Do not override defaults namespace in the DefaultValuesConfigSource --- .../config/DefaultValuesConfigSource.java | 6 +--- .../config/ConfigMappingInterfaceTest.java | 28 +++++++++++++++++++ 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/implementation/src/main/java/io/smallrye/config/DefaultValuesConfigSource.java b/implementation/src/main/java/io/smallrye/config/DefaultValuesConfigSource.java index 8cf6df0a9..91e84fec4 100644 --- a/implementation/src/main/java/io/smallrye/config/DefaultValuesConfigSource.java +++ b/implementation/src/main/java/io/smallrye/config/DefaultValuesConfigSource.java @@ -1,7 +1,5 @@ package io.smallrye.config; -import java.util.Map; - public class DefaultValuesConfigSource extends KeyMapBackedConfigSource { private static final long serialVersionUID = -6386021034957868328L; @@ -10,8 +8,6 @@ public DefaultValuesConfigSource(final KeyMap properties) { } void registerDefaults(final KeyMap properties) { - for (Map.Entry> entry : properties.entrySet()) { - getKeyMapProperties().put(entry.getKey(), entry.getValue()); - } + getKeyMapProperties().putAll(properties); } } diff --git a/implementation/src/test/java/io/smallrye/config/ConfigMappingInterfaceTest.java b/implementation/src/test/java/io/smallrye/config/ConfigMappingInterfaceTest.java index 9488e5c98..cd2254564 100644 --- a/implementation/src/test/java/io/smallrye/config/ConfigMappingInterfaceTest.java +++ b/implementation/src/test/java/io/smallrye/config/ConfigMappingInterfaceTest.java @@ -1553,4 +1553,32 @@ void optionalExpressions() { assertFalse(mapping.expression().isPresent()); assertFalse(mapping.expressionInt().isPresent()); } + + @Test + void defaultsBuilderAndMapping() { + SmallRyeConfig config = new SmallRyeConfigBuilder() + .addDefaultInterceptors() + .withMapping(DefaultsBuilderAndMapping.class) + .withDefaultValue("server.host", "localhost") + .build(); + + DefaultsBuilderAndMapping mapping = config.getConfigMapping(DefaultsBuilderAndMapping.class); + + assertEquals("localhost", config.getRawValue("server.host")); + assertEquals(443, mapping.ssl().port()); + assertEquals(2, mapping.ssl().protocols().size()); + } + + @ConfigMapping(prefix = "server") + interface DefaultsBuilderAndMapping { + Ssl ssl(); + + interface Ssl { + @WithDefault("443") + int port(); + + @WithDefault("TLSv1.3,TLSv1.2") + List protocols(); + } + } }