From e2ca56235088bbb77c748e28a4f483f50f71a790 Mon Sep 17 00:00:00 2001 From: Jonathan Cobb Date: Sat, 4 Jan 2020 16:46:33 -0500 Subject: [PATCH] add another fieldNamesWithAnnotation that takes a Class --- .../org/cobbzilla/util/reflect/ReflectionUtil.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/cobbzilla/util/reflect/ReflectionUtil.java b/src/main/java/org/cobbzilla/util/reflect/ReflectionUtil.java index a331584..a4ad9c8 100644 --- a/src/main/java/org/cobbzilla/util/reflect/ReflectionUtil.java +++ b/src/main/java/org/cobbzilla/util/reflect/ReflectionUtil.java @@ -404,12 +404,16 @@ public class ReflectionUtil { return fieldsWithAnnotation(className, aClass).stream().map(Field::getName).collect(Collectors.toList()); } + public static List fieldNamesWithAnnotation(Class clazz, Class aClass) { + return fieldsWithAnnotation(clazz, aClass).stream().map(Field::getName).collect(Collectors.toList()); + } + private static Map> _fwaCache = new ExpirationMap<>(); - public static List fieldsWithAnnotation(Class clazz, Class aClass) { + public static List fieldsWithAnnotation(final Class clazz, Class aClass) { final String className = clazz.getName(); - return _fwaCache.computeIfAbsent(className, k -> { + return _fwaCache.computeIfAbsent(className+":"+aClass.getName(), k -> { final Set matches = new LinkedHashSet<>(); - Class c = forName(className); + Class c = clazz; while (!c.equals(Object.class)) { for (Field f : getAllFields(c)) { if (f.getAnnotation(aClass) != null) matches.add(f);