public static void main(String[] args) {
Method[] methods = SampleClass.class.getMethods();
- Type[] parameters = methods[0].getGenericParameterTypes();
+ /*Type[] parameters = methods[0].getGenericParameterTypes();
//Type[] parameters = methods[0].getGenericParameterTypes();
for (int i = 0; i < parameters.length; i++) {
System.out.println(parameters[i]);
}
- System.out.println();
+ System.out.println();*/
/*Class[] parameterTypes = methods[0].getParameterTypes();
for(Class parameterType: parameterTypes){
System.out.println(parameterType.getName());
}*/
System.out.println();
- /*
+
Type returnType = methods[0].getGenericReturnType();
- System.out.println(returnType);*/
+ System.out.println(returnType);
}
}
return Types.getReturnTypeName(signature);
}
- // TODO: Fix for Groovy's model-checking
public String getGenericReturnTypeName () {
- return Types.getGenericReturnTypeName(signature);
+ return Types.getGenericReturnTypeName(genericSignature);
}
-
+
public String getSourceFileName () {
if (ci != null) {
return ci.getSourceFileName();
MethodInfo mi = getMethodInfo(env, objRef);
ThreadInfo ti = env.getThreadInfo();
- ClassInfo ci = ClassLoaderInfo.getCurrentResolvedClassInfo(mi.getReturnTypeName());
- if (!ci.isRegistered()) {
- ci.registerClass(ti);
+ String returnTypeName = mi.getGenericReturnTypeName();
+ int retRef;
+ if (Types.isGenericSignature(returnTypeName)) {
+ retRef = getParameterizedTypeImplObj(returnTypeName, env);
+ } else {
+ ClassInfo ci = ClassLoaderInfo.getCurrentResolvedClassInfo(returnTypeName);
+ if (!ci.isRegistered()) {
+ ci.registerClass(ti);
+ }
+ retRef = ci.getClassObjectRef();
}
- return ci.getClassObjectRef();
+ return retRef;
}
// TODO: Fix for Groovy's model-checking
// TODO: We have been able to only register the generic class and not yet the parameterized types