]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.utils/src/org/simantics/utils/ReflectionUtils.java
Search deeply for generic superclass in ReflectionUtils
[simantics/platform.git] / bundles / org.simantics.utils / src / org / simantics / utils / ReflectionUtils.java
index b9d794e4043d2fc73346fd77049fcf7fc67cbe06..7f0f6c589a4c8f290db1c48eccf915535e477340 100644 (file)
@@ -58,6 +58,14 @@ public class ReflectionUtils {
     public static <T> Class<T> getSingleParameterTypeExtending(Class<?> clazz) {
 
         Type t = clazz.getGenericSuperclass();
+        while (t instanceof Class<?>) {
+            Class<?> cl = (Class) t;
+            t = cl.getGenericSuperclass();
+            if (t == null) {
+                // according to javadoc, we have reached java.lang.Object so no can do
+                break;
+            }
+        }
         if(t instanceof Class<?>) {
             throw new UnsupportedOperationException("Missing parameter type for input class '" + clazz.getCanonicalName() + "'");
         } else if (t instanceof ParameterizedType) {