Support record canonical constructor in BeanUtils

See gh-33707
This commit is contained in:
evgenijnikiforov
2024-10-15 13:27:35 +04:00
committed by Sébastien Deleuze
parent 161d3995bf
commit 514d6000d1
2 changed files with 30 additions and 0 deletions

View File

@@ -521,10 +521,26 @@ class BeanUtilsTests {
assertThat(BeanUtils.isSimpleProperty(type)).as("Type [" + type.getName() + "] should not be a simple property").isFalse();
}
@Test
void resolveRecordConstructor() throws NoSuchMethodException {
assertThat(BeanUtils.getResolvableConstructor(RecordWithMultiplePublicConstructors.class))
.isEqualTo(getRecordWithMultipleVariationsConstructor());
}
private void assertSignatureEquals(Method desiredMethod, String signature) {
assertThat(BeanUtils.resolveSignature(signature, MethodSignatureBean.class)).isEqualTo(desiredMethod);
}
public record RecordWithMultiplePublicConstructors(String value, String name) {
public RecordWithMultiplePublicConstructors(String value) {
this(value, "default value");
}
}
private Constructor<RecordWithMultiplePublicConstructors> getRecordWithMultipleVariationsConstructor() throws NoSuchMethodException {
return RecordWithMultiplePublicConstructors.class.getConstructor(String.class, String.class);
}
@SuppressWarnings("unused")
private static class NumberHolder {