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)