Author: hlship
Date: Tue May  3 21:12:52 2011
New Revision: 1099255

URL: http://svn.apache.org/viewvc?rev=1099255&view=rev
Log:
TAP5-853: Re-implement debugging-mode field write-behind

Modified:
    
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImpl.java

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImpl.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImpl.java?rev=1099255&r1=1099254&r2=1099255&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImpl.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImpl.java
 Tue May  3 21:12:52 2011
@@ -18,6 +18,7 @@ import java.util.Map;
 import java.util.Set;
 
 import org.apache.tapestry5.ComponentResources;
+import org.apache.tapestry5.SymbolConstants;
 import org.apache.tapestry5.internal.InternalComponentResources;
 import org.apache.tapestry5.internal.InternalConstants;
 import org.apache.tapestry5.internal.model.MutableComponentModelImpl;
@@ -28,6 +29,7 @@ import org.apache.tapestry5.ioc.Operatio
 import org.apache.tapestry5.ioc.Resource;
 import org.apache.tapestry5.ioc.annotations.PostInjection;
 import org.apache.tapestry5.ioc.annotations.Primary;
+import org.apache.tapestry5.ioc.annotations.Symbol;
 import org.apache.tapestry5.ioc.internal.services.ClassFactoryImpl;
 import org.apache.tapestry5.ioc.internal.services.PlasticProxyFactoryImpl;
 import org.apache.tapestry5.ioc.internal.util.ClasspathResource;
@@ -49,6 +51,8 @@ import org.apache.tapestry5.plastic.Plas
 import org.apache.tapestry5.plastic.PlasticClassListener;
 import org.apache.tapestry5.plastic.PlasticField;
 import org.apache.tapestry5.plastic.PlasticManager;
+import org.apache.tapestry5.plastic.TransformationOption;
+import org.apache.tapestry5.plastic.PlasticManager.PlasticManagerBuilder;
 import org.apache.tapestry5.plastic.PlasticManagerDelegate;
 import org.apache.tapestry5.plastic.PlasticUtils;
 import org.apache.tapestry5.runtime.Component;
@@ -85,6 +89,8 @@ public final class ComponentInstantiator
 
     private final InternalComponentInvalidationEventHub invalidationHub;
 
+    private final boolean productionMode;
+
     // These change whenever the invalidation event hub sends an invalidation 
notification
 
     private ClassFactory classFactory;
@@ -116,7 +122,12 @@ public final class ComponentInstantiator
 
     OperationTracker tracker,
 
-    Map<String, ControlledPackageType> configuration, 
InternalComponentInvalidationEventHub invalidationHub)
+    Map<String, ControlledPackageType> configuration,
+
+    @Symbol(SymbolConstants.PRODUCTION_MODE)
+    boolean productionMode,
+
+    InternalComponentInvalidationEventHub invalidationHub)
     {
         this.parent = proxyFactory.getClassLoader();
         this.transformerChain = transformerChain;
@@ -126,6 +137,7 @@ public final class ComponentInstantiator
         this.changeTracker = new URLChangeTracker(classpathURLConverter);
         this.tracker = tracker;
         this.invalidationHub = invalidationHub;
+        this.productionMode = productionMode;
 
         // For now, we just need the keys of the configuration. When there are 
more types of controlled
         // packages, we'll need to do more.
@@ -167,7 +179,15 @@ public final class ComponentInstantiator
      */
     private void initializeService()
     {
-        manager = 
PlasticManager.withClassLoader(parent).delegate(this).packages(controlledPackageNames).create();
+        PlasticManagerBuilder builder = 
PlasticManager.withClassLoader(parent).delegate(this)
+                .packages(controlledPackageNames);
+
+        if (!productionMode)
+        {
+            builder.enable(TransformationOption.FIELD_WRITEBEHIND);
+        }
+
+        manager = builder.create();
 
         manager.addPlasticClassListener(this);
 


Reply via email to