Skip to content

Commit a29253f

Browse files
author
David Syer
committed
RESOLVED - issue SPR-4661: Improve context-property-placeholder configurability
Added new features to property override and placeholders (order, locations, system-properties-mode, ignore-*)
1 parent c63cdb2 commit a29253f

13 files changed

+337
-92
lines changed

org.springframework.context/src/main/java/org/springframework/context/config/AbstractPropertyLoadingBeanDefinitionParser.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
*
2929
* @author Juergen Hoeller
3030
* @author Arjen Poutsma
31+
* @author Dave Syer
3132
* @since 2.5.2
3233
*/
3334
abstract class AbstractPropertyLoadingBeanDefinitionParser extends AbstractSingleBeanDefinitionParser {
@@ -44,10 +45,28 @@ protected void doParse(Element element, BeanDefinitionBuilder builder) {
4445
String[] locations = StringUtils.commaDelimitedListToStringArray(location);
4546
builder.addPropertyValue("locations", locations);
4647
}
48+
4749
String propertiesRef = element.getAttribute("properties-ref");
4850
if (StringUtils.hasLength(propertiesRef)) {
4951
builder.addPropertyReference("properties", propertiesRef);
5052
}
53+
54+
String fileEncoding = element.getAttribute("file-encoding");
55+
if (StringUtils.hasLength(fileEncoding)) {
56+
builder.addPropertyReference("fileEncoding", fileEncoding);
57+
}
58+
59+
String order = element.getAttribute("order");
60+
if (StringUtils.hasLength(order)) {
61+
builder.addPropertyValue("order", Integer.valueOf(order));
62+
}
63+
64+
builder.addPropertyValue("ignoreResourceNotFound",
65+
Boolean.valueOf(element.getAttribute("ignore-resource-not-found")));
66+
67+
builder.addPropertyValue("localOverride",
68+
Boolean.valueOf(element.getAttribute("local-override")));
69+
5170
builder.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
5271
}
5372

org.springframework.context/src/main/java/org/springframework/context/config/PropertyOverrideBeanDefinitionParser.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,13 @@
1919
import org.w3c.dom.Element;
2020

2121
import org.springframework.beans.factory.config.PropertyOverrideConfigurer;
22+
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
2223

2324
/**
2425
* Parser for the <context:property-override/> element.
2526
*
2627
* @author Juergen Hoeller
28+
* @author Dave Syer
2729
* @since 2.5.2
2830
*/
2931
class PropertyOverrideBeanDefinitionParser extends AbstractPropertyLoadingBeanDefinitionParser {
@@ -32,5 +34,14 @@ class PropertyOverrideBeanDefinitionParser extends AbstractPropertyLoadingBeanDe
3234
protected Class getBeanClass(Element element) {
3335
return PropertyOverrideConfigurer.class;
3436
}
37+
38+
@Override
39+
protected void doParse(Element element, BeanDefinitionBuilder builder) {
40+
41+
super.doParse(element, builder);
42+
builder.addPropertyValue("ignoreInvalidKeys",
43+
Boolean.valueOf(element.getAttribute("ignore-unresolvable")));
44+
45+
}
3546

3647
}

org.springframework.context/src/main/java/org/springframework/context/config/PropertyPlaceholderBeanDefinitionParser.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,14 @@
1919
import org.w3c.dom.Element;
2020

2121
import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
22+
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
23+
import org.springframework.util.StringUtils;
2224

2325
/**
2426
* Parser for the <context:property-placeholder/> element.
2527
*
2628
* @author Juergen Hoeller
29+
* @author Dave Syer
2730
* @since 2.5
2831
*/
2932
class PropertyPlaceholderBeanDefinitionParser extends AbstractPropertyLoadingBeanDefinitionParser {
@@ -32,5 +35,20 @@ class PropertyPlaceholderBeanDefinitionParser extends AbstractPropertyLoadingBea
3235
protected Class getBeanClass(Element element) {
3336
return PropertyPlaceholderConfigurer.class;
3437
}
38+
39+
@Override
40+
protected void doParse(Element element, BeanDefinitionBuilder builder) {
41+
42+
super.doParse(element, builder);
43+
44+
builder.addPropertyValue("ignoreUnresolvablePlaceholders",
45+
Boolean.valueOf(element.getAttribute("ignore-unresolvable")));
46+
47+
String systemPropertiesModeName = element.getAttribute("system-properties-mode");
48+
if (StringUtils.hasLength(systemPropertiesModeName)) {
49+
builder.addPropertyValue("systemPropertiesModeName", "SYSTEM_PROPERTIES_MODE_"+systemPropertiesModeName);
50+
}
51+
52+
}
3553

3654
}

0 commit comments

Comments
 (0)