Author: hlship
Date: Wed Jul  2 15:23:23 2008
New Revision: 673527

URL: http://svn.apache.org/viewvc?rev=673527&view=rev
Log:
TAPESTRY-2500: Using @PageActivationContext on an int field results in a 
java.lang.Verify error

Modified:
    
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/PageActivationContextWorker.java
    
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/PageActivationContextWorkerTest.java

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/PageActivationContextWorker.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/PageActivationContextWorker.java?rev=673527&r1=673526&r2=673527&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/PageActivationContextWorker.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/PageActivationContextWorker.java
 Wed Jul  2 15:23:23 2008
@@ -14,15 +14,15 @@
 
 package org.apache.tapestry5.internal.transform;
 
-import java.lang.reflect.Modifier;
-import java.util.List;
-
 import org.apache.tapestry5.annotations.PageActivationContext;
 import org.apache.tapestry5.model.MutableComponentModel;
 import org.apache.tapestry5.services.ClassTransformation;
 import org.apache.tapestry5.services.ComponentClassTransformWorker;
 import org.apache.tapestry5.services.TransformMethodSignature;
 
+import java.lang.reflect.Modifier;
+import java.util.List;
+
 /**
  * Provides the page activation context handlers.
  *
@@ -33,13 +33,14 @@
     public void transform(ClassTransformation transformation, 
MutableComponentModel model)
     {
         List<String> fields = 
transformation.findFieldsWithAnnotation(PageActivationContext.class);
-        
-        if(fields.size()>1)
+
+        if (fields.size() > 1)
             throw new 
RuntimeException(TransformMessages.illegalNumberOfPageActivationContextHandlers(fields));
-        
+
         for (String fieldName : fields)
         {
-            PageActivationContext annotation = 
transformation.getFieldAnnotation(fieldName, PageActivationContext.class);
+            PageActivationContext annotation = 
transformation.getFieldAnnotation(fieldName,
+                                                                               
  PageActivationContext.class);
 
             String fieldType = transformation.getFieldType(fieldName);
 
@@ -48,16 +49,17 @@
                 TransformMethodSignature activate
                         = new TransformMethodSignature(Modifier.PROTECTED | 
Modifier.FINAL, "void",
                                                        "onActivate",
-                                                       new String[] { 
fieldType }, null);
+                                                       new 
String[]{fieldType}, null);
                 transformation.addTransformedMethod(activate, fieldName + " = 
$1;");
             }
 
             if (annotation.passivate())
             {
                 TransformMethodSignature passivate
-                        = new TransformMethodSignature(Modifier.PROTECTED | 
Modifier.FINAL, "java.lang.Object", "onPassivate",
-                                               null, null);
-                transformation.addTransformedMethod(passivate, "return 
"+fieldName + ";");
+                        = new TransformMethodSignature(Modifier.PROTECTED | 
Modifier.FINAL, "java.lang.Object",
+                                                       "onPassivate",
+                                                       null, null);
+                transformation.addTransformedMethod(passivate, "return ($w) " 
+ fieldName + ";");
             }
         }
 

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/PageActivationContextWorkerTest.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/PageActivationContextWorkerTest.java?rev=673527&r1=673526&r2=673527&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/PageActivationContextWorkerTest.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/PageActivationContextWorkerTest.java
 Wed Jul  2 15:23:23 2008
@@ -13,8 +13,6 @@
 // limitations under the License.
 package org.apache.tapestry5.internal.transform;
 
-import java.lang.reflect.Modifier;
-
 import org.apache.tapestry5.annotations.PageActivationContext;
 import org.apache.tapestry5.integration.app1.data.Track;
 import org.apache.tapestry5.model.MutableComponentModel;
@@ -24,90 +22,96 @@
 import org.apache.tapestry5.test.TapestryTestCase;
 import org.testng.annotations.Test;
 
-public class PageActivationContextWorkerTest extends TapestryTestCase {
+import java.lang.reflect.Modifier;
+
+public class PageActivationContextWorkerTest extends TapestryTestCase
+{
+
+    private static final String CLASS_NAME = Track.class.getName();
+
+    @Test
+    public void activate_dafault_passivate_false()
+    {
+        ClassTransformation ct = mockClassTransformation();
+        MutableComponentModel model = mockMutableComponentModel();
+        PageActivationContext annotation = 
newMock(PageActivationContext.class);
+        ComponentClassTransformWorker worker = new 
PageActivationContextWorker();
+
+        train_findFieldsWithAnnotation(ct, PageActivationContext.class,
+                                       "myfield");
+        train_getFieldAnnotation(ct, "myfield", PageActivationContext.class,
+                                 annotation);
+        train_getFieldType(ct, "myfield", CLASS_NAME);
+        expect(annotation.activate()).andReturn(true);
+
+        TransformMethodSignature sig = new TransformMethodSignature(
+                Modifier.PROTECTED | Modifier.FINAL, "void", "onActivate",
+                new String[]{CLASS_NAME}, null);
+
+        ct.addTransformedMethod(sig, "myfield = $1;");
+
+        expect(annotation.passivate()).andReturn(false);
+
+        replay();
+
+        worker.transform(ct, model);
+
+        verify();
+    }
+
+    @Test
+    public void activate_false_passivate_default()
+    {
+        ClassTransformation ct = mockClassTransformation();
+        MutableComponentModel model = mockMutableComponentModel();
+        PageActivationContext annotation = 
newMock(PageActivationContext.class);
+        ComponentClassTransformWorker worker = new 
PageActivationContextWorker();
+
+        train_findFieldsWithAnnotation(ct, PageActivationContext.class,
+                                       "myfield");
+        train_getFieldAnnotation(ct, "myfield", PageActivationContext.class,
+                                 annotation);
+        train_getFieldType(ct, "myfield", CLASS_NAME);
+        expect(annotation.activate()).andReturn(false);
+
+        expect(annotation.passivate()).andReturn(true);
+
+        TransformMethodSignature sig = new TransformMethodSignature(
+                Modifier.PROTECTED | Modifier.FINAL, "java.lang.Object",
+                "onPassivate", null, null);
 
-       private static final String CLASS_NAME = Track.class.getName();
+        ct.addTransformedMethod(sig, "return ($w) myfield;");
 
-       @Test
-       public void activate_dafault_passivate_false() {
-               ClassTransformation ct = mockClassTransformation();
-               MutableComponentModel model = mockMutableComponentModel();
-               PageActivationContext annotation = 
newMock(PageActivationContext.class);
-               ComponentClassTransformWorker worker = new 
PageActivationContextWorker();
-
-               train_findFieldsWithAnnotation(ct, PageActivationContext.class,
-                               "myfield");
-               train_getFieldAnnotation(ct, "myfield", 
PageActivationContext.class,
-                               annotation);
-               train_getFieldType(ct, "myfield", CLASS_NAME);
-               expect(annotation.activate()).andReturn(true);
-
-               TransformMethodSignature sig = new TransformMethodSignature(
-                               Modifier.PROTECTED | Modifier.FINAL, "void", 
"onActivate",
-                               new String[] { CLASS_NAME }, null);
-
-               ct.addTransformedMethod(sig, "myfield = $1;");
-               
-               expect(annotation.passivate()).andReturn(false);
-
-               replay();
-
-               worker.transform(ct, model);
-
-               verify();
-       }
-
-       @Test
-       public void activate_false_passivate_default() {
-               ClassTransformation ct = mockClassTransformation();
-               MutableComponentModel model = mockMutableComponentModel();
-               PageActivationContext annotation = 
newMock(PageActivationContext.class);
-               ComponentClassTransformWorker worker = new 
PageActivationContextWorker();
-
-               train_findFieldsWithAnnotation(ct, PageActivationContext.class,
-                               "myfield");
-               train_getFieldAnnotation(ct, "myfield", 
PageActivationContext.class,
-                               annotation);
-               train_getFieldType(ct, "myfield", CLASS_NAME);
-               expect(annotation.activate()).andReturn(false);
-
-               expect(annotation.passivate()).andReturn(true);
-
-               TransformMethodSignature sig = new TransformMethodSignature(
-                               Modifier.PROTECTED | Modifier.FINAL, 
"java.lang.Object",
-                               "onPassivate", null, null);
-
-               ct.addTransformedMethod(sig, "return myfield;");
-
-               replay();
-
-               worker.transform(ct, model);
-
-               verify();
-       }
-       
-       @Test
-       public void activate_false_passivate_false() {
-               ClassTransformation ct = mockClassTransformation();
-               MutableComponentModel model = mockMutableComponentModel();
-               PageActivationContext annotation = 
newMock(PageActivationContext.class);
-               ComponentClassTransformWorker worker = new 
PageActivationContextWorker();
-
-               train_findFieldsWithAnnotation(ct, PageActivationContext.class,
-                               "myfield");
-               train_getFieldAnnotation(ct, "myfield", 
PageActivationContext.class,
-                               annotation);
-               train_getFieldType(ct, "myfield", CLASS_NAME);
-               expect(annotation.activate()).andReturn(false);
+        replay();
 
-               expect(annotation.passivate()).andReturn(false);
+        worker.transform(ct, model);
 
-               replay();
+        verify();
+    }
 
-               worker.transform(ct, model);
+    @Test
+    public void activate_false_passivate_false()
+    {
+        ClassTransformation ct = mockClassTransformation();
+        MutableComponentModel model = mockMutableComponentModel();
+        PageActivationContext annotation = 
newMock(PageActivationContext.class);
+        ComponentClassTransformWorker worker = new 
PageActivationContextWorker();
 
-               verify();
-       }
+        train_findFieldsWithAnnotation(ct, PageActivationContext.class,
+                                       "myfield");
+        train_getFieldAnnotation(ct, "myfield", PageActivationContext.class,
+                                 annotation);
+        train_getFieldType(ct, "myfield", CLASS_NAME);
+        expect(annotation.activate()).andReturn(false);
+
+        expect(annotation.passivate()).andReturn(false);
+
+        replay();
+
+        worker.transform(ct, model);
+
+        verify();
+    }
 
     @Test
     public void illegal_number_of_page_activation_context_handlers()
@@ -117,21 +121,22 @@
         ComponentClassTransformWorker worker = new 
PageActivationContextWorker();
 
         train_findFieldsWithAnnotation(ct, PageActivationContext.class,
-                "myfield", "myfield2");
-        
+                                       "myfield", "myfield2");
+
         replay();
-        
+
         try
         {
             worker.transform(ct, model);
             fail("did not throw");
-        }catch(RuntimeException e)
+        }
+        catch (RuntimeException e)
         {
             e.printStackTrace();
         }
 
         verify();
     }
-       
-       
+
+
 }


Reply via email to