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