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


Reply via email to