Skip to content

Commit ade82e4

Browse files
authored
Remove and Add after matching Environment Variables (#1365)
1 parent 0e1b533 commit ade82e4

File tree

2 files changed

+32
-4
lines changed

2 files changed

+32
-4
lines changed

implementation/src/main/java/io/smallrye/config/EnvConfigSource.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -179,8 +179,8 @@ private boolean matchEnvWithProperty(final String prefix, final String property,
179179
if (prefixDashes[0] == 0 && nameDashes[0] == 0) {
180180
// Properties are equals, but may contain Map key uppercases, so replace
181181
if (EnvName.equals(activeEnvName, property)) {
182-
envVars.getNames().add(property);
183182
envVars.getNames().remove(envName);
183+
envVars.getNames().add(property);
184184
}
185185
return false;
186186
}
@@ -200,14 +200,14 @@ private boolean matchEnvWithProperty(final String prefix, final String property,
200200

201201
// Properties are equals, but may contain Map key uppercases, so replace
202202
if (EnvName.equals(property, dashedEnvName)) {
203-
envVars.getNames().add(property);
204203
envVars.getNames().remove(envName);
204+
envVars.getNames().add(property);
205205
return true;
206206
}
207207

208208
if (!activeEnvName.contentEquals(sb)) {
209-
envVars.getNames().add(dashedEnvName);
210209
envVars.getNames().remove(envName);
210+
envVars.getNames().add(dashedEnvName);
211211
return true;
212212
}
213213
return false;

implementation/src/test/java/io/smallrye/config/EnvConfigSourceTest.java

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import static org.junit.jupiter.api.Assertions.assertTrue;
3232

3333
import java.util.ArrayList;
34+
import java.util.Collections;
3435
import java.util.HashMap;
3536
import java.util.Iterator;
3637
import java.util.List;
@@ -43,6 +44,7 @@
4344
import org.eclipse.microprofile.config.spi.ConfigSource;
4445
import org.junit.jupiter.api.Test;
4546

47+
import io.smallrye.config.ConfigSourceFactory.ConfigurableConfigSourceFactory;
4648
import io.smallrye.config.EnvConfigSource.EnvName;
4749

4850
/**
@@ -520,7 +522,7 @@ interface Nested {
520522

521523
@Test
522524
void mappingFactory() {
523-
ConfigSourceFactory.ConfigurableConfigSourceFactory<MappingFactory> sourceFactory = new ConfigSourceFactory.ConfigurableConfigSourceFactory<>() {
525+
ConfigurableConfigSourceFactory<MappingFactory> sourceFactory = new ConfigurableConfigSourceFactory<>() {
524526
@Override
525527
public Iterable<ConfigSource> getConfigSources(final ConfigSourceContext context, final MappingFactory mapping) {
526528
assertEquals("value", mapping.aValue());
@@ -801,6 +803,32 @@ interface Nested {
801803
}
802804
}
803805

806+
@Test
807+
void matchEnvVarWithFactory() {
808+
SmallRyeConfig config = new SmallRyeConfigBuilder()
809+
.withSources(new MatchEnvVarConfigSourceFactory())
810+
.withSources(new EnvConfigSource(Map.of(
811+
"MAP_KEY", "value"), 300))
812+
.withMapping(MatchEnvVarWithFactory.class)
813+
.build();
814+
815+
MatchEnvVarWithFactory mapping = config.getConfigMapping(MatchEnvVarWithFactory.class);
816+
817+
assertEquals("value", mapping.map().get("key"));
818+
}
819+
820+
@ConfigMapping(prefix = "")
821+
interface MatchEnvVarWithFactory {
822+
Map<String, String> map();
823+
}
824+
825+
static class MatchEnvVarConfigSourceFactory implements ConfigurableConfigSourceFactory<MatchEnvVarWithFactory> {
826+
@Override
827+
public Iterable<ConfigSource> getConfigSources(final ConfigSourceContext context, final MatchEnvVarWithFactory config) {
828+
return Collections.emptyList();
829+
}
830+
}
831+
804832
private static boolean envSourceEquals(String name, String lookup) {
805833
return BOOLEAN_CONVERTER.convert(new EnvConfigSource(Map.of(name, "true"), 100).getValue(lookup));
806834
}

0 commit comments

Comments
 (0)