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