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/15 02:04:56 UTC
svn commit: r964264 - in /tapestry/tapestry5/trunk/tapestry-core/src:
main/java/org/apache/tapestry5/internal/pageload/
main/java/org/apache/tapestry5/internal/structure/
test/java/org/apache/tapestry5/internal/structure/
Author: hlship
Date: Thu Jul 15 00:04:56 2010
New Revision: 964264
URL: http://svn.apache.org/viewvc?rev=964264&view=rev
Log:
TAP5-1197: Only track the page's dirty count in when the page pool is enabled (it is meaningless in the non-pooling mode)
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageLoaderImpl.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/PageImpl.java
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/structure/PageImplTest.java
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageLoaderImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageLoaderImpl.java?rev=964264&r1=964263&r2=964264&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageLoaderImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageLoaderImpl.java Thu Jul 15 00:04:56 2010
@@ -18,6 +18,7 @@ import org.apache.tapestry5.Binding;
import org.apache.tapestry5.BindingConstants;
import org.apache.tapestry5.ComponentResources;
import org.apache.tapestry5.MarkupWriter;
+import org.apache.tapestry5.SymbolConstants;
import org.apache.tapestry5.internal.InternalComponentResources;
import org.apache.tapestry5.internal.InternalConstants;
import org.apache.tapestry5.internal.bindings.LiteralBinding;
@@ -27,6 +28,7 @@ import org.apache.tapestry5.internal.str
import org.apache.tapestry5.ioc.Invokable;
import org.apache.tapestry5.ioc.Location;
import org.apache.tapestry5.ioc.OperationTracker;
+import org.apache.tapestry5.ioc.annotations.Symbol;
import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
import org.apache.tapestry5.ioc.internal.util.InternalUtils;
import org.apache.tapestry5.ioc.internal.util.TapestryException;
@@ -138,10 +140,14 @@ public class PageLoaderImpl implements P
private final PerthreadManager perThreadManager;
+ private final boolean poolingEnabled;
+
public PageLoaderImpl(ComponentInstantiatorSource instantiatorSource, ComponentTemplateSource templateSource,
PageElementFactory elementFactory, ComponentPageElementResourcesSource resourcesSource,
ComponentClassResolver componentClassResolver, PersistentFieldManager persistentFieldManager,
- StringInterner interner, OperationTracker tracker, PerthreadManager perThreadManager)
+ StringInterner interner, OperationTracker tracker, PerthreadManager perThreadManager,
+ @Symbol(SymbolConstants.PAGE_POOL_ENABLED)
+ boolean poolingEnabled)
{
this.instantiatorSource = instantiatorSource;
this.templateSource = templateSource;
@@ -152,6 +158,7 @@ public class PageLoaderImpl implements P
this.interner = interner;
this.tracker = tracker;
this.perThreadManager = perThreadManager;
+ this.poolingEnabled = poolingEnabled;
}
public void objectWasInvalidated()
@@ -167,7 +174,8 @@ public class PageLoaderImpl implements P
{
public Page invoke()
{
- Page page = new PageImpl(logicalPageName, locale, persistentFieldManager, perThreadManager);
+ Page page = new PageImpl(logicalPageName, locale, persistentFieldManager, perThreadManager,
+ poolingEnabled);
ComponentAssembler assembler = getAssembler(pageClassName, locale);
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/PageImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/PageImpl.java?rev=964264&r1=964263&r2=964264&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/PageImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/PageImpl.java Thu Jul 15 00:04:56 2010
@@ -65,15 +65,25 @@ public class PageImpl implements Page
* for access to cross-request persistent values
* @param perThreadManager
* for managing per-request mutable state
+ * @param pooled
+ * if pooling enabled, or is this page a singleton
*/
public PageImpl(String name, Locale locale, PersistentFieldManager persistentFieldManager,
- PerthreadManager perThreadManager)
+ PerthreadManager perThreadManager, boolean pooled)
{
this.name = name;
this.locale = locale;
this.persistentFieldManager = persistentFieldManager;
- dirtyCount = perThreadManager.createValue("PageDirtyCount:" + name);
+ if (pooled)
+ {
+ dirtyCount = perThreadManager.createValue("PageDirtyCount:" + name);
+ }
+ else
+ {
+ dirtyCount = null;
+ }
+
fieldBundle = perThreadManager.createValue("PersistentFieldBundle:" + name);
}
@@ -135,7 +145,7 @@ public class PageImpl implements Page
public boolean detached()
{
- boolean result = dirtyCount.exists() ? dirtyCount.get() > 0 : false;
+ boolean result = dirtyCount != null && dirtyCount.exists() && dirtyCount.get() > 0;
for (PageLifecycleListener listener : lifecycleListeners)
{
@@ -167,7 +177,7 @@ public class PageImpl implements Page
public void attached()
{
- if (dirtyCount.exists() && !dirtyCount.get().equals(0))
+ if (dirtyCount != null && dirtyCount.exists() && !dirtyCount.get().equals(0))
throw new IllegalStateException(StructureMessages.pageIsDirty(this));
for (PageLifecycleListener listener : lifecycleListeners)
@@ -200,9 +210,12 @@ public class PageImpl implements Page
public void decrementDirtyCount()
{
- int newCount = dirtyCount.get() - 1;
+ if (dirtyCount != null)
+ {
+ int newCount = dirtyCount.get() - 1;
- dirtyCount.set(newCount);
+ dirtyCount.set(newCount);
+ }
}
public void discardPersistentFieldChanges()
@@ -212,9 +225,12 @@ public class PageImpl implements Page
public void incrementDirtyCount()
{
- int newCount = dirtyCount.exists() ? dirtyCount.get() + 1 : 1;
+ if (dirtyCount != null)
+ {
+ int newCount = dirtyCount.exists() ? dirtyCount.get() + 1 : 1;
- dirtyCount.set(newCount);
+ dirtyCount.set(newCount);
+ }
}
public String getName()
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/structure/PageImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/structure/PageImplTest.java?rev=964264&r1=964263&r2=964264&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/structure/PageImplTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/structure/PageImplTest.java Thu Jul 15 00:04:56 2010
@@ -53,7 +53,7 @@ public class PageImplTest extends Intern
replay();
- Page page = new PageImpl(LOGICAL_PAGE_NAME, locale, null, perThreadManager);
+ Page page = new PageImpl(LOGICAL_PAGE_NAME, locale, null, perThreadManager, true);
assertNull(page.getRootElement());
@@ -77,7 +77,7 @@ public class PageImplTest extends Intern
replay();
- Page page = new PageImpl(null, locale, null, perThreadManager);
+ Page page = new PageImpl(null, locale, null, perThreadManager, true);
page.addLifecycleListener(listener1);
page.addLifecycleListener(listener2);
@@ -99,7 +99,7 @@ public class PageImplTest extends Intern
replay();
- Page page = new PageImpl(null, locale, null, perThreadManager);
+ Page page = new PageImpl(null, locale, null, perThreadManager, true);
page.addLifecycleListener(listener);
@@ -133,7 +133,7 @@ public class PageImplTest extends Intern
replay();
- Page page = new PageImpl(null, locale, null, perThreadManager);
+ Page page = new PageImpl(null, locale, null, perThreadManager, true);
page.setRootElement(element);
page.addLifecycleListener(listener1);
@@ -163,7 +163,7 @@ public class PageImplTest extends Intern
replay();
- Page page = new PageImpl(null, locale, null, perThreadManager);
+ Page page = new PageImpl(null, locale, null, perThreadManager, true);
page.addLifecycleListener(listener1);
page.addLifecycleListener(listener2);
@@ -189,7 +189,7 @@ public class PageImplTest extends Intern
replay();
- Page page = new PageImpl(LOGICAL_PAGE_NAME, locale, null, perThreadManager);
+ Page page = new PageImpl(LOGICAL_PAGE_NAME, locale, null, perThreadManager, true);
page.addLifecycleListener(listener1);
page.addLifecycleListener(listener2);
@@ -206,7 +206,7 @@ public class PageImplTest extends Intern
replay();
- Page page = new PageImpl(LOGICAL_PAGE_NAME, locale, null, perThreadManager);
+ Page page = new PageImpl(LOGICAL_PAGE_NAME, locale, null, perThreadManager, true);
page.setRootElement(root);