You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2026/09/06 16:52:26 UTC

(cayenne) 02/07: Cleanup: no need for reflection in EnumConverter

This is an automated email from the ASF dual-hosted git repository.

asf-gitbox-commits pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git

commit 38b21bacadd6822a8ae04759fd91ad01df432fd3
Author: Andrus Adamchik <an...@objectstyle.com>
AuthorDate: Sun Sep 6 12:18:09 2026 -0400

    Cleanup: no need for reflection in EnumConverter
---
 .../java/org/apache/cayenne/reflect/EnumConverter.java | 18 ++++++------------
 1 file changed, 6 insertions(+), 12 deletions(-)

diff --git a/cayenne/src/main/java/org/apache/cayenne/reflect/EnumConverter.java b/cayenne/src/main/java/org/apache/cayenne/reflect/EnumConverter.java
index 6bc4fe0ce..a456c37c6 100644
--- a/cayenne/src/main/java/org/apache/cayenne/reflect/EnumConverter.java
+++ b/cayenne/src/main/java/org/apache/cayenne/reflect/EnumConverter.java
@@ -29,23 +29,17 @@ import java.util.Objects;
 class EnumConverter<T extends Enum<T> & ExtendedEnumeration> implements Converter<T> {
 
     @Override
-    @SuppressWarnings("unchecked")
     public T convert(Object object, Class<T> type) {
 
         if (ExtendedEnumeration.class.isAssignableFrom(type)) {
-            ExtendedEnumeration[] values;
-
-            try {
-                values = (ExtendedEnumeration[]) type.getMethod("values").invoke(null);
-            }
-            catch (Exception e) {
-                // unexpected, all enums should have values
-                throw new CayenneRuntimeException(e);
+            T[] values = type.getEnumConstants();
+            if (values == null) {
+                throw new CayenneRuntimeException("Not an enum type: %s", type.getName());
             }
 
-            for (ExtendedEnumeration en : values) {
+            for (T en : values) {
                 if (Objects.deepEquals(en.getDatabaseValue(), object)) {
-                    return (T) en;
+                    return en;
                 }
             }
 
@@ -56,6 +50,6 @@ class EnumConverter<T extends Enum<T> & ExtendedEnumeration> implements Converte
             return null;
         }
 
-        return (T) Enum.valueOf(type, object.toString());
+        return Enum.valueOf(type, object.toString());
     }
 }