Author: craigmcc
Date: Tue Aug 1 23:45:32 2006
New Revision: 427919
URL: http://svn.apache.org/viewvc?rev=427919&view=rev
Log:
Configure the default ViewControllerMapper implementation via a default
application scope managed bean. For backwards compatibility, the
previous method (context init parameter
"org.apache.shale.view.ViewControllerMapper") is still recognized, but
this usage is deprecated.
SHALE-246
Modified:
shale/framework/trunk/shale-apps/shale-mailreader-jpa/src/main/webapp/META-INF/context.xml
shale/framework/trunk/shale-core/src/main/java/org/apache/shale/view/Constants.java
shale/framework/trunk/shale-core/src/main/java/org/apache/shale/view/faces/FacesConstants.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
Modified:
shale/framework/trunk/shale-apps/shale-mailreader-jpa/src/main/webapp/META-INF/context.xml
URL:
http://svn.apache.org/viewvc/shale/framework/trunk/shale-apps/shale-mailreader-jpa/src/main/webapp/META-INF/context.xml?rev=427919&r1=427918&r2=427919&view=diff
==============================================================================
---
shale/framework/trunk/shale-apps/shale-mailreader-jpa/src/main/webapp/META-INF/context.xml
(original)
+++
shale/framework/trunk/shale-apps/shale-mailreader-jpa/src/main/webapp/META-INF/context.xml
Tue Aug 1 23:45:32 2006
@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
-<Context path=""/>
+<Context path="/shale-mailreader-jpa"/>
Modified:
shale/framework/trunk/shale-core/src/main/java/org/apache/shale/view/Constants.java
URL:
http://svn.apache.org/viewvc/shale/framework/trunk/shale-core/src/main/java/org/apache/shale/view/Constants.java?rev=427919&r1=427918&r2=427919&view=diff
==============================================================================
---
shale/framework/trunk/shale-core/src/main/java/org/apache/shale/view/Constants.java
(original)
+++
shale/framework/trunk/shale-core/src/main/java/org/apache/shale/view/Constants.java
Tue Aug 1 23:45:32 2006
@@ -16,6 +16,8 @@
package org.apache.shale.view;
+import org.apache.shale.view.impl.DefaultViewControllerMapper;
+
/**
* <p>Manifest constants related to Shale view support that are relevant
@@ -41,9 +43,13 @@
* fully qualified class name of the [EMAIL PROTECTED]
ViewControllerMapper} to be
* used is stored. If not present, the default value is
* <code>org.apache.shale.view.DefaultViewControllerMapper</code>.</p>
+ *
+ * @deprecated Replace the application scoped managed bean stored with
+ * key Constants.VIEW_CONTROLLER_MAPPER_KEY instead
*/
public static final String VIEW_CONTROLLER_MAPPER =
"org.apache.shale.view.VIEW_CONTROLLER_MAPPER";
+
}
Modified:
shale/framework/trunk/shale-core/src/main/java/org/apache/shale/view/faces/FacesConstants.java
URL:
http://svn.apache.org/viewvc/shale/framework/trunk/shale-core/src/main/java/org/apache/shale/view/faces/FacesConstants.java?rev=427919&r1=427918&r2=427919&view=diff
==============================================================================
---
shale/framework/trunk/shale-core/src/main/java/org/apache/shale/view/faces/FacesConstants.java
(original)
+++
shale/framework/trunk/shale-core/src/main/java/org/apache/shale/view/faces/FacesConstants.java
Tue Aug 1 23:45:32 2006
@@ -16,6 +16,8 @@
package org.apache.shale.view.faces;
+import org.apache.shale.view.ViewControllerMapper;
+
/**
* <p>Manifest constants related to Shale view support, which are specific
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=427919&r1=427918&r2=427919&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
Tue Aug 1 23:45:32 2006
@@ -28,6 +28,7 @@
import javax.faces.component.UIViewRoot;
import javax.faces.context.FacesContext;
import javax.faces.el.EvaluationException;
+import javax.faces.el.ValueBinding;
import javax.faces.el.VariableResolver;
import javax.faces.render.RenderKit;
import javax.faces.render.RenderKitFactory;
@@ -183,25 +184,36 @@
* @param context <code>FacesContext</code> for the current request
*/
private ViewControllerMapper getViewControllerMapper(FacesContext context)
{
- if (mapper == null) {
- mapper = (ViewControllerMapper)
- context.getExternalContext().getApplicationMap().
- get(FacesConstants.VIEW_MAPPER);
- }
+
+ // DEPRECATED - respect the context init parameter if specified
if (mapper == null) {
mapper = getViewControllerMapperInstance(context);
- context.getExternalContext().getApplicationMap().
- put(FacesConstants.VIEW_MAPPER, mapper);
}
- return mapper;
+
+ // DEPRECATED - return cached instance from context init parameter
+ if (mapper != null) {
+ return mapper;
+ }
+
+ // Live lookup of the appropriate mapper as a managed bean
+ ValueBinding vb = context.getApplication().createValueBinding
+ ("#{" + FacesConstants.VIEW_MAPPER + "}");
+ ViewControllerMapper vcm = (ViewControllerMapper) vb.getValue(context);
+ return vcm;
+
}
/**
- * <p>Create and return the [EMAIL PROTECTED] ViewControllerMapper}
instance
- * we will use for this application.</p>
+ * <p>Create and return the custom configured [EMAIL PROTECTED]
ViewControllerMapper}
+ * instance we will use for this application, or <code>null</code>
+ * if there is no such instance.</p>
*
* @param context <code>FacesContext</code> for the current request
+ *
+ * @deprecated As of version 1.0.3, replace the application scoped
+ * managed bean at FacesConstants.VIEW_MAPPER instead of using the
+ * deprecated context initialization parameter mentioned here
*/
private ViewControllerMapper getViewControllerMapperInstance
(FacesContext context) {
@@ -209,7 +221,7 @@
String className =
context.getExternalContext().getInitParameter(Constants.VIEW_CONTROLLER_MAPPER);
if (className == null) {
- className =
"org.apache.shale.view.impl.DefaultViewControllerMapper";
+ return null;
}
ClassLoader cl = Thread.currentThread().getContextClassLoader();
if (cl == null) {
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=427919&r1=427918&r2=427919&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
Tue Aug 1 23:45:32 2006
@@ -105,6 +105,17 @@
<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.
+ </description>
+ <managed-bean-name>org.apache.shale.view.VIEW_MAPPER</managed-bean-name>
+
<managed-bean-class>org.apache.shale.view.impl.DefaultViewControllerMapper</managed-bean-class>
+ <managed-bean-scope>application</managed-bean-scope>
+ </managed-bean>
+
<!-- Custom Renderers -->
<render-kit>
<renderer>