Skip to content

Commit

Permalink
Merge branch '2.0.x'
Browse files Browse the repository at this point in the history
  • Loading branch information
wilkinsona committed May 11, 2018
2 parents 1afab3a + 3992dac commit efda5ef
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 5 deletions.
Expand Up @@ -18,6 +18,7 @@

import java.lang.annotation.Annotation;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.TreeSet;
import java.util.function.Supplier;
Expand All @@ -32,6 +33,7 @@
import org.springframework.core.ResolvableType;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.util.StringUtils;

/**
* Base class for {@link AggregateBinder AggregateBinders} that read a sequential run of
Expand Down Expand Up @@ -81,11 +83,17 @@ private void bindIndexed(ConfigurationPropertySource source,
ResolvableType aggregateType, ResolvableType elementType) {
ConfigurationProperty property = source.getConfigurationProperty(root);
if (property != null) {
Object aggregate = convert(property.getValue(), aggregateType,
target.getAnnotations());
ResolvableType collectionType = ResolvableType
.forClassWithGenerics(collection.get().getClass(), elementType);
Collection<Object> elements = convert(aggregate, collectionType);
Collection<Object> elements;
Object value = property.getValue();
if (value instanceof String && !StringUtils.hasText((String) value)) {
elements = Collections.emptyList();
}
else {
Object aggregate = convert(value, aggregateType, target.getAnnotations());
ResolvableType collectionType = ResolvableType
.forClassWithGenerics(collection.get().getClass(), elementType);
elements = convert(aggregate, collectionType);
}
collection.get().addAll(elements);
}
else {
Expand Down
Expand Up @@ -363,6 +363,19 @@ public void bindToBeanWithNestedCollectionShouldPopulateCollection() {
assertThat(foo.getFoos().get(1).getValue()).isEqualTo("three");
}

@Test
public void bindToNestedCollectionWhenEmptyStringShouldReturnEmptyCollection() {
MockConfigurationPropertySource source = new MockConfigurationPropertySource();
source.put("foo.value", "one");
source.put("foo.foos", "");
this.sources.add(source);
Bindable<BeanWithNestedCollection> target = Bindable
.of(BeanWithNestedCollection.class);
BeanWithNestedCollection foo = this.binder.bind("foo", target).get();
assertThat(foo.getValue()).isEqualTo("one");
assertThat(foo.getFoos()).isEmpty();
}

@Test
public void bindToCollectionShouldUsePropertyEditor() {
// gh-12166
Expand Down

0 comments on commit efda5ef

Please sign in to comment.