You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2008/03/08 21:04:55 UTC

svn commit: r635066 - /tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/internal/services/InternalClassTransformationImpl.java

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);
         }