Author: craigmcc
Date: Sat Aug 12 18:23:00 2006
New Revision: 431128

URL: http://svn.apache.org/viewvc?rev=431128&view=rev
Log:
Correct the initialization and delegation from LifecycleListener to
LifecycleListener2.  In particular, ensure that the contextInitialized()
method delegates, so that the Tiger version of ViewControllerCallbacks
is registered.

SHALE-254

Modified:
    
shale/framework/trunk/shale-core/src/main/java/org/apache/shale/view/faces/LifecycleListener.java
    
shale/framework/trunk/shale-tiger/src/main/java/org/apache/shale/tiger/view/faces/LifecycleListener2.java

Modified: 
shale/framework/trunk/shale-core/src/main/java/org/apache/shale/view/faces/LifecycleListener.java
URL: 
http://svn.apache.org/viewvc/shale/framework/trunk/shale-core/src/main/java/org/apache/shale/view/faces/LifecycleListener.java?rev=431128&r1=431127&r2=431128&view=diff
==============================================================================
--- 
shale/framework/trunk/shale-core/src/main/java/org/apache/shale/view/faces/LifecycleListener.java
 (original)
+++ 
shale/framework/trunk/shale-core/src/main/java/org/apache/shale/view/faces/LifecycleListener.java
 Sat Aug 12 18:23:00 2006
@@ -130,7 +130,11 @@
      */
     public void contextInitialized(ServletContextEvent event) {
 
-        // No processing is required
+        // Delegate to the Tiger Extensions instance if it exists
+        LifecycleListener tiger = tiger();
+        if (tiger != null) {
+            tiger.contextInitialized(event);
+        }
 
     }
 
