@@ -33,7 +33,7 @@ public void testSimple() {
3333 Map <String , String > map = new LinkedHashMap <>();
3434 map .put ("foo1" , "bar1" );
3535 map .put ("foo2" , "bar2" );
36- PropertyPlaceholder .PlaceholderResolver placeholderResolver = new SimplePlaceholderResolver (map , false );
36+ PropertyPlaceholder .PlaceholderResolver placeholderResolver = new SimplePlaceholderResolver (map , false , true );
3737 assertEquals ("bar1" , propertyPlaceholder .replacePlaceholders ("{foo1}" , placeholderResolver ));
3838 assertEquals ("a bar1b" , propertyPlaceholder .replacePlaceholders ("a {foo1}b" , placeholderResolver ));
3939 assertEquals ("bar1bar2" , propertyPlaceholder .replacePlaceholders ("{foo1}{foo2}" , placeholderResolver ));
@@ -48,7 +48,7 @@ public void testVariousPrefixSuffix() {
4848 PropertyPlaceholder ppShorterPrefix = new PropertyPlaceholder ("{" , "}}" , false );
4949 Map <String , String > map = new LinkedHashMap <>();
5050 map .put ("foo" , "bar" );
51- PropertyPlaceholder .PlaceholderResolver placeholderResolver = new SimplePlaceholderResolver (map , false );
51+ PropertyPlaceholder .PlaceholderResolver placeholderResolver = new SimplePlaceholderResolver (map , false , true );
5252 assertEquals ("bar" , ppEqualsPrefix .replacePlaceholders ("{foo}" , placeholderResolver ));
5353 assertEquals ("bar" , ppLongerPrefix .replacePlaceholders ("${foo}" , placeholderResolver ));
5454 assertEquals ("bar" , ppShorterPrefix .replacePlaceholders ("{foo}}" , placeholderResolver ));
@@ -58,7 +58,7 @@ public void testVariousPrefixSuffix() {
5858 public void testDefaultValue () {
5959 PropertyPlaceholder propertyPlaceholder = new PropertyPlaceholder ("${" , "}" , false );
6060 Map <String , String > map = new LinkedHashMap <>();
61- PropertyPlaceholder .PlaceholderResolver placeholderResolver = new SimplePlaceholderResolver (map , false );
61+ PropertyPlaceholder .PlaceholderResolver placeholderResolver = new SimplePlaceholderResolver (map , false , true );
6262 assertEquals ("bar" , propertyPlaceholder .replacePlaceholders ("${foo:bar}" , placeholderResolver ));
6363 assertEquals ("" , propertyPlaceholder .replacePlaceholders ("${foo:}" , placeholderResolver ));
6464 }
@@ -67,23 +67,23 @@ public void testDefaultValue() {
6767 public void testIgnoredUnresolvedPlaceholder () {
6868 PropertyPlaceholder propertyPlaceholder = new PropertyPlaceholder ("${" , "}" , true );
6969 Map <String , String > map = new LinkedHashMap <>();
70- PropertyPlaceholder .PlaceholderResolver placeholderResolver = new SimplePlaceholderResolver (map , false );
70+ PropertyPlaceholder .PlaceholderResolver placeholderResolver = new SimplePlaceholderResolver (map , false , true );
7171 assertEquals ("${foo}" , propertyPlaceholder .replacePlaceholders ("${foo}" , placeholderResolver ));
7272 }
7373
7474 @ Test (expected = IllegalArgumentException .class )
7575 public void testNotIgnoredUnresolvedPlaceholder () {
7676 PropertyPlaceholder propertyPlaceholder = new PropertyPlaceholder ("${" , "}" , false );
7777 Map <String , String > map = new LinkedHashMap <>();
78- PropertyPlaceholder .PlaceholderResolver placeholderResolver = new SimplePlaceholderResolver (map , false );
78+ PropertyPlaceholder .PlaceholderResolver placeholderResolver = new SimplePlaceholderResolver (map , false , true );
7979 propertyPlaceholder .replacePlaceholders ("${foo}" , placeholderResolver );
8080 }
8181
8282 @ Test
8383 public void testShouldIgnoreMissing () {
8484 PropertyPlaceholder propertyPlaceholder = new PropertyPlaceholder ("${" , "}" , false );
8585 Map <String , String > map = new LinkedHashMap <>();
86- PropertyPlaceholder .PlaceholderResolver placeholderResolver = new SimplePlaceholderResolver (map , true );
86+ PropertyPlaceholder .PlaceholderResolver placeholderResolver = new SimplePlaceholderResolver (map , true , true );
8787 assertEquals ("bar" , propertyPlaceholder .replacePlaceholders ("bar${foo}" , placeholderResolver ));
8888 }
8989
@@ -94,7 +94,7 @@ public void testRecursive() {
9494 map .put ("foo" , "${foo1}" );
9595 map .put ("foo1" , "${foo2}" );
9696 map .put ("foo2" , "bar" );
97- PropertyPlaceholder .PlaceholderResolver placeholderResolver = new SimplePlaceholderResolver (map , false );
97+ PropertyPlaceholder .PlaceholderResolver placeholderResolver = new SimplePlaceholderResolver (map , false , true );
9898 assertEquals ("bar" , propertyPlaceholder .replacePlaceholders ("${foo}" , placeholderResolver ));
9999 assertEquals ("abarb" , propertyPlaceholder .replacePlaceholders ("a${foo}b" , placeholderResolver ));
100100 }
@@ -107,7 +107,7 @@ public void testNestedLongerPrefix() {
107107 map .put ("foo1" , "${foo2}" );
108108 map .put ("foo2" , "bar" );
109109 map .put ("barbar" , "baz" );
110- PropertyPlaceholder .PlaceholderResolver placeholderResolver = new SimplePlaceholderResolver (map , false );
110+ PropertyPlaceholder .PlaceholderResolver placeholderResolver = new SimplePlaceholderResolver (map , false , true );
111111 assertEquals ("baz" , propertyPlaceholder .replacePlaceholders ("${bar${foo}}" , placeholderResolver ));
112112 }
113113
@@ -119,7 +119,7 @@ public void testNestedSameLengthPrefixSuffix() {
119119 map .put ("foo1" , "{foo2}" );
120120 map .put ("foo2" , "bar" );
121121 map .put ("barbar" , "baz" );
122- PropertyPlaceholder .PlaceholderResolver placeholderResolver = new SimplePlaceholderResolver (map , false );
122+ PropertyPlaceholder .PlaceholderResolver placeholderResolver = new SimplePlaceholderResolver (map , false , true );
123123 assertEquals ("baz" , propertyPlaceholder .replacePlaceholders ("{bar{foo}}" , placeholderResolver ));
124124 }
125125
@@ -131,7 +131,7 @@ public void testNestedShorterPrefix() {
131131 map .put ("foo1" , "{foo2}}" );
132132 map .put ("foo2" , "bar" );
133133 map .put ("barbar" , "baz" );
134- PropertyPlaceholder .PlaceholderResolver placeholderResolver = new SimplePlaceholderResolver (map , false );
134+ PropertyPlaceholder .PlaceholderResolver placeholderResolver = new SimplePlaceholderResolver (map , false , true );
135135 assertEquals ("baz" , propertyPlaceholder .replacePlaceholders ("{bar{foo}}}}" , placeholderResolver ));
136136 }
137137
@@ -141,17 +141,27 @@ public void testCircularReference() {
141141 Map <String , String > map = new LinkedHashMap <>();
142142 map .put ("foo" , "${bar}" );
143143 map .put ("bar" , "${foo}" );
144- PropertyPlaceholder .PlaceholderResolver placeholderResolver = new SimplePlaceholderResolver (map , false );
144+ PropertyPlaceholder .PlaceholderResolver placeholderResolver = new SimplePlaceholderResolver (map , false , true );
145145 propertyPlaceholder .replacePlaceholders ("${foo}" , placeholderResolver );
146146 }
147147
148+ @ Test
149+ public void testShouldRemoveMissing () {
150+ PropertyPlaceholder propertyPlaceholder = new PropertyPlaceholder ("${" , "}" , false );
151+ Map <String , String > map = new LinkedHashMap <>();
152+ PropertyPlaceholder .PlaceholderResolver placeholderResolver = new SimplePlaceholderResolver (map , true , false );
153+ assertEquals ("bar${foo}" , propertyPlaceholder .replacePlaceholders ("bar${foo}" , placeholderResolver ));
154+ }
155+
148156 private class SimplePlaceholderResolver implements PropertyPlaceholder .PlaceholderResolver {
149157 private Map <String , String > map ;
150158 private boolean shouldIgnoreMissing ;
159+ private boolean shouldRemoveMissing ;
151160
152- SimplePlaceholderResolver (Map <String , String > map , boolean shouldIgnoreMissing ) {
161+ SimplePlaceholderResolver (Map <String , String > map , boolean shouldIgnoreMissing , boolean shouldRemoveMissing ) {
153162 this .map = map ;
154163 this .shouldIgnoreMissing = shouldIgnoreMissing ;
164+ this .shouldRemoveMissing = shouldRemoveMissing ;
155165 }
156166
157167 @ Override
@@ -163,5 +173,10 @@ public String resolvePlaceholder(String placeholderName) {
163173 public boolean shouldIgnoreMissing (String placeholderName ) {
164174 return shouldIgnoreMissing ;
165175 }
176+
177+ @ Override
178+ public boolean shouldRemoveMissingPlaceholder (String placeholderName ) {
179+ return shouldRemoveMissing ;
180+ }
166181 }
167182}
0 commit comments