]> gerrit.simantics Code Review - simantics/platform.git/commitdiff
Merge "Search deeply for generic superclass in ReflectionUtils" into release/1.35.1
authorTuukka Lehtonen <tuukka.lehtonen@semantum.fi>
Mon, 25 Feb 2019 12:20:49 +0000 (12:20 +0000)
committerGerrit Code Review <gerrit2@simantics>
Mon, 25 Feb 2019 12:20:49 +0000 (12:20 +0000)
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) {