Polishing
Issue: SPR-11637
This commit is contained in:
@@ -305,8 +305,7 @@ class ConfigurationClassParser {
|
|||||||
String name = propertySource.getString("name");
|
String name = propertySource.getString("name");
|
||||||
String[] locations = propertySource.getStringArray("value");
|
String[] locations = propertySource.getStringArray("value");
|
||||||
boolean ignoreResourceNotFound = propertySource.getBoolean("ignoreResourceNotFound");
|
boolean ignoreResourceNotFound = propertySource.getBoolean("ignoreResourceNotFound");
|
||||||
int locationCount = locations.length;
|
if (locations.length == 0) {
|
||||||
if (locationCount == 0) {
|
|
||||||
throw new IllegalArgumentException("At least one @PropertySource(value) location is required");
|
throw new IllegalArgumentException("At least one @PropertySource(value) location is required");
|
||||||
}
|
}
|
||||||
for (String location : locations) {
|
for (String location : locations) {
|
||||||
@@ -314,8 +313,7 @@ class ConfigurationClassParser {
|
|||||||
Resource resource = this.resourceLoader.getResource(
|
Resource resource = this.resourceLoader.getResource(
|
||||||
this.environment.resolveRequiredPlaceholders(location));
|
this.environment.resolveRequiredPlaceholders(location));
|
||||||
if (!StringUtils.hasText(name) || this.propertySources.containsKey(name)) {
|
if (!StringUtils.hasText(name) || this.propertySources.containsKey(name)) {
|
||||||
// We need to ensure unique names when the property source will
|
// We need to ensure unique names when the property source will ultimately end up in a composite
|
||||||
// ultimately end up in a composite
|
|
||||||
ResourcePropertySource ps = new ResourcePropertySource(resource);
|
ResourcePropertySource ps = new ResourcePropertySource(resource);
|
||||||
this.propertySources.add((StringUtils.hasText(name) ? name : ps.getName()), ps);
|
this.propertySources.add((StringUtils.hasText(name) ? name : ps.getName()), ps);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2002-2013 the original author or authors.
|
* Copyright 2002-2014 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -307,7 +307,7 @@ public class ConfigurationClassPostProcessor implements BeanDefinitionRegistryPo
|
|||||||
"Reason: Environment must implement ConfigurableEnvironment");
|
"Reason: Environment must implement ConfigurableEnvironment");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
MutablePropertySources envPropertySources = ((ConfigurableEnvironment)this.environment).getPropertySources();
|
MutablePropertySources envPropertySources = ((ConfigurableEnvironment) this.environment).getPropertySources();
|
||||||
for (PropertySource<?> propertySource : parsedPropertySources) {
|
for (PropertySource<?> propertySource : parsedPropertySources) {
|
||||||
envPropertySources.addLast(propertySource);
|
envPropertySources.addLast(propertySource);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -124,18 +124,6 @@ public class PropertySourceAnnotationTests {
|
|||||||
System.clearProperty("path.to.properties");
|
System.clearProperty("path.to.properties");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Corner bug reported in SPR-9127.
|
|
||||||
*/
|
|
||||||
@Test
|
|
||||||
public void withNameAndMultipleResourceLocations() {
|
|
||||||
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
|
|
||||||
ctx.register(ConfigWithNameAndMultipleResourceLocations.class);
|
|
||||||
ctx.refresh();
|
|
||||||
assertThat(ctx.getEnvironment().containsProperty("from.p1"), is(true));
|
|
||||||
assertThat(ctx.getEnvironment().containsProperty("from.p2"), is(true));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SPR-10820
|
* SPR-10820
|
||||||
*/
|
*/
|
||||||
@@ -155,6 +143,24 @@ public class PropertySourceAnnotationTests {
|
|||||||
ctx.refresh();
|
ctx.refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void withNameAndMultipleResourceLocations() {
|
||||||
|
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(ConfigWithNameAndMultipleResourceLocations.class);
|
||||||
|
assertThat(ctx.getEnvironment().containsProperty("from.p1"), is(true));
|
||||||
|
assertThat(ctx.getEnvironment().containsProperty("from.p2"), is(true));
|
||||||
|
// p2 should 'win' as it was registered last
|
||||||
|
assertThat(ctx.getEnvironment().getProperty("testbean.name"), equalTo("p2TestBean"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void withMultipleResourceLocations() {
|
||||||
|
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(ConfigWithMultipleResourceLocations.class);
|
||||||
|
assertThat(ctx.getEnvironment().containsProperty("from.p1"), is(true));
|
||||||
|
assertThat(ctx.getEnvironment().containsProperty("from.p2"), is(true));
|
||||||
|
// p2 should 'win' as it was registered last
|
||||||
|
assertThat(ctx.getEnvironment().getProperty("testbean.name"), equalTo("p2TestBean"));
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void withPropertySources() {
|
public void withPropertySources() {
|
||||||
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(ConfigWithPropertySources.class);
|
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(ConfigWithPropertySources.class);
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2002-2012 the original author or authors.
|
* Copyright 2002-2014 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -29,12 +29,11 @@ import java.util.Set;
|
|||||||
*/
|
*/
|
||||||
public class CompositePropertySource extends PropertySource<Object> {
|
public class CompositePropertySource extends PropertySource<Object> {
|
||||||
|
|
||||||
private Set<PropertySource<?>> propertySources = new LinkedHashSet<PropertySource<?>>();
|
private final Set<PropertySource<?>> propertySources = new LinkedHashSet<PropertySource<?>>();
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new {@code CompositePropertySource}.
|
* Create a new {@code CompositePropertySource}.
|
||||||
*
|
|
||||||
* @param name the name of the property source
|
* @param name the name of the property source
|
||||||
*/
|
*/
|
||||||
public CompositePropertySource(String name) {
|
public CompositePropertySource(String name) {
|
||||||
@@ -60,6 +59,7 @@ public class CompositePropertySource extends PropertySource<Object> {
|
|||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return String.format("%s [name='%s', propertySources=%s]",
|
return String.format("%s [name='%s', propertySources=%s]",
|
||||||
this.getClass().getSimpleName(), this.name, this.propertySources);
|
getClass().getSimpleName(), this.name, this.propertySources);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user