Repository: tapestry-5
Updated Branches:
  refs/heads/master 8725d0e47 -> f1d82ccf1


TAP5-2446: Use ObjectCreator instead of PerThreadValue when appropriate


Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/f1d82ccf
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/f1d82ccf
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/f1d82ccf

Branch: refs/heads/master
Commit: f1d82ccf14b5c063639b1706c1866efac26a6a82
Parents: 8725d0e
Author: Michael Mikhulya <[email protected]>
Authored: Fri Jan 30 17:47:25 2015 +0300
Committer: Jochen Kemnade <[email protected]>
Committed: Tue Feb 24 16:42:21 2015 +0100

----------------------------------------------------------------------
 .../tapestry5/internal/structure/PageImpl.java   | 19 ++++++++++---------
 .../internal/transform/InjectPageWorker.java     | 16 ++++++++--------
 2 files changed, 18 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/f1d82ccf/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/PageImpl.java
----------------------------------------------------------------------
diff --git 
a/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/PageImpl.java
 
b/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/PageImpl.java
index a967049..6b9a90f 100644
--- 
a/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/PageImpl.java
+++ 
b/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/PageImpl.java
@@ -19,7 +19,7 @@ import org.apache.tapestry5.MetaDataConstants;
 import org.apache.tapestry5.internal.services.PersistentFieldManager;
 import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.OneShotLock;
-import org.apache.tapestry5.ioc.services.PerThreadValue;
+import org.apache.tapestry5.ioc.ObjectCreator;
 import org.apache.tapestry5.ioc.services.PerthreadManager;
 import org.apache.tapestry5.ioc.util.ExceptionUtils;
 import org.apache.tapestry5.runtime.Component;
@@ -75,7 +75,7 @@ public class PageImpl implements Page
      * first needed,
      * discarded at the end of the request.
      */
-    private final PerThreadValue<PersistentFieldBundle> fieldBundle;
+    private final ObjectCreator<PersistentFieldBundle> fieldBundle;
 
     private static final Pattern SPLIT_ON_DOT = Pattern.compile("\\.");
 
@@ -96,7 +96,13 @@ public class PageImpl implements Page
         this.selector = selector;
         this.persistentFieldManager = persistentFieldManager;
 
-        fieldBundle = perThreadManager.createValue();
+        fieldBundle = perThreadManager.createValue(new 
ObjectCreator<PersistentFieldBundle>() {
+            @Override
+            public PersistentFieldBundle createObject() {
+                return 
PageImpl.this.persistentFieldManager.gatherChanges(PageImpl.this.name);
+            }
+        });
+
 
         exactParameterCountMatch = 
metaDataLocator.findMeta(MetaDataConstants.UNKNOWN_ACTIVATION_CONTEXT_CHECK, 
name, Boolean.class);
     }
@@ -262,12 +268,7 @@ public class PageImpl implements Page
 
     public Object getFieldChange(String nestedId, String fieldName)
     {
-        if (!fieldBundle.exists())
-        {
-            fieldBundle.set(persistentFieldManager.gatherChanges(name));
-        }
-
-        return fieldBundle.get().getValue(nestedId, fieldName);
+        return fieldBundle.createObject().getValue(nestedId, fieldName);
     }
 
     public void discardPersistentFieldChanges()

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/f1d82ccf/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectPageWorker.java
----------------------------------------------------------------------
diff --git 
a/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectPageWorker.java
 
b/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectPageWorker.java
index 7f997c8..57b0609 100644
--- 
a/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectPageWorker.java
+++ 
b/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectPageWorker.java
@@ -16,7 +16,7 @@ package org.apache.tapestry5.internal.transform;
 
 import org.apache.tapestry5.annotations.InjectPage;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.PerThreadValue;
+import org.apache.tapestry5.ioc.ObjectCreator;
 import org.apache.tapestry5.ioc.services.PerthreadManager;
 import org.apache.tapestry5.model.MutableComponentModel;
 import org.apache.tapestry5.plastic.InstanceContext;
@@ -38,7 +38,12 @@ public class InjectPageWorker implements 
ComponentClassTransformWorker2
     {
         private final String injectedPageName;
 
-        private final PerThreadValue<Object> pageValue = 
perThreadManager.createValue();
+        private final ObjectCreator<Object> pageValue = 
perThreadManager.createValue(new ObjectCreator<Object>() {
+            @Override
+            public Object createObject() {
+                return componentSource.getPage(injectedPageName);
+            }
+        });
 
         private InjectedPageConduit(String className, String fieldName,
                                     String injectedPageName)
@@ -50,12 +55,7 @@ public class InjectPageWorker implements 
ComponentClassTransformWorker2
 
         public Object get(Object instance, InstanceContext context)
         {
-            if (!pageValue.exists())
-            {
-                pageValue.set(componentSource.getPage(injectedPageName));
-            }
-
-            return pageValue.get();
+            return pageValue.createObject();
         }
     }
 

Reply via email to