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/06/24 23:31:47 UTC

svn commit: r671353 - in /tapestry/tapestry5/trunk/tapestry-core/src: main/java/org/apache/tapestry5/internal/services/InternalClassTransformationImpl.java test/java/org/apache/tapestry5/internal/services/InternalClassTransformationImplTest.java

Author: hlship
Date: Tue Jun 24 14:31:47 2008
New Revision: 671353

URL: http://svn.apache.org/viewvc?rev=671353&view=rev
Log:
TAPESTRY-2478: Non-private fields in Tapestry component classes should fail early, instead get confusing javassist.bytecode.DuplicateMemberException

Modified:
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalClassTransformationImpl.java
    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/InternalClassTransformationImplTest.java

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalClassTransformationImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalClassTransformationImpl.java?rev=671353&r1=671352&r2=671353&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalClassTransformationImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalClassTransformationImpl.java Tue Jun 24 14:31:47 2008
@@ -252,10 +252,16 @@
 
     private void preloadMemberNames()
     {
+        verifyFields();
+
         addMemberNames(ctClass.getDeclaredFields());
         addMemberNames(ctClass.getDeclaredMethods());
     }
 
+    /**
+     * Invoked during instance construction to check that all fields are either: <ul> <li>private</li> <li>static</li>
+     * <li>groovy.lang.MetaClass (for Groovy compatiblility)</li> </li>
+     */
     void verifyFields()
     {
         List<String> names = CollectionFactory.newList();
@@ -264,8 +270,6 @@
         {
             String name = field.getName();
 
-            if (addedFieldNames.contains(name)) continue;
-
             int modifiers = field.getModifiers();
 
             // Fields must be either static or private.
@@ -1042,8 +1046,6 @@
 
             if (skipped.contains(name)) continue;
 
-            // May need to add a filter to edit out explicitly added fields.
-
             names.add(name);
         }
 
@@ -1299,8 +1301,6 @@
 
         addConstructor();
 
-        verifyFields();
-
         freeze();
     }
 

Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/InternalClassTransformationImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/InternalClassTransformationImplTest.java?rev=671353&r1=671352&r2=671353&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/InternalClassTransformationImplTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/InternalClassTransformationImplTest.java Tue Jun 24 14:31:47 2008
@@ -916,15 +916,12 @@
     {
         Logger logger = mockLogger();
 
-
         replay();
 
-        InternalClassTransformation ct = createClassTransformation(VisibilityBean.class, logger);
-
         try
         {
 
-            ct.finish();
+            InternalClassTransformation ct = createClassTransformation(VisibilityBean.class, logger);
 
             unreachable();
         }