Merge branch '3.4.x'
Build and Deploy Snapshot / Build and Deploy Snapshot (push) Waiting to run
Details
Build and Deploy Snapshot / Trigger Docs Build (push) Blocked by required conditions
Details
Build and Deploy Snapshot / Verify (push) Blocked by required conditions
Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:false version:17], map[id:${{ vars.UBUNTU_MEDIUM || 'ubuntu-latest' }} name:Linux]) (push) Waiting to run
Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:false version:17], map[id:windows-latest name:Windows]) (push) Waiting to run
Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:false version:21], map[id:${{ vars.UBUNTU_MEDIUM || 'ubuntu-latest' }} name:Linux]) (push) Waiting to run
Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:false version:21], map[id:windows-latest name:Windows]) (push) Waiting to run
Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:true version:24], map[id:${{ vars.UBUNTU_MEDIUM || 'ubuntu-latest' }} name:Linux]) (push) Waiting to run
Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:true version:24], map[id:windows-latest name:Windows]) (push) Waiting to run
Details
Run System Tests / Java ${{ matrix.java.version}} (map[toolchain:false version:17]) (push) Waiting to run
Details
Run System Tests / Java ${{ matrix.java.version}} (map[toolchain:true version:21]) (push) Waiting to run
Details
Build and Deploy Snapshot / Build and Deploy Snapshot (push) Waiting to run
Details
Build and Deploy Snapshot / Trigger Docs Build (push) Blocked by required conditions
Details
Build and Deploy Snapshot / Verify (push) Blocked by required conditions
Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:false version:17], map[id:${{ vars.UBUNTU_MEDIUM || 'ubuntu-latest' }} name:Linux]) (push) Waiting to run
Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:false version:17], map[id:windows-latest name:Windows]) (push) Waiting to run
Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:false version:21], map[id:${{ vars.UBUNTU_MEDIUM || 'ubuntu-latest' }} name:Linux]) (push) Waiting to run
Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:false version:21], map[id:windows-latest name:Windows]) (push) Waiting to run
Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:true version:24], map[id:${{ vars.UBUNTU_MEDIUM || 'ubuntu-latest' }} name:Linux]) (push) Waiting to run
Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:true version:24], map[id:windows-latest name:Windows]) (push) Waiting to run
Details
Run System Tests / Java ${{ matrix.java.version}} (map[toolchain:false version:17]) (push) Waiting to run
Details
Run System Tests / Java ${{ matrix.java.version}} (map[toolchain:true version:21]) (push) Waiting to run
Details
Closes gh-46040
This commit is contained in:
commit
18e5e0647d
|
@ -576,6 +576,7 @@ public class Binder {
|
||||||
if (source == null) {
|
if (source == null) {
|
||||||
return supplier.get();
|
return supplier.get();
|
||||||
}
|
}
|
||||||
|
ConfigurationPropertySource previous = this.source.get(0);
|
||||||
this.source.set(0, source);
|
this.source.set(0, source);
|
||||||
this.sourcePushCount++;
|
this.sourcePushCount++;
|
||||||
try {
|
try {
|
||||||
|
@ -583,6 +584,7 @@ public class Binder {
|
||||||
}
|
}
|
||||||
finally {
|
finally {
|
||||||
this.sourcePushCount--;
|
this.sourcePushCount--;
|
||||||
|
this.source.set(0, previous);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -143,6 +143,21 @@ class CollectionBinderTests {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void bindToNestedCollectionWhenNonKnownIndexed() {
|
||||||
|
// gh-46039
|
||||||
|
MockConfigurationPropertySource source = new MockConfigurationPropertySource();
|
||||||
|
source.put("foo[0].items[0]", "a");
|
||||||
|
source.put("foo[0].items[1]", "b");
|
||||||
|
source.put("foo[0].string", "test");
|
||||||
|
this.sources.add(source);
|
||||||
|
List<ExampleCollectionBean> list = this.binder.bind("foo", Bindable.listOf(ExampleCollectionBean.class)).get();
|
||||||
|
assertThat(list).hasSize(1);
|
||||||
|
ExampleCollectionBean bean = list.get(0);
|
||||||
|
assertThat(bean.getItems()).containsExactly("a", "b", "d");
|
||||||
|
assertThat(bean.getString()).isEqualTo("test");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void bindToNonScalarCollectionWhenNonSequentialShouldThrowException() {
|
void bindToNonScalarCollectionWhenNonSequentialShouldThrowException() {
|
||||||
MockConfigurationPropertySource source = new MockConfigurationPropertySource();
|
MockConfigurationPropertySource source = new MockConfigurationPropertySource();
|
||||||
|
@ -456,6 +471,8 @@ class CollectionBinderTests {
|
||||||
|
|
||||||
private Set<String> itemsSet = new LinkedHashSet<>();
|
private Set<String> itemsSet = new LinkedHashSet<>();
|
||||||
|
|
||||||
|
private String string;
|
||||||
|
|
||||||
List<String> getItems() {
|
List<String> getItems() {
|
||||||
return this.items;
|
return this.items;
|
||||||
}
|
}
|
||||||
|
@ -472,6 +489,14 @@ class CollectionBinderTests {
|
||||||
this.itemsSet = itemsSet;
|
this.itemsSet = itemsSet;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String getString() {
|
||||||
|
return this.string;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setString(String string) {
|
||||||
|
this.string = string;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static class ExampleCustomNoDefaultConstructorBean {
|
static class ExampleCustomNoDefaultConstructorBean {
|
||||||
|
|
Loading…
Reference in New Issue