groovy-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Paul King <pa...@asert.com.au>
Subject Re: Groovy 2.5.0-beta-3 feedback
Date Tue, 27 Feb 2018 23:08:05 GMT
Hi Eric, can you create issues please. Thanks, Paul.

On Tue, Feb 27, 2018 at 1:20 AM, <eric.milles@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.milles@thomsonreuters.com
>
> Phone: 651-848-7040 <(651)%20848-7040>
>
>
>

Mime
View raw message