Introduce write method fallback step for overloaded setter methods

Closes gh-31872
This commit is contained in:
Juergen Hoeller
2023-12-21 14:32:10 +01:00
parent 85cb6cc5fb
commit bd65a19d71
4 changed files with 70 additions and 7 deletions

View File

@@ -16,6 +16,7 @@
package org.springframework.beans;
import java.time.Duration;
import java.util.Collections;
import java.util.Map;
import java.util.Optional;
@@ -172,10 +173,26 @@ class BeanWrapperTests extends AbstractPropertyAccessorTests {
void setterOverload() {
SetterOverload target = new SetterOverload();
BeanWrapper accessor = createAccessor(target);
accessor.setPropertyValue("object", "a String");
assertThat(target.value).isEqualTo("a String");
assertThat(target.getObject()).isEqualTo("a String");
assertThat(accessor.getPropertyValue("object")).isEqualTo("a String");
accessor.setPropertyValue("object", 1000);
assertThat(target.value).isEqualTo("1000");
assertThat(target.getObject()).isEqualTo("1000");
assertThat(accessor.getPropertyValue("object")).isEqualTo("1000");
accessor.setPropertyValue("value", 1000);
assertThat(target.value).isEqualTo("1000i");
assertThat(target.getObject()).isEqualTo("1000i");
assertThat(accessor.getPropertyValue("object")).isEqualTo("1000i");
accessor.setPropertyValue("value", Duration.ofSeconds(1000));
assertThat(target.value).isEqualTo("1000s");
assertThat(target.getObject()).isEqualTo("1000s");
assertThat(accessor.getPropertyValue("object")).isEqualTo("1000s");
}
@Test
@@ -382,7 +399,7 @@ class BeanWrapperTests extends AbstractPropertyAccessorTests {
public String value;
public void setObject(Integer length) {
this.value = length.toString();
this.value = length + "i";
}
public void setObject(String object) {
@@ -392,6 +409,14 @@ class BeanWrapperTests extends AbstractPropertyAccessorTests {
public String getObject() {
return this.value;
}
public void setValue(int length) {
this.value = length + "i";
}
public void setValue(Duration duration) {
this.value = duration.getSeconds() + "s";
}
}