Introduce write method fallback step for overloaded setter methods
Closes gh-31872
This commit is contained in:
@@ -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";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user