Author: hlship
Date: Sat Mar 8 12:04:53 2008
New Revision: 635066
URL: http://svn.apache.org/viewvc?rev=635066&view=rev
Log:
TAPESTRY-2240: Groovy classes can no longer be used a component classes because
of the public metaClass field
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/InternalClassTransformationImpl.java
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/InternalClassTransformationImpl.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/InternalClassTransformationImpl.java?rev=635066&r1=635065&r2=635066&view=diff
==============================================================================
---
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/InternalClassTransformationImpl.java
(original)
+++
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/InternalClassTransformationImpl.java
Sat Mar 8 12:04:53 2008
@@ -257,6 +257,16 @@
if (Modifier.isStatic(modifiers) || Modifier.isPrivate(modifiers))
continue;
+ // Groovy injects a public field named metaClass. We ignore it,
and add it as a claimed
+ // field to prevent any of the workers from seeing it.
+
+ if (name.equals("metaClass") &&
getFieldType(name).equals("groovy.lang.MetaClass"))
+ {
+ claimField(name, "Ignored");
+
+ continue;
+ }
+
names.add(name);
}