dlestrat 2004/09/16 16:44:52
Modified: portals-bridges/myfaces/src/java/org/apache/portals/bridges/myfaces
FacesPortlet.java
Log:
Cleaned code up. Now get the UIViewRoot if restore. Still having issues with
events and listeners...
Events do not seem to be received properly.
Revision Changes Path
1.5 +21 -32
jakarta-jetspeed-2/portals-bridges/myfaces/src/java/org/apache/portals/bridges/myfaces/FacesPortlet.java
Index: FacesPortlet.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/portals-bridges/myfaces/src/java/org/apache/portals/bridges/myfaces/FacesPortlet.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- FacesPortlet.java 16 Sep 2004 06:27:26 -0000 1.4
+++ FacesPortlet.java 16 Sep 2004 23:44:52 -0000 1.5
@@ -55,8 +55,8 @@
/** The Log instance for this class. */
private static final Log log = LogFactory.getLog(FacesPortlet.class);
- /** The VIEW_ID used to keep track of action between the action request and the
render request. */
- public static final String VIEW_ID =
"org.apache.portals.bridges.myfaces.VIEW_ID";
+ /** The VIEW_ROOT used to keep track of action between the action request and
the render request. */
+ public static final String VIEW_ROOT =
"org.apache.portals.bridges.myfaces.VIEW_ROOT";
/**
* The REQUEST_SERVLET_PATH used for externalContext.getRequestServletPath().
externalContext.getRequestServletPath()
@@ -65,7 +65,6 @@
public static final String REQUEST_SERVLET_PATH =
"org.apache.portals.bridges.myfaces.REQUEST_SERVLET_PATH";
/** The JSF_VIEW_ID used to maintain the state of the view action. */
- // TODO Is this myfaces specific?
public static final String JSF_VIEW_ID = "jsf_viewid";
/** Name of portlet preference for Action page. */
@@ -377,6 +376,9 @@
{
boolean actionRequest = (request instanceof ActionRequest);
boolean renderRequest = (request instanceof RenderRequest);
+
+ String defaultView = defaultPage;
+
if (actionRequest)
{
log.trace("Begin FacesPortlet.processAction()");
@@ -386,6 +388,7 @@
FacesContext context =
getFacesContextFactory().getFacesContext(portletConfig.getPortletContext(), request,
response, getLifecycle());
+ // Restore view if available.
setDefaultView(context, defaultPage);
if (log.isTraceEnabled())
{
@@ -402,10 +405,12 @@
{
log.trace("End Executing phases");
}
- setDefaultView(context, defaultPage);
+ // The view should have been restore.
+ // Pass it to the render request.
+ request.getPortletSession().setAttribute(VIEW_ROOT,
context.getViewRoot());
}
else if (renderRequest)
- {
+ {
getLifecycle().render(context);
if (log.isTraceEnabled())
{
@@ -458,17 +463,12 @@
*
* @param context The [EMAIL PROTECTED] FacesContext}for the current request.
* @param defaultView The default view identifier.
+ * @return The default view.
*/
private void setDefaultView(FacesContext facesContext, String defaultView)
{
// Need to be able to transport viewId between actionRequest and
// renderRequest.
- // If actionRequest, the view id is obtained from the navigation, we
- // need to be able to keep that
- // value and not have it overwritten by the default view id. Putting
- // that value in the portletRequest does not
- // work. Need to use actionResponse.setRenderParameter...
- // Default the action view id to the view id state.
PortletRequest portletRequest = (PortletRequest)
facesContext.getExternalContext().getRequest();
if (portletRequest instanceof ActionRequest)
{
@@ -480,35 +480,24 @@
{
defaultView = portletRequest.getParameter(JSF_VIEW_ID);
}
- ((ActionResponse)
facesContext.getExternalContext().getResponse()).setRenderParameter(FacesPortlet.VIEW_ID,
- defaultView);
- portletRequest.setAttribute(REQUEST_SERVLET_PATH, defaultView);
}
else if (portletRequest instanceof RenderRequest)
{
if (null == facesContext.getViewRoot())
{
- facesContext.setViewRoot(new UIViewRoot());
- if (log.isDebugEnabled())
+ if (null !=
portletRequest.getPortletSession().getAttribute(VIEW_ROOT))
{
- log.debug("Created new ViewRoot" + facesContext.getViewRoot());
+ facesContext.setViewRoot((UIViewRoot)
portletRequest.getPortletSession().getAttribute(VIEW_ROOT));
+ defaultView = facesContext.getViewRoot().getViewId();
}
-
facesContext.getViewRoot().setRenderKitId(RenderKitFactory.HTML_BASIC_RENDER_KIT);
+ else
+ {
+ facesContext.setViewRoot(new UIViewRoot());
+ facesContext.getViewRoot().setViewId(defaultView);
+
facesContext.getViewRoot().setRenderKitId(RenderKitFactory.HTML_BASIC_RENDER_KIT);
+ }
}
-
- // Check if the portlet request is a render request to be process.
- // First check if we have a post action request processing view id.
- if (null != portletRequest.getParameter(FacesPortlet.VIEW_ID))
- {
- defaultView = portletRequest.getParameter(FacesPortlet.VIEW_ID);
- }
- else if (null == facesContext.getViewRoot().getViewId())
- {
- facesContext.getViewRoot().setViewId(defaultView);
- }
- String viewId = defaultView.replaceAll(".jsp", ".jsf");
- facesContext.getViewRoot().setViewId(viewId);
- portletRequest.setAttribute(REQUEST_SERVLET_PATH, viewId);
}
+ portletRequest.setAttribute(REQUEST_SERVLET_PATH,
defaultView.replaceAll(".jsp", ".jsf"));
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]