Ignore getters for Kotlin types deviating from Java Beans spec.

We now ignore Kotlin getters that are either static methods or would require additional arguments.

Closes #3109
This commit is contained in:
Mark Paluch
2024-06-18 11:33:03 +02:00
parent c7cd0b7d2d
commit e95bfbb16a
3 changed files with 34 additions and 0 deletions

View File

@@ -28,6 +28,7 @@ import java.beans.IntrospectionException;
import java.beans.PropertyDescriptor;
import java.beans.SimpleBeanInfo;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.Arrays;
import java.util.LinkedHashSet;
import java.util.Set;
@@ -68,6 +69,10 @@ public class KotlinBeanInfoFactory implements BeanInfoFactory, Ordered {
Method getter = ReflectJvmMapping.getJavaGetter(property);
Method setter = property instanceof KMutableProperty<?> kmp ? ReflectJvmMapping.getJavaSetter(kmp) : null;
if (getter != null && (Modifier.isStatic(getter.getModifiers()) || getter.getParameterCount() != 0)) {
continue;
}
if (getter != null && setter != null && setter.getParameterCount() == 1) {
if (!getter.getReturnType().equals(setter.getParameters()[0].getType())) {
// filter asymmetric getters/setters from being considered a Java Beans property