You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Paul King (Jira)" <ji...@apache.org> on 2020/11/11 02:02:05 UTC

[jira] [Closed] (GROOVY-8284) getMetaClass should be annotated as (JavaBeans) transient

     [ https://issues.apache.org/jira/browse/GROOVY-8284?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Paul King closed GROOVY-8284.
-----------------------------

> getMetaClass should be annotated as (JavaBeans) transient
> ---------------------------------------------------------
>
>                 Key: GROOVY-8284
>                 URL: https://issues.apache.org/jira/browse/GROOVY-8284
>             Project: Groovy
>          Issue Type: Bug
>          Components: Compiler
>    Affects Versions: 2.4.12
>            Reporter: Michael Lipp
>            Assignee: Paul King
>            Priority: Major
>             Fix For: 4.0.0-alpha-1, 3.0.6
>
>          Time Spent: 40m
>  Remaining Estimate: 0h
>
> All groovy classes have the "getMetaClass()" method. This breaks the (e.g. XML) serialization of groovy classes that are supposed to represent JavaBeans.
> While the serialization provided with Serializable or Externalizable examines the attributes of a class, the special JavaBeans serialization provided by serializers based on [Encoders](https://docs.oracle.com/javase/8/docs/api/java/beans/Encoder.html) relies on the information provided by the [Introspector](https://docs.oracle.com/javase/8/docs/api/java/beans/Introspector.html). 
> With respect to persistence, the PropertyDescriptor for "getMetaClass" should have the attribute value "transient" set. The Introspector generates this value if the method has been annotated as [Transient](https://docs.oracle.com/javase/8/docs/api/java/beans/Transient.html)). Because this value is currently missing, the Encoder tries to serialize the MetaClass information, which fails.
> The groovy compiler should therefore annotate the "getMetaClass" method with the runtime annotation "java.beans.Transient".



--
This message was sent by Atlassian Jira
(v8.3.4#803005)