diff --git a/src/main/java/org/springframework/data/util/KotlinBeanInfoFactory.java b/src/main/java/org/springframework/data/util/KotlinBeanInfoFactory.java index d304a4142..fd373d94e 100644 --- a/src/main/java/org/springframework/data/util/KotlinBeanInfoFactory.java +++ b/src/main/java/org/springframework/data/util/KotlinBeanInfoFactory.java @@ -48,7 +48,7 @@ public class KotlinBeanInfoFactory implements BeanInfoFactory, Ordered { @Override public BeanInfo getBeanInfo(Class beanClass) throws IntrospectionException { - if (beanClass.isInterface()) { + if (beanClass.isInterface() || beanClass.isEnum()) { return null; // back-off to leave interface-based properties to the default mechanism. } @@ -56,7 +56,6 @@ public class KotlinBeanInfoFactory implements BeanInfoFactory, Ordered { return null; } - KClass kotlinClass = JvmClassMappingKt.getKotlinClass(beanClass); List pds = new ArrayList<>(); diff --git a/src/test/kotlin/org/springframework/data/util/KotlinBeanInfoFactoryUnitTests.kt b/src/test/kotlin/org/springframework/data/util/KotlinBeanInfoFactoryUnitTests.kt index ddf63f368..04a3663b6 100644 --- a/src/test/kotlin/org/springframework/data/util/KotlinBeanInfoFactoryUnitTests.kt +++ b/src/test/kotlin/org/springframework/data/util/KotlinBeanInfoFactoryUnitTests.kt @@ -73,6 +73,14 @@ class KotlinBeanInfoFactoryUnitTests { assertThat(pds).hasSize(1).extracting("name").containsOnly("firstname") } + @Test // GH-2990 + internal fun backsOffForEnums() { + + val pds = BeanUtils.getPropertyDescriptors(MyEnum::class.java) + + assertThat(pds).extracting("name").contains("ordinal") + } + data class SimpleDataClass(val id: String, var name: String) @JvmInline @@ -86,4 +94,8 @@ class KotlinBeanInfoFactoryUnitTests { fun getFirstname(): String } + enum class MyEnum { + Foo, Bar + } + }