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 2010/07/11 21:06:05 UTC
svn commit: r963129 -
/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/PersistWorker.java
Author: hlship
Date: Sun Jul 11 19:06:04 2010
New Revision: 963129
URL: http://svn.apache.org/viewvc?rev=963129&view=rev
Log:
TAP5-1197: Make use of PerThreadValue inside PersistWorker
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/PersistWorker.java
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/PersistWorker.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/PersistWorker.java?rev=963129&r1=963128&r2=963129&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/PersistWorker.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/PersistWorker.java Sun Jul 11 19:06:04 2010
@@ -21,6 +21,7 @@ import org.apache.tapestry5.annotations.
import org.apache.tapestry5.internal.InternalComponentResources;
import org.apache.tapestry5.internal.services.ComponentClassCache;
import org.apache.tapestry5.ioc.services.FieldValueConduit;
+import org.apache.tapestry5.ioc.services.PerThreadValue;
import org.apache.tapestry5.ioc.services.PerthreadManager;
import org.apache.tapestry5.model.MutableComponentModel;
import org.apache.tapestry5.runtime.PageLifecycleAdapter;
@@ -40,18 +41,18 @@ public class PersistWorker implements Co
private final String name;
- private final Object defaultValue;
+ private final PerThreadValue<Object> fieldValue;
- private final String key;
+ private final Object defaultValue;
- public PersistentFieldConduit(InternalComponentResources resources, String name, Object defaultValue)
+ public PersistentFieldConduit(InternalComponentResources resources, String name,
+ PerThreadValue<Object> fieldValue, Object defaultValue)
{
this.resources = resources;
this.name = name;
+ this.fieldValue = fieldValue;
this.defaultValue = defaultValue;
- this.key = String.format("PersistWorker:%s/%s", resources.getCompleteId(), name);
-
resources.addPageLifecycleListener(new PageLifecycleAdapter()
{
@Override
@@ -62,35 +63,25 @@ public class PersistWorker implements Co
});
}
- private PerThreadState getState()
- {
- PerThreadState state = (PerThreadState) perThreadManager.get(key);
-
- if (state == null)
- {
- state = new PerThreadState(defaultValue);
- perThreadManager.put(key, state);
- }
-
- return state;
- }
-
public Object get()
{
- return getState().value;
+ if (!fieldValue.exists())
+ return defaultValue;
+
+ return fieldValue.get();
}
public void set(Object newValue)
{
resources.persistFieldChange(name, newValue);
- getState().value = newValue;
+ fieldValue.set(newValue);
}
private void restoreStateAtPageAttach()
{
if (resources.hasFieldChange(name))
- getState().value = resources.getFieldChange(name);
+ fieldValue.set(resources.getFieldChange(name));
}
}
@@ -128,8 +119,10 @@ public class PersistWorker implements Co
{
public FieldValueConduit get(ComponentResources resources)
{
+ String key = String.format("PersistWorker:%s/%s", resources.getCompleteId(), logicalFieldName);
+
return new PersistentFieldConduit((InternalComponentResources) resources, logicalFieldName,
- defaultValue);
+ perThreadManager.createValue(key), defaultValue);
}
};