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:17 UTC

svn commit: r1097991 - /tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/BridgeClassTransformation.java

Author: hlship
Date: Fri Apr 29 22:55:16 2011
New Revision: 1097991

URL: http://svn.apache.org/viewvc?rev=1097991&view=rev
Log:
TAP5-853: Reimplement replaceAccess()

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=1097991&r1=1097990&r2=1097991&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:16 2011
@@ -24,7 +24,6 @@ import org.apache.tapestry5.func.Predica
 import org.apache.tapestry5.internal.plastic.PlasticInternalUtils;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
 import org.apache.tapestry5.ioc.services.FieldValueConduit;
-import org.apache.tapestry5.ioc.services.MethodSignature;
 import org.apache.tapestry5.model.MutableComponentModel;
 import org.apache.tapestry5.plastic.ComputedValue;
 import org.apache.tapestry5.plastic.FieldConduit;
@@ -84,6 +83,22 @@ public class BridgeClassTransformation i
         };
     }
 
+    private static FieldConduit<?> toFieldConduit(final FieldValueConduit fieldValueConduit)
+    {
+        return new FieldConduit<Object>()
+        {
+            public Object get(InstanceContext context)
+            {
+                return fieldValueConduit.get();
+            }
+
+            public void set(InstanceContext context, Object newValue)
+            {
+                fieldValueConduit.set(newValue);
+            }
+        };
+    }
+
     private static TransformMethodSignature toMethodSignature(MethodDescription description)
     {
         return new TransformMethodSignature(description.modifiers, description.returnType, description.methodName,
@@ -131,7 +146,17 @@ public class BridgeClassTransformation i
 
         public void replaceAccess(final ComponentValueProvider<FieldValueConduit> conduitProvider)
         {
-            throw new IllegalStateException("replaceAccess() not yet implemented.");
+            plasticField.setComputedConduit(new ComputedValue<FieldConduit<?>>()
+            {
+                public FieldConduit<?> get(InstanceContext context)
+                {
+                    ComponentResources resources = context.get(ComponentResources.class);
+
+                    FieldValueConduit fieldValueConduit = conduitProvider.get(resources);
+
+                    return toFieldConduit(fieldValueConduit);
+                }
+            });
         }
 
         public void replaceAccess(TransformField conduitField)