A couple notes on Groovy 2.5b3:
1) The groovy-2.5.0-beta-3-sources.jar on Maven Central has a lot of duplicate
source entries; at least under the groovy packages.
2) I'm having a little trouble with the new PropertyHandler stuff that supports
@Immutable. The error "The propertyHandler class
'groovy.transform.options.ImmutablePropertyHandler' on @MapConstructor is not
a propertyHandler" is showing anywhere @Immutable is applied. I think the
ClassLoader used to load PropertyHandler was different from the one passed as
"loader" to the method below. And so the isAssignableFrom check fails. When I
edit (see below) to use the same class loader used for PropertyHandler, the
check and typecast succeed.
public static PropertyHandler
createPropertyHandler(AbstractASTTransformation xform, GroovyClassLoader
loader, ClassNode cNode) {
List<AnnotationNode> annotations =
cNode.getAnnotations(PROPERTY_OPTIONS_TYPE);
AnnotationNode anno = annotations.isEmpty() ? null : annotations.get(0);
if (anno == null) return new
groovy.transform.options.DefaultPropertyHandler();
ClassNode handlerClass = xform.getMemberClassValue(anno,
"propertyHandler",
ClassHelper.make(groovy.transform.options.DefaultPropertyHandler.class));
if (handlerClass == null) {
xform.addError("Couldn't determine propertyHandler class", anno);
return null;
}
String className = handlerClass.getName();
try {
// GRECLIPSE edit
//Object instance = loader.loadClass(className).newInstance();
Object instance =
PropertyHandler.class.getClassLoader().loadClass(className).newInstance();
// GRECLIPSE end
if (instance == null) {
xform.addError("Can't load propertyHandler '" + className +
"'", anno);
return null;
}
if (!PropertyHandler.class.isAssignableFrom(instance.getClass())) {
xform.addError("The propertyHandler class '" +
handlerClass.getName() + "' on " + xform.getAnnotationName() + " is not a
propertyHandler", anno);
return null;
}
return (PropertyHandler) instance;
} catch (Exception e) {
xform.addError("Can't load propertyHandler '" + className + "' " +
e, anno);
return null;
}
}
Eric Milles
Lead Software Engineer
Thomson Reuters
Email: [email protected]
Phone: 651-848-7040