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
}