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


Reply via email to