Author: hlship
Date: Tue Dec 27 08:32:05 2005
New Revision: 359237

URL: http://svn.apache.org/viewcvs?rev=359237&view=rev
Log:
TAPESTRY-815: PageAttachListener not called on initial page load

Modified:
    
jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/AbstractPage.java
    
jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/IPage.java
    
jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/pageload/PageLoader.java
    
jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/pageload/PageSource.java
    jakarta/tapestry/branches/4.0/status.xml

Modified: 
jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/AbstractPage.java
URL: 
http://svn.apache.org/viewcvs/jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/AbstractPage.java?rev=359237&r1=359236&r2=359237&view=diff
==============================================================================
--- 
jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/AbstractPage.java
 (original)
+++ 
jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/AbstractPage.java
 Tue Dec 27 08:32:05 2005
@@ -406,7 +406,7 @@
      * @since 4.0
      */
 
-    protected void firePageAttached()
+    public void firePageAttached()
     {
         if (_listenerList == null)
             return;

Modified: 
jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/IPage.java
URL: 
http://svn.apache.org/viewcvs/jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/IPage.java?rev=359237&r1=359236&r2=359237&view=diff
==============================================================================
--- 
jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/IPage.java 
(original)
+++ 
jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/IPage.java 
Tue Dec 27 08:32:05 2005
@@ -16,6 +16,7 @@
 
 import java.util.Locale;
 
+import org.apache.hivemind.ApplicationRuntimeException;
 import org.apache.tapestry.event.ChangeObserver;
 import org.apache.tapestry.event.PageAttachListener;
 import org.apache.tapestry.event.PageBeginRenderListener;
@@ -117,6 +118,18 @@
      */
 
     public void attach(IEngine engine, IRequestCycle cycle);
+
+    /**
+     * Used to explicitly fire [EMAIL PROTECTED] PageAttachListener}s for this 
page. This is used when a page
+     * is first loaded; The page loader attaches the newly created page 
<em>instance</em> before
+     * the rest of the page and components is loaded. In order to have 
meaningful event
+     * notifications when a page is first loaded (rather than pulled from the 
pool), it is necessary
+     * to fire page attach listeners at the end of the load.
+     * 
+     * @since 4.0
+     */
+
+    public void firePageAttached();
 
     /**
      * Invoked to render the entire page. This should only be invoked by

Modified: 
jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/pageload/PageLoader.java
URL: 
http://svn.apache.org/viewcvs/jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/pageload/PageLoader.java?rev=359237&r1=359236&r2=359237&view=diff
==============================================================================
--- 
jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/pageload/PageLoader.java
 (original)
+++ 
jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/pageload/PageLoader.java
 Tue Dec 27 08:32:05 2005
@@ -622,6 +622,12 @@
             // Walk through the complete component tree to ensure that required
             // parameters are bound
             _verifyRequiredParametersWalker.walkComponentTree(page);
+
+            // Now that the page has been properly constructed, the page
+            // or any components on the page will have been registered as
+            // page attach listeners.
+
+            page.firePageAttached();
         }
         finally
         {

Modified: 
jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/pageload/PageSource.java
URL: 
http://svn.apache.org/viewcvs/jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/pageload/PageSource.java?rev=359237&r1=359236&r2=359237&view=diff
==============================================================================
--- 
jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/pageload/PageSource.java
 (original)
+++ 
jakarta/tapestry/branches/4.0/framework/src/java/org/apache/tapestry/pageload/PageSource.java
 Tue Dec 27 08:32:05 2005
@@ -114,7 +114,8 @@
 
             _pageSpecificationResolver.resolve(cycle, pageName);
 
-            // The loader is responsible for invoking attach()
+            // The loader is responsible for invoking attach(),
+            // and for firing events to PageAttachListeners
 
             result = _loader.loadPage(
                     _pageSpecificationResolver.getSimplePageName(),
@@ -126,7 +127,8 @@
         }
         else
         {
-            // But for pooled pages, we are responsible
+            // But for pooled pages, we are responsible.
+            // This call will also fire events to any PageAttachListeners
 
             result.attach(engine, cycle);
         }

Modified: jakarta/tapestry/branches/4.0/status.xml
URL: 
http://svn.apache.org/viewcvs/jakarta/tapestry/branches/4.0/status.xml?rev=359237&r1=359236&r2=359237&view=diff
==============================================================================
--- jakarta/tapestry/branches/4.0/status.xml (original)
+++ jakarta/tapestry/branches/4.0/status.xml Tue Dec 27 08:32:05 2005
@@ -54,6 +54,9 @@
     -->
   </todo>
   <changes>
+    <release version="4.0-rc-3" date="unreleased">
+      <action type="fix" dev="HLS" fixes-bug="TAPESTRY-815">PageAttachListener 
not called on initial page load</action>
+    </release>
     <release version="4.0-rc-2" date="unreleased">
       <action type="fix" dev="HLS" 
fixes-bug="TAPESTRY-789">DefaultResourceLocalizerTest is under framework/src 
not framework/test</action>
       <action type="fix" dev="HLS" fixes-bug="TAPESTRY-658" due-to="Leonardo 
Quijano Vincenzi">LabeledPropertySelectionModel throws NPE on null 
value</action>



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to