Hi Eric, can you create issues please. Thanks, Paul. On Tue, Feb 27, 2018 at 1:20 AM, <eric.mil...@thomsonreuters.com> wrote:
> 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: eric.mil...@thomsonreuters.com > > Phone: 651-848-7040 <(651)%20848-7040> > > >