Author: craigmcc
Date: Thu Aug  3 23:25:05 2006
New Revision: 428640

URL: http://svn.apache.org/viewvc?rev=428640&view=rev
Log:
Migrate recognition of the appropriate ViewControllerCallbacks service
object to be defaulted by a managed bean, but overridden as needed by an
application (or, in our case, by the Tiger extensions).

SHALE-246

Removed:
    
shale/framework/trunk/shale-core/src/main/java/org/apache/shale/view/faces/CallbacksFactory.java
    
shale/framework/trunk/shale-core/src/test/java/org/apache/shale/view/faces/CallbacksFactoryTestCase.java
    
shale/framework/trunk/shale-tiger/src/test/java/org/apache/shale/tiger/view/faces/CallbacksFactoryTestCase.java
Modified:
    
shale/framework/trunk/shale-core/src/main/java/org/apache/shale/component/Subview.java
    
shale/framework/trunk/shale-core/src/main/java/org/apache/shale/view/faces/ViewPhaseListener.java
    
shale/framework/trunk/shale-core/src/main/java/org/apache/shale/view/faces/ViewViewHandler.java
    
shale/framework/trunk/shale-core/src/main/resources/META-INF/faces-config.xml
    
shale/framework/trunk/shale-tiger/src/main/java/org/apache/shale/tiger/view/faces/LifecycleListener2.java
    
shale/framework/trunk/shale-tiger/src/test/java/org/apache/shale/tiger/faces/LifecycleListenerTestCase.java
    
shale/framework/trunk/shale-tiger/src/test/java/org/apache/shale/tiger/faces/VariableResolverImplTestCase.java

Modified: 
shale/framework/trunk/shale-core/src/main/java/org/apache/shale/component/Subview.java
URL: 
http://svn.apache.org/viewvc/shale/framework/trunk/shale-core/src/main/java/org/apache/shale/component/Subview.java?rev=428640&r1=428639&r2=428640&view=diff
==============================================================================
--- 
shale/framework/trunk/shale-core/src/main/java/org/apache/shale/component/Subview.java
 (original)
+++ 
shale/framework/trunk/shale-core/src/main/java/org/apache/shale/component/Subview.java
 Thu Aug  3 23:25:05 2006
@@ -30,7 +30,6 @@
 import org.apache.shale.util.Messages;
 import org.apache.shale.view.ExceptionHandler;
 import org.apache.shale.view.ViewController;
-import org.apache.shale.view.faces.CallbacksFactory;
 import org.apache.shale.view.faces.FacesConstants;
 import org.apache.shale.view.faces.ViewControllerCallbacks;
 
@@ -170,12 +169,6 @@
 
 
     /**
-     * <p>Lazily cached <code>ViewControllerCallbacks</code> instance.</p>
-     */
-    private transient ViewControllerCallbacks viewControllerCallbacks = null;
-
-
-    /**
      * <p>Return the <code>ViewControllerCallbacks</code> instance to be used
      * to forward prerender and preprocess callbacks to our view controller,
      * whether or not it implements the <code>ViewController</code> interface
@@ -186,18 +179,9 @@
      */
     private ViewControllerCallbacks getViewControllerCallbacks(FacesContext 
context) {
 
-        if (viewControllerCallbacks == null) {
-            viewControllerCallbacks = (ViewControllerCallbacks)
-               context.getExternalContext().getApplicationMap().
-               get(FacesConstants.VIEW_CALLBACKS);
-            if (viewControllerCallbacks == null) {
-                viewControllerCallbacks =
-                  CallbacksFactory.getInstance().getViewControllerCallbacks();
-                context.getExternalContext().getApplicationMap().
-                put(FacesConstants.VIEW_CALLBACKS, viewControllerCallbacks);
-            }
-        }
-        return viewControllerCallbacks;
+        ValueBinding vb = context.getApplication().createValueBinding
+          ("#{" + FacesConstants.VIEW_CALLBACKS + "}");
+        return (ViewControllerCallbacks) vb.getValue(context);
 
     }
 

Modified: 
shale/framework/trunk/shale-core/src/main/java/org/apache/shale/view/faces/ViewPhaseListener.java
URL: 
http://svn.apache.org/viewvc/shale/framework/trunk/shale-core/src/main/java/org/apache/shale/view/faces/ViewPhaseListener.java?rev=428640&r1=428639&r2=428640&view=diff
==============================================================================
--- 
shale/framework/trunk/shale-core/src/main/java/org/apache/shale/view/faces/ViewPhaseListener.java
 (original)
+++ 
shale/framework/trunk/shale-core/src/main/java/org/apache/shale/view/faces/ViewPhaseListener.java
 Thu Aug  3 23:25:05 2006
