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/04/30 00:55:47 UTC
svn commit: r1097999 -
/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/BridgeClassTransformation.java
Author: hlship
Date: Fri Apr 29 22:55:46 2011
New Revision: 1097999
URL: http://svn.apache.org/viewvc?rev=1097999&view=rev
Log:
TAP5-853: Reimplement replaceAccess(TransformField) in terms of the revised FieldConduit interface (which exposes the object instance)
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/BridgeClassTransformation.java
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=1097999&r1=1097998&r2=1097999&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:46 2011
@@ -165,9 +165,34 @@ public class BridgeClassTransformation i
});
}
+ /**
+ * We assume that the conduit field contains a {@link FieldValueConduit}, and that the field
+ * was introduced through this instance of BridgeClassTransformation.
+ */
public void replaceAccess(TransformField conduitField)
{
- throw new IllegalStateException("replaceAccess() not yet implemented.");
+ // Ugly:
+ PlasticField conduitFieldPlastic = ((BridgeTransformField) conduitField).plasticField;
+
+ final FieldHandle conduitHandle = conduitFieldPlastic.getHandle();
+
+ plasticField.setConduit(new FieldConduit<Object>()
+ {
+ private FieldValueConduit conduit(Object instance)
+ {
+ return (FieldValueConduit) conduitHandle.get(instance);
+ }
+
+ public Object get(Object instance, InstanceContext context)
+ {
+ return conduit(instance).get();
+ }
+
+ public void set(Object instance, InstanceContext context, Object newValue)
+ {
+ conduit(instance).set(newValue);
+ }
+ });
}
public void replaceAccess(final FieldValueConduit conduit)