From: jsimomaa Date: Wed, 5 Dec 2018 09:18:47 +0000 (+0200) Subject: Search deeply for generic superclass in ReflectionUtils X-Git-Tag: v1.43.0~136^2~245 X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=commitdiff_plain;h=8905e67e82991121305889e6474a124d6ec79bf8;p=simantics%2Fplatform.git Search deeply for generic superclass in ReflectionUtils gitlab #224 Change-Id: I3f3decead033c62726c5919b2b3f36b786de5135 --- diff --git a/bundles/org.simantics.utils/src/org/simantics/utils/ReflectionUtils.java b/bundles/org.simantics.utils/src/org/simantics/utils/ReflectionUtils.java index b9d794e40..7f0f6c589 100644 --- a/bundles/org.simantics.utils/src/org/simantics/utils/ReflectionUtils.java +++ b/bundles/org.simantics.utils/src/org/simantics/utils/ReflectionUtils.java @@ -58,6 +58,14 @@ public class ReflectionUtils { public static Class 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) {