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