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 2011/12/23 19:54:49 UTC
svn commit: r1222789 - in /tapestry/tapestry5/trunk/plastic/src/test:
groovy/org/apache/tapestry5/plastic/FieldAccessTests.groovy
java/testsubjects/ProtectedField.java
java/testsubjects/ProtectedFieldCollaborator.java
Author: hlship
Date: Fri Dec 23 18:54:49 2011
New Revision: 1222789
URL: http://svn.apache.org/viewvc?rev=1222789&view=rev
Log:
TAP5-1801: Allow non-public fields in instrumented classes
Add a test for cross-class field access
Added:
tapestry/tapestry5/trunk/plastic/src/test/groovy/org/apache/tapestry5/plastic/FieldAccessTests.groovy
tapestry/tapestry5/trunk/plastic/src/test/java/testsubjects/ProtectedField.java
tapestry/tapestry5/trunk/plastic/src/test/java/testsubjects/ProtectedFieldCollaborator.java
Added: tapestry/tapestry5/trunk/plastic/src/test/groovy/org/apache/tapestry5/plastic/FieldAccessTests.groovy
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/plastic/src/test/groovy/org/apache/tapestry5/plastic/FieldAccessTests.groovy?rev=1222789&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/plastic/src/test/groovy/org/apache/tapestry5/plastic/FieldAccessTests.groovy (added)
+++ tapestry/tapestry5/trunk/plastic/src/test/groovy/org/apache/tapestry5/plastic/FieldAccessTests.groovy Fri Dec 23 18:54:49 2011
@@ -0,0 +1,41 @@
+package org.apache.tapestry5.plastic
+
+/**
+ * Tests related to access to non-private fields between transformed classes (a new feature in 5.4).
+ */
+class FieldAccessTests extends AbstractPlasticSpecification
+{
+ def "access protected field from other transformed class"()
+ {
+ FieldConduit fc = Mock()
+
+ PlasticClass pc = mgr.getPlasticClass("testsubjects.ProtectedField")
+
+ pc.allFields.first().setConduit(fc)
+
+ def delegate = pc.createInstantiator().newInstance()
+
+ pc = mgr.getPlasticClass("testsubjects.ProtectedFieldCollaborator")
+
+ pc.allFields.first().inject(delegate)
+
+ def collab = pc.createInstantiator().newInstance()
+
+ when:
+
+ collab.setProtectedValue("gloop")
+
+ then:
+
+ 1 * fc.set(_, _, "gloop")
+
+
+ when:
+
+ fc.get(_, _) >> "badoop"
+
+ then:
+
+ collab.getProtectedValue() == "badoop"
+ }
+}
Added: tapestry/tapestry5/trunk/plastic/src/test/java/testsubjects/ProtectedField.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/plastic/src/test/java/testsubjects/ProtectedField.java?rev=1222789&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/plastic/src/test/java/testsubjects/ProtectedField.java (added)
+++ tapestry/tapestry5/trunk/plastic/src/test/java/testsubjects/ProtectedField.java Fri Dec 23 18:54:49 2011
@@ -0,0 +1,9 @@
+package testsubjects;
+
+/**
+ * Used to test access to protected fields. Accessed from {@link ProtectedFieldCollaborator}.
+ */
+public class ProtectedField
+{
+ protected String protectedValue;
+}
Added: tapestry/tapestry5/trunk/plastic/src/test/java/testsubjects/ProtectedFieldCollaborator.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/plastic/src/test/java/testsubjects/ProtectedFieldCollaborator.java?rev=1222789&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/plastic/src/test/java/testsubjects/ProtectedFieldCollaborator.java (added)
+++ tapestry/tapestry5/trunk/plastic/src/test/java/testsubjects/ProtectedFieldCollaborator.java Fri Dec 23 18:54:49 2011
@@ -0,0 +1,16 @@
+package testsubjects;
+
+public class ProtectedFieldCollaborator
+{
+ private ProtectedField delegate;
+
+ public String getProtectedValue()
+ {
+ return delegate.protectedValue;
+ }
+
+ public void setProtectedValue(String newValue)
+ {
+ delegate.protectedValue = newValue;
+ }
+}