@@ -144,6 +148,12 @@
      */
     public void contextDestroyed(ServletContextEvent event) {
 
+        // Delegate to the Tiger Extensions instance if it exists
+        LifecycleListener tiger = tiger();
+        if (tiger != null) {
+            tiger.contextDestroyed(event);
+        }
+
         // Remove any AbstractApplicationBean attributes, which will
         // trigger an attributeRemoved event
         List list = new ArrayList();
@@ -177,7 +187,7 @@
         LifecycleListener tiger = tiger();
         if (tiger != null) {
             tiger.attributeAdded(event);
-            return;
+            return; // Tiger logic replaces our own
         }
 
         // If the new value is an AbstractApplicationBean, notify it
@@ -204,7 +214,7 @@
         LifecycleListener tiger = tiger();
         if (tiger != null) {
             tiger.attributeReplaced(event);
-            return;
+            return; // Tiger logic replaces our own
         }
 
         // If the old value is an AbstractApplicationBean, notify it
@@ -235,7 +245,7 @@
         LifecycleListener tiger = tiger();
         if (tiger != null) {
             tiger.attributeRemoved(event);
-            return;
+            return; // Tiger logic replaces our own
         }
 
         // If the old value is an AbstractApplicationBean, notify it
@@ -258,7 +268,11 @@
      */
     public void sessionCreated(HttpSessionEvent event) {
 
-        // No processing is required
+        // Delegate to the Tiger Extensions instance if it exists
+        LifecycleListener tiger = tiger();
+        if (tiger != null) {
+            tiger.sessionCreated(event);
+        }
 
     }
 
@@ -272,6 +286,12 @@
      */
     public void sessionDestroyed(HttpSessionEvent event) {
 
+        // Delegate to the Tiger Extensions instance if it exists
+        LifecycleListener tiger = tiger();
+        if (tiger != null) {
+            tiger.sessionDestroyed(event);
+        }
+
         // Remove any AbstractSessionBean attributes, which will
         // trigger an attributeRemoved event
         List list = new ArrayList();
@@ -312,7 +332,7 @@
         LifecycleListener tiger = tiger();
         if (tiger != null) {
             tiger.sessionWillPassivate(event);
-            return;
+            return; // Tiger logic replaces our own
         }
 
         // Notify any AbstractSessionBean attributes
@@ -340,7 +360,7 @@
         LifecycleListener tiger = tiger();
         if (tiger != null) {
             tiger.sessionDidActivate(event);
-            return;
+            return; // Tiger logic replaces our own
         }
 
         // Notify any AbstractSessionBean attributes
@@ -372,7 +392,7 @@
         LifecycleListener tiger = tiger();
         if (tiger != null) {
             tiger.attributeAdded(event);
-            return;
+            return; // Tiger logic replaces our own
         }
 
         // If the new value is an AbstractSessionBean, notify it
@@ -399,7 +419,7 @@
         LifecycleListener tiger = tiger();
         if (tiger != null) {
             tiger.attributeReplaced(event);
-            return;
+            return; // Tiger logic replaces our own
         }
 
         // If the old value is an AbstractSessionBean, notify it
@@ -430,7 +450,7 @@
         LifecycleListener tiger = tiger();
         if (tiger != null) {
             tiger.attributeRemoved(event);
-            return;
+            return; // Tiger logic replaces our own
         }
 
         // If the old value is an AbstractSessionBean, notify it
@@ -506,7 +526,7 @@
         LifecycleListener tiger = tiger();
         if (tiger != null) {
             tiger.attributeAdded(event);
-            return;
+            return; // Tiger logic replaces our own
         }
 
         Object value = event.getValue();
@@ -538,7 +558,7 @@
         LifecycleListener tiger = tiger();
         if (tiger != null) {
             tiger.attributeReplaced(event);
-            return;
+            return; // Tiger logic replaces our own
         }
 
         Object value = event.getValue();
@@ -572,7 +592,7 @@
         LifecycleListener tiger = tiger();
         if (tiger != null) {
             tiger.attributeRemoved(event);
-            return;
+            return; // Tiger logic replaces our own
         }
 
         Object value = event.getValue();

Modified: 
shale/framework/trunk/shale-tiger/src/main/java/org/apache/shale/tiger/view/faces/LifecycleListener2.java
URL: 
http://svn.apache.org/viewvc/shale/framework/trunk/shale-tiger/src/main/java/org/apache/shale/tiger/view/faces/LifecycleListener2.java?rev=431128&r1=431127&r2=431128&view=diff
==============================================================================
--- 
shale/framework/trunk/shale-tiger/src/main/java/org/apache/shale/tiger/view/faces/LifecycleListener2.java
 (original)
+++ 
shale/framework/trunk/shale-tiger/src/main/java/org/apache/shale/tiger/view/faces/LifecycleListener2.java
 Sat Aug 12 18:23:00 2006
@@ -51,6 +51,13 @@
  * rather than requiring the containing classes to implement a particular
  * interface or extend a particular subclass.</p>
  *
+ * <p><strong>IMPLEMENTATION NOTE:</strong> The standard LifecycleListener
+ * instance will <em>delegate</em> to methods of this class after
+ * performing its own appropriate processing.  Therefore, implementation
+ * methods must <strong>NOT</strong> call their superclass counterparts.
+ * Doing so will cause any infinite recursion and ultimately a stack
+ * overflow error.</p>
+ *
  * $Id$
  *
  * @since 1.0.3
@@ -81,18 +88,33 @@
 
 
     /**
-     * <p>Forcibly replace the managed bean services that are different when
-     * the Tiger extensions are loaded.</p>
+     * <p>Respond to a context initialized event.  Forcibly replace
+     * the managed bean services that are different when the Tiger
+     * extensions are loaded.</p>
+     *
+     * @param event Event to be processed
      */
     public void contextInitialized(ServletContextEvent event) {
 
-        super.contextInitialized(event);
         event.getServletContext().setAttribute(FacesConstants.VIEW_CALLBACKS,
                                                new ViewControllerCallbacks2());
 
     }
 
 
+    /**
+     * <p>Respond to a context destroyed event.  No special
+     * processing is required.</p>
+     *
+     * @param event Event to be processed
+     */
+    public void contextDestroyed(ServletContextEvent event) {
+
+        // No special processing is required.
+
+    }
+
+
     // --------------------------------- ServletContextAttributeListener 
Methods
 
 
@@ -150,6 +172,35 @@
         if (value != null) {
             fireApplicationDestroy(value);
         }
+
+    }
+
+
+    // --------------------------------------------- HttpSessionListener 
Methods
+
+
+    /**
+     * <p>Respond to a session created event.  No special processing
+     * is required.</p>
+     *
+     * @param event Event to be processed
+     */
+    public void sessionCreated(HttpSessionEvent event) {
+
+        // No special processing is required
+
+    }
+
+
+    /**
+     * <p>Respond to a session destroyed event.  No special
+     * processing is required</p>
+     *
+     * @param event Event to be processed
+     */
+    public void sessionDestroyed(HttpSessionEvent event) {
+
+        // No special processing is required
 
     }
 


Reply via email to