Skip to content

Commit 26cc628

Browse files
committed
Merge branch '1.1.x'
2 parents a7338e1 + 0c6a0bd commit 26cc628

File tree

3 files changed

+36
-4
lines changed

3 files changed

+36
-4
lines changed

spring-boot-cli/src/main/executablecontent/bin/spring

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ if [ -z "${SPRING_HOME}" ]; then
6969
done
7070
SAVED="`pwd`"
7171
cd "`dirname \"$PRG\"`/../" >&-
72-
SPRING_HOME="`pwd -P`"
72+
export SPRING_HOME="`pwd -P`"
7373
cd "$SAVED" >&-
7474
fi
7575

spring-boot/src/main/java/org/springframework/boot/bind/RelaxedDataBinder.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import org.springframework.beans.InvalidPropertyException;
2929
import org.springframework.beans.MutablePropertyValues;
3030
import org.springframework.beans.PropertyValue;
31+
import org.springframework.core.convert.ConversionService;
3132
import org.springframework.core.convert.TypeDescriptor;
3233
import org.springframework.util.StringUtils;
3334
import org.springframework.validation.DataBinder;
@@ -47,6 +48,8 @@ public class RelaxedDataBinder extends DataBinder {
4748

4849
private boolean ignoreNestedProperties;
4950

51+
private ConversionService relaxedConversionService;
52+
5053
/**
5154
* Create a new {@link RelaxedDataBinder} instance.
5255
* @param target the target into which properties are bound
@@ -76,12 +79,19 @@ public void setIgnoreNestedProperties(boolean ignoreNestedProperties) {
7679
this.ignoreNestedProperties = ignoreNestedProperties;
7780
}
7881

82+
@Override
83+
public void setConversionService(ConversionService conversionService) {
84+
super.setConversionService(conversionService);
85+
this.relaxedConversionService = new RelaxedConversionService(getConversionService());
86+
}
87+
7988
@Override
8089
public void initBeanPropertyAccess() {
8190
super.initBeanPropertyAccess();
91+
this.relaxedConversionService = (this.relaxedConversionService != null
92+
? this.relaxedConversionService : new RelaxedConversionService(getConversionService()));
8293
// Hook in the RelaxedConversionService
83-
getInternalBindingResult().initConversion(
84-
new RelaxedConversionService(getConversionService()));
94+
getInternalBindingResult().initConversion(relaxedConversionService);
8595
}
8696

8797
@Override
@@ -111,6 +121,7 @@ private MutablePropertyValues modifyProperties(MutablePropertyValues propertyVal
111121
}
112122

113123
BeanWrapper targetWrapper = new BeanWrapperImpl(target);
124+
targetWrapper.setConversionService(this.relaxedConversionService);
114125
targetWrapper.setAutoGrowNestedPaths(true);
115126

116127
List<PropertyValue> list = propertyValues.getPropertyValueList();
@@ -189,7 +200,6 @@ private String initializePath(BeanWrapper wrapper, BeanPath path, int index) {
189200
TypeDescriptor descriptor = wrapper.getPropertyTypeDescriptor(name);
190201
if (descriptor == null || descriptor.isMap()) {
191202
if (descriptor != null) {
192-
wrapper.getPropertyValue(name + "[foo]");
193203
TypeDescriptor valueDescriptor = descriptor.getMapValueTypeDescriptor();
194204
if (valueDescriptor != null) {
195205
Class<?> valueType = valueDescriptor.getObjectType();

spring-boot/src/test/java/org/springframework/boot/bind/RelaxedDataBinderTests.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,15 @@ public void testBindNestedMapOfString() throws Exception {
284284
assertEquals("123", target.getNested().get("value.foo"));
285285
}
286286

287+
@Test
288+
public void testBindNestedMapOfEnum() throws Exception {
289+
this.conversionService = new DefaultConversionService();
290+
TargetWithNestedMapOfEnum target = new TargetWithNestedMapOfEnum();
291+
bind(target, "nested.this: bar\n" + "nested.ThAt: 123");
292+
assertEquals("bar", target.getNested().get(Bingo.THIS));
293+
assertEquals("123", target.getNested().get(Bingo.THAT));
294+
}
295+
287296
@Test
288297
public void testBindNestedMapBracketReferenced() throws Exception {
289298
TargetWithNestedMap target = new TargetWithNestedMap();
@@ -578,6 +587,19 @@ public void setNested(Map<String, String> nested) {
578587

579588
}
580589

590+
public static class TargetWithNestedMapOfEnum {
591+
592+
private Map<Bingo, Object> nested;
593+
594+
public Map<Bingo, Object> getNested() {
595+
return nested;
596+
}
597+
598+
public void setNested(Map<Bingo, Object> nested) {
599+
this.nested = nested;
600+
}
601+
}
602+
581603
public static class TargetWithNestedMapOfListOfString {
582604

583605
private Map<String, List<String>> nested;

0 commit comments

Comments
 (0)