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