You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by hl...@apache.org on 2011/04/30 00:55:43 UTC

svn commit: r1097998 - in /tapestry/tapestry5/trunk: plastic/src/main/java/org/apache/tapestry5/internal/plastic/ plastic/src/main/java/org/apache/tapestry5/plastic/ plastic/src/test/groovy/org/apache/tapestry5/plastic/ tapestry-core/src/main/java/org/...

Author: hlship
Date: Fri Apr 29 22:55:43 2011
New Revision: 1097998

URL: http://svn.apache.org/viewvc?rev=1097998&view=rev
Log:
TAP5-853: Change FieldConduit to pass the object instance as well as the InstanceContext to get() and set()

Modified:
    tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticClassImpl.java
    tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/plastic/FieldConduit.java
    tapestry/tapestry5/trunk/plastic/src/test/groovy/org/apache/tapestry5/plastic/FieldConduitTests.groovy
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/BridgeClassTransformation.java

Modified: tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticClassImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticClassImpl.java?rev=1097998&r1=1097997&r2=1097998&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticClassImpl.java (original)
+++ tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticClassImpl.java Fri Apr 29 22:55:43 2011
@@ -795,6 +795,9 @@ public class PlasticClassImpl extends Lo
             InstructionBuilder builder = newBuilder(mn);
 
             pushFieldConduitOntoStack(conduitFieldName, builder);
+
+            builder.loadThis();
+
             pushInstanceContextFieldOntoStack(builder);
 
             // Take the value passed to this method and push it onto the stack.
@@ -802,7 +805,7 @@ public class PlasticClassImpl extends Lo
             builder.loadArgument(0);
             builder.boxPrimitive(typeName);
 
-            builder.invoke(FieldConduit.class, void.class, "set", InstanceContext.class, Object.class);
+            builder.invoke(FieldConduit.class, void.class, "set", Object.class, InstanceContext.class, Object.class);
 
             builder.returnResult();
 
@@ -823,11 +826,14 @@ public class PlasticClassImpl extends Lo
 
             pushFieldConduitOntoStack(conduitFieldName, builder);
 
+            builder.loadThis();
+
             // Now push the instance context on the stack
 
             pushInstanceContextFieldOntoStack(builder);
 
-            builder.invoke(FieldConduit.class, Object.class, "get", InstanceContext.class).castOrUnbox(typeName);
+            builder.invoke(FieldConduit.class, Object.class, "get", Object.class, InstanceContext.class).castOrUnbox(
+                    typeName);
 
             builder.returnResult();
 

Modified: tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/plastic/FieldConduit.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/plastic/FieldConduit.java?rev=1097998&r1=1097997&r2=1097998&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/plastic/FieldConduit.java (original)
+++ tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/plastic/FieldConduit.java Fri Apr 29 22:55:43 2011
@@ -29,18 +29,22 @@ public interface FieldConduit<T>
     /**
      * Invoked when the field is read.
      * 
+     * @param instance
+     *            the instance containing the field
      * @param context
      *            (see {@link ClassInstantiator#with(Class, Object)})
      */
-    T get(InstanceContext context);
+    T get(Object instance, InstanceContext context);
 
     /**
      * Invoked when the field's value is updated.
      * 
+     * @param instance
+     *            the instance containing the field
      * @param context
      *            (see {@link ClassInstantiator#with(Class, Object)})
      * @param newValue
      *            value assigned to the field
      */
-    void set(InstanceContext context, T newValue);
+    void set(Object instance, InstanceContext context, T newValue);
 }

Modified: tapestry/tapestry5/trunk/plastic/src/test/groovy/org/apache/tapestry5/plastic/FieldConduitTests.groovy
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/plastic/src/test/groovy/org/apache/tapestry5/plastic/FieldConduitTests.groovy?rev=1097998&r1=1097997&r2=1097998&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/plastic/src/test/groovy/org/apache/tapestry5/plastic/FieldConduitTests.groovy (original)
+++ tapestry/tapestry5/trunk/plastic/src/test/groovy/org/apache/tapestry5/plastic/FieldConduitTests.groovy Fri Apr 29 22:55:43 2011
@@ -39,10 +39,10 @@ class FieldConduitTests extends Specific
 
         then:
 
-        1 * fc.set(_, 123)
+        1 * fc.set(_, _, 123)
 
         when:
-        fc.get(_) >>> 999
+        fc.get(_, _) >>> 999
 
         then:
 
@@ -71,7 +71,7 @@ class FieldConduitTests extends Specific
 
         then:
 
-        1 * fc.set(_, 456)
+        1 * fc.set(_, _, 456)
     }
 
     def "field initializations are visible to the conduit"() {
@@ -89,6 +89,6 @@ class FieldConduitTests extends Specific
 
         // 100 is the initial value of the field
 
-        1 * fc.set(_, 100)
+        1 * fc.set(_, _, 100)
     }
 }

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/BridgeClassTransformation.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/BridgeClassTransformation.java?rev=1097998&r1=1097997&r2=1097998&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/BridgeClassTransformation.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/BridgeClassTransformation.java Fri Apr 29 22:55:43 2011
@@ -87,12 +87,12 @@ public class BridgeClassTransformation i
     {
         return new FieldConduit<Object>()
         {
-            public Object get(InstanceContext context)
+            public Object get(Object instance, InstanceContext context)
             {
                 return fieldValueConduit.get();
             }
 
-            public void set(InstanceContext context, Object newValue)
+            public void set(Object instance, InstanceContext context, Object newValue)
             {
                 fieldValueConduit.set(newValue);
             }
@@ -174,12 +174,12 @@ public class BridgeClassTransformation i
         {
             plasticField.setConduit(new FieldConduit()
             {
-                public Object get(InstanceContext context)
+                public Object get(Object instance, InstanceContext context)
                 {
                     return conduit.get();
                 }
 
-                public void set(InstanceContext context, Object newValue)
+                public void set(Object instance, InstanceContext context, Object newValue)
                 {
                     conduit.set(newValue);
                 }