ConfigDataEnvironmentPostProcessorImportCombinedWithProfileSpecificIntegrationTests Class — spring-boot Architecture
Architecture documentation for the ConfigDataEnvironmentPostProcessorImportCombinedWithProfileSpecificIntegrationTests class in ConfigDataEnvironmentPostProcessorImportCombinedWithProfileSpecificIntegrationTests.java from the spring-boot codebase.
Entity Profile
Relationship Graph
Source Code
core/spring-boot/src/test/java/org/springframework/boot/context/config/ConfigDataEnvironmentPostProcessorImportCombinedWithProfileSpecificIntegrationTests.java lines 49–142
@WithResource(name = "application.properties", content = """
spring.config.import=icwps:
prop=fromfile
""")
@WithResource(name = "application-prod.properties", content = "prop=fromprofilefile")
@WithResource(name = "META-INF/spring.factories",
content = """
org.springframework.boot.context.config.ConfigDataLoader=\
org.springframework.boot.context.config.ConfigDataEnvironmentPostProcessorImportCombinedWithProfileSpecificIntegrationTests.Loader
org.springframework.boot.context.config.ConfigDataLocationResolver=\
org.springframework.boot.context.config.ConfigDataEnvironmentPostProcessorImportCombinedWithProfileSpecificIntegrationTests.LocationResolver
""")
class ConfigDataEnvironmentPostProcessorImportCombinedWithProfileSpecificIntegrationTests {
private SpringApplication application;
@TempDir
@SuppressWarnings("NullAway.Init")
public File temp;
@BeforeEach
void setup() {
this.application = new SpringApplication(Config.class);
this.application.setWebApplicationType(WebApplicationType.NONE);
}
@Test
void testWithoutProfile() {
ConfigurableApplicationContext context = this.application.run();
String value = context.getEnvironment().getProperty("prop");
assertThat(value).isEqualTo("fromicwps1");
}
@Test
void testWithProfile() {
ConfigurableApplicationContext context = this.application.run("--spring.profiles.active=prod");
String value = context.getEnvironment().getProperty("prop");
assertThat(value).isEqualTo("fromicwps2");
}
static class LocationResolver implements ConfigDataLocationResolver<Resource> {
@Override
public boolean isResolvable(ConfigDataLocationResolverContext context, ConfigDataLocation location) {
return location.hasPrefix("icwps:");
}
@Override
public List<Resource> resolve(ConfigDataLocationResolverContext context, ConfigDataLocation location) {
return Collections.emptyList();
}
@Override
public List<Resource> resolveProfileSpecific(ConfigDataLocationResolverContext context,
ConfigDataLocation location, Profiles profiles) {
return Collections.singletonList(new Resource(profiles));
}
}
static class Loader implements ConfigDataLoader<Resource> {
@Override
public ConfigData load(ConfigDataLoaderContext context, Resource resource) throws IOException {
List<PropertySource<?>> propertySources = new ArrayList<>();
Map<PropertySource<?>, Options> propertySourceOptions = new HashMap<>();
propertySources.add(new MapPropertySource("icwps1", Collections.singletonMap("prop", "fromicwps1")));
if (resource.profiles.isAccepted("prod")) {
MapPropertySource profileSpecificPropertySource = new MapPropertySource("icwps2",
Collections.singletonMap("prop", "fromicwps2"));
propertySources.add(profileSpecificPropertySource);
propertySourceOptions.put(profileSpecificPropertySource, Options.of(Option.PROFILE_SPECIFIC));
}
return new ConfigData(propertySources, propertySourceOptions::get);
}
}
private static class Resource extends ConfigDataResource {
private final Profiles profiles;
Resource(Profiles profiles) {
this.profiles = profiles;
}
@Override
public String toString() {
return "icwps:";
}
}
}
Domain
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free