diff --git a/src/main/java/org/springframework/data/util/KotlinBeanInfoFactory.java b/src/main/java/org/springframework/data/util/KotlinBeanInfoFactory.java index ae2bc6b48..8d2104ae7 100644 --- a/src/main/java/org/springframework/data/util/KotlinBeanInfoFactory.java +++ b/src/main/java/org/springframework/data/util/KotlinBeanInfoFactory.java @@ -69,7 +69,28 @@ public class KotlinBeanInfoFactory implements BeanInfoFactory, Ordered { Collection> members = kotlinClass.getMembers(); Map descriptors = new LinkedHashMap<>(members.size(), 1.f); - for (KCallable member : kotlinClass.getMembers()) { + collectKotlinProperties(beanClass, members, descriptors); + collectBasicJavaProperties(beanClass, descriptors); + + PropertyDescriptor[] propertyDescriptors = descriptors.values().toArray(new PropertyDescriptor[0]); + + return new SimpleBeanInfo() { + @Override + public BeanDescriptor getBeanDescriptor() { + return new BeanDescriptor(beanClass); + } + + @Override + public PropertyDescriptor[] getPropertyDescriptors() { + return propertyDescriptors; + } + }; + } + + private static void collectKotlinProperties(Class beanClass, Collection> members, + Map descriptors) throws IntrospectionException { + + for (KCallable member : members) { if (member instanceof KProperty property) { @@ -100,6 +121,10 @@ public class KotlinBeanInfoFactory implements BeanInfoFactory, Ordered { descriptors.put(property.getName(), new PropertyDescriptor(property.getName(), getter, setter)); } } + } + + private static void collectBasicJavaProperties(Class beanClass, Map descriptors) + throws IntrospectionException { Class javaClass = beanClass; do { @@ -123,20 +148,6 @@ public class KotlinBeanInfoFactory implements BeanInfoFactory, Ordered { descriptors.put(descriptor.getName(), descriptor); } } - - PropertyDescriptor[] propertyDescriptors = descriptors.values().toArray(new PropertyDescriptor[0]); - - return new SimpleBeanInfo() { - @Override - public BeanDescriptor getBeanDescriptor() { - return new BeanDescriptor(beanClass); - } - - @Override - public PropertyDescriptor[] getPropertyDescriptors() { - return propertyDescriptors; - } - }; } @Nullable