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