|
16 | 16 |
|
17 | 17 | package org.springframework.boot.context.properties.bind;
|
18 | 18 |
|
| 19 | +import java.net.InetAddress; |
19 | 20 | import java.util.ArrayList;
|
20 | 21 | import java.util.Collections;
|
21 | 22 | import java.util.HashMap;
|
@@ -598,6 +599,18 @@ public void bindToBeanWithExceptionInGetterForExistingValue() {
|
598 | 599 | assertThat(result.getValues()).containsExactly(entry("a", "b"));
|
599 | 600 | }
|
600 | 601 |
|
| 602 | + @Test |
| 603 | + public void bindToMapWithWildcardShouldConvertToTheRightType() { |
| 604 | + // gh-18767 |
| 605 | + MockConfigurationPropertySource source = new MockConfigurationPropertySource(); |
| 606 | + source.put("foo.addresses.localhost[0]", "127.0.0.1"); |
| 607 | + source.put("foo.addresses.localhost[1]", "127.0.0.2"); |
| 608 | + this.sources.add(source); |
| 609 | + MapWithWildcardProperties result = this.binder.bind("foo", Bindable.of(MapWithWildcardProperties.class)).get(); |
| 610 | + assertThat(result.getAddresses().get("localhost").stream().map(InetAddress::getHostAddress)) |
| 611 | + .containsExactly("127.0.0.1", "127.0.0.2"); |
| 612 | + } |
| 613 | + |
601 | 614 | private <K, V> Bindable<Map<K, V>> getMapBindable(Class<K> keyGeneric, ResolvableType valueType) {
|
602 | 615 | ResolvableType keyType = ResolvableType.forClass(keyGeneric);
|
603 | 616 | return Bindable.of(ResolvableType.forClassWithGenerics(Map.class, keyType, valueType));
|
@@ -713,4 +726,18 @@ public Map<String, String> getValues() {
|
713 | 726 |
|
714 | 727 | }
|
715 | 728 |
|
| 729 | + public static class MapWithWildcardProperties { |
| 730 | + |
| 731 | + private Map<String, ? extends List<? extends InetAddress>> addresses; |
| 732 | + |
| 733 | + public Map<String, ? extends List<? extends InetAddress>> getAddresses() { |
| 734 | + return this.addresses; |
| 735 | + } |
| 736 | + |
| 737 | + public void setAddresses(Map<String, ? extends List<? extends InetAddress>> addresses) { |
| 738 | + this.addresses = addresses; |
| 739 | + } |
| 740 | + |
| 741 | + } |
| 742 | + |
716 | 743 | }
|
0 commit comments