@@ -164,7 +164,7 @@
         while (vcs.hasNext()) {
             Object vc = vcs.next();
             try {
-                
viewControllerCallbacks(event.getFacesContext()).preprocess(vc);
+                
getViewControllerCallbacks(event.getFacesContext()).preprocess(vc);
             } catch (Exception e) {
                 handleException(event.getFacesContext(), e);
             }
@@ -192,7 +192,7 @@
             return;
         }
         try {
-            viewControllerCallbacks(event.getFacesContext()).prerender(vc);
+            getViewControllerCallbacks(event.getFacesContext()).prerender(vc);
         } catch (Exception e) {
             handleException(event.getFacesContext(), e);
         }
@@ -202,31 +202,16 @@
 
 
     /**
-     * <p>The [EMAIL PROTECTED] ViewControllerCallbacks} instance we will use.
-     * This instance is lazily instantiated.</p>
-     */
-    private ViewControllerCallbacks viewControllerCallbacks = null;
-
-
-    /**
      * <p>Return the [EMAIL PROTECTED] ViewControllerCallbacks} instance we
      * will use.</p>
      *
      * @param context <code>FacesContext</code> for the current request
      */
-    private ViewControllerCallbacks viewControllerCallbacks(FacesContext 
context) {
+    private ViewControllerCallbacks getViewControllerCallbacks(FacesContext 
context) {
 
-        if (viewControllerCallbacks == null) {
-            viewControllerCallbacks = (ViewControllerCallbacks)
-               context.getExternalContext().getApplicationMap().
-               get(FacesConstants.VIEW_CALLBACKS);
-            if (viewControllerCallbacks == null) {
-                viewControllerCallbacks = 
CallbacksFactory.getInstance().getViewControllerCallbacks();
-                context.getExternalContext().getApplicationMap().
-                put(FacesConstants.VIEW_CALLBACKS, viewControllerCallbacks);
-            }
-        }
-        return viewControllerCallbacks;
+        ValueBinding vb = context.getApplication().createValueBinding
+          ("#{" + FacesConstants.VIEW_CALLBACKS + "}");
+        return (ViewControllerCallbacks) vb.getValue(context);
 
     }
 

Modified: 
shale/framework/trunk/shale-core/src/main/java/org/apache/shale/view/faces/ViewViewHandler.java
URL: 
http://svn.apache.org/viewvc/shale/framework/trunk/shale-core/src/main/java/org/apache/shale/view/faces/ViewViewHandler.java?rev=428640&r1=428639&r2=428640&view=diff
==============================================================================
--- 
shale/framework/trunk/shale-core/src/main/java/org/apache/shale/view/faces/ViewViewHandler.java
 (original)
+++ 
shale/framework/trunk/shale-core/src/main/java/org/apache/shale/view/faces/ViewViewHandler.java
 Thu Aug  3 23:25:05 2006
@@ -333,15 +333,6 @@
 
 
     /**
-     * <p>The [EMAIL PROTECTED] ViewControllerCallbacks} instance we will use.
-     * This instance is lazily instantiated.</p>
-     *
-     * @since 1.0.1
-     */
-    private ViewControllerCallbacks viewControllerCallbacks = null;
-
-
-    /**
      * <p>Return the [EMAIL PROTECTED] ViewControllerCallbacks} instance we
      * will use.</p>
      *
@@ -349,19 +340,11 @@
      *
      * @since 1.0.1
      */
-    private ViewControllerCallbacks viewControllerCallbacks(FacesContext 
context) {
+    private ViewControllerCallbacks getViewControllerCallbacks(FacesContext 
context) {
 
-        if (viewControllerCallbacks == null) {
-            viewControllerCallbacks = (ViewControllerCallbacks)
-               context.getExternalContext().getApplicationMap().
-               get(FacesConstants.VIEW_CALLBACKS);
-            if (viewControllerCallbacks == null) {
-                viewControllerCallbacks = 
CallbacksFactory.getInstance().getViewControllerCallbacks();
-                context.getExternalContext().getApplicationMap().
-                put(FacesConstants.VIEW_CALLBACKS, viewControllerCallbacks);
-            }
-        }
-        return viewControllerCallbacks;
+        ValueBinding vb = context.getApplication().createValueBinding
+          ("#{" + FacesConstants.VIEW_CALLBACKS + "}");
+        return (ViewControllerCallbacks) vb.getValue(context);
 
     }
 

Modified: 
shale/framework/trunk/shale-core/src/main/resources/META-INF/faces-config.xml
URL: 
http://svn.apache.org/viewvc/shale/framework/trunk/shale-core/src/main/resources/META-INF/faces-config.xml?rev=428640&r1=428639&r2=428640&view=diff
==============================================================================
--- 
shale/framework/trunk/shale-core/src/main/resources/META-INF/faces-config.xml 
(original)
+++ 
shale/framework/trunk/shale-core/src/main/resources/META-INF/faces-config.xml 
Thu Aug  3 23:25:05 2006
@@ -117,6 +117,17 @@
 
   <managed-bean>
     <description>
+      Default implementation of 
org.apache.shale.view.faces.ViewContollerCallbacks
+      used to perform callbacks to the ViewController corresponding to the
+      current view identifier.
+    </description>
+    <managed-bean-name>org$apache$shale$view$VIEW_CALLBACKS</managed-bean-name>
+    
<managed-bean-class>org.apache.shale.view.faces.ViewControllerCallbacks</managed-bean-class>
+    <managed-bean-scope>application</managed-bean-scope>
+  </managed-bean>
+
+  <managed-bean>
+    <description>
       Default implementation of org.apache.shale.view.ViewControllerMapper
       used to map from view identifiers to the managed bean name of the
       corresponding view controller bean.

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=428640&r1=428639&r2=428640&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
 Thu Aug  3 23:25:05 2006
@@ -23,6 +23,7 @@
 import java.util.Map;
 import javax.faces.context.FacesContext;
 import javax.servlet.ServletContextAttributeEvent;
+import javax.servlet.ServletContextEvent;
 import javax.servlet.ServletRequestAttributeEvent;
 import javax.servlet.http.HttpSessionBindingEvent;
 import javax.servlet.http.HttpSessionEvent;
@@ -40,6 +41,7 @@
 import org.apache.shale.view.AbstractRequestBean;
 import org.apache.shale.view.AbstractSessionBean;
 import org.apache.shale.view.ViewController;
+import org.apache.shale.view.faces.FacesConstants;
 import org.apache.shale.view.faces.LifecycleListener;
 
 /**
@@ -73,6 +75,22 @@
      * <p>Parameter values array that passes no parameters.</p>
      */
     private static final Object[] PARAMETERS = new Object[0];
+
+
+    // ------------------------------------------ ServletContextListener 
Methods
+
+
+    /**
+     * <p>Forcibly replace the managed bean services that are different when
+     * the Tiger extensions are loaded.</p>
+     */
+    public void contextInitialized(ServletContextEvent event) {
+
+        super.contextInitialized(event);
+        event.getServletContext().setAttribute(FacesConstants.VIEW_CALLBACKS,
+                                               new ViewControllerCallbacks2());
+
+    }
 
 
     // --------------------------------- ServletContextAttributeListener 
Methods

Modified: 
shale/framework/trunk/shale-tiger/src/test/java/org/apache/shale/tiger/faces/LifecycleListenerTestCase.java
URL: 
http://svn.apache.org/viewvc/shale/framework/trunk/shale-tiger/src/test/java/org/apache/shale/tiger/faces/LifecycleListenerTestCase.java?rev=428640&r1=428639&r2=428640&view=diff
==============================================================================
--- 
shale/framework/trunk/shale-tiger/src/test/java/org/apache/shale/tiger/faces/LifecycleListenerTestCase.java
 (original)
+++ 
shale/framework/trunk/shale-tiger/src/test/java/org/apache/shale/tiger/faces/LifecycleListenerTestCase.java
 Thu Aug  3 23:25:05 2006
@@ -128,7 +128,7 @@
         assertNotNull(config);
         Map<String,ManagedBeanConfig> mbMap = fcConfig.getManagedBeans();
         assertNotNull(mbMap);
-        assertEquals(7, mbMap.size());
+        assertEquals(8, mbMap.size());
 
         ManagedPropertyConfig mpConfig = null;
 

Modified: 
shale/framework/trunk/shale-tiger/src/test/java/org/apache/shale/tiger/faces/VariableResolverImplTestCase.java
URL: 
http://svn.apache.org/viewvc/shale/framework/trunk/shale-tiger/src/test/java/org/apache/shale/tiger/faces/VariableResolverImplTestCase.java?rev=428640&r1=428639&r2=428640&view=diff
==============================================================================
--- 
shale/framework/trunk/shale-tiger/src/test/java/org/apache/shale/tiger/faces/VariableResolverImplTestCase.java
 (original)
+++ 
shale/framework/trunk/shale-tiger/src/test/java/org/apache/shale/tiger/faces/VariableResolverImplTestCase.java
 Thu Aug  3 23:25:05 2006
@@ -221,7 +221,7 @@
             externalContext.getApplicationMap().
             get(LifecycleListener.FACES_CONFIG_CONFIG);
         assertNotNull(config);
-        assertEquals(7, config.getManagedBeans().size());
+        assertEquals(8, config.getManagedBeans().size());
 
     }
 


Reply via email to