Written on
Groovy Quickie: AST Transformations and TypeResolver NPs
I have seen this exception every now and than, but today I write this blog post mainly to remind myself of the error cause (and share it with the reader, of course :-)).
Caused by: java.lang.NullPointerException
at com.sun.beans.x.resolve(TypeResolver.java:203)
at com.sun.beans.TypeResolver.resolve(TypeResolver.java:218)
at com.sun.beans.TypeResolver.resolve(TypeResolver.java:169)
at com.sun.beans.TypeResolver.resolve(TypeResolver.java:218)
at com.sun.beans.TypeResolver.resolveInClass(TypeResolver.java:96)
at java.beans.FeatureDescriptor.getParameterTypes(FeatureDescriptor.java:387)
at java.beans.MethodDescriptor.setMethod(MethodDescriptor.java:114)
at java.beans.MethodDescriptor.<init>(MethodDescriptor.java:72)
at java.beans.MethodDescriptor.<init>(MethodDescriptor.java:56)
at java.beans.Introspector.getTargetMethodInfo(Introspector.java:1150)
at java.beans.Introspector.getBeanInfo(Introspector.java:416)
at java.beans.Introspector.getBeanInfo(Introspector.java:163)
at groovy.lang.MetaClassImpl$15.run(MetaClassImpl.java:2924)
at java.security.AccessController.doPrivileged(Native Method)
at groovy.lang.MetaClassImpl.addProperties(MetaClassImpl.java:2922)
at groovy.lang.MetaClassImpl.initialize(MetaClassImpl.java:2905)
parameters.addAll(new ArrayList<Parameter>(Arrays.asList(methodNode.getParameters())));
// ...
MethodNode method =
answer.addMethod("doCall", ACC_PUBLIC, ClassHelper.Boolean_TYPE, parameters.toArray(new Parameter[parameters.size()]), ClassNode.EMPTY_ARRAY, expression.getCode());
// ...
class A {
@Ensures ({ type.isInstance( result ) })
<T> T extension( Class<T> type, T value )
{
return value
}
}
static Class[] getParameterTypes(Class base, Method method) {
if (base == null) {
base = method.getDeclaringClass();
}
return TypeResolver.erase(TypeResolver.resolveInClass(base, method.getGenericParameterTypes()));
}