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());
}
}