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