taylor 2004/10/26 09:53:41 Modified: portals-bridges/myfaces/src/java/org/apache/portals/bridges/myfaces FacesPortlet.java Log: added support for 1..n edit and help pages Revision Changes Path 1.9 +40 -23 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.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- FacesPortlet.java 21 Oct 2004 01:49:02 -0000 1.8 +++ FacesPortlet.java 26 Oct 2004 16:53:41 -0000 1.9 @@ -32,6 +32,7 @@ import javax.portlet.ActionResponse; import javax.portlet.PortletConfig; import javax.portlet.PortletException; +import javax.portlet.PortletMode; import javax.portlet.PortletRequest; import javax.portlet.PortletResponse; import javax.portlet.PortletSession; @@ -68,7 +69,10 @@ /** The JSF_VIEW_ID used to maintain the state of the view action. */ public static final String JSF_VIEW_ID = "jsf_viewid"; - + public static final String JSF_EDIT_ID = "jsf_editid"; + public static final String JSF_HELP_ID = "jsf_helpid"; + public static final String JSF_CUSTOM_ID = "jsf_customid"; + /** Name of portlet preference for Action page. */ public static final String PARAM_ACTION_PAGE = "ActionPage"; @@ -234,7 +238,7 @@ */ public void doEdit(RenderRequest request, RenderResponse response) throws PortletException, IOException { - process(request, response, defaultEditPage, FacesPortlet.EDIT_REQUEST); + process(request, response, defaultEditPage, FacesPortlet.EDIT_REQUEST, JSF_EDIT_ID); } /** @@ -249,7 +253,7 @@ } else { - process(request, response, defaultHelpPage, FacesPortlet.HELP_REQUEST); + process(request, response, defaultHelpPage, FacesPortlet.HELP_REQUEST, JSF_HELP_ID); } } @@ -261,7 +265,7 @@ */ public void doCustom(RenderRequest request, RenderResponse response) throws PortletException, IOException { - process(request, response, defaultCustomPage, FacesPortlet.CUSTOM_REQUEST); + process(request, response, defaultCustomPage, FacesPortlet.CUSTOM_REQUEST, JSF_CUSTOM_ID); } /** @@ -270,7 +274,7 @@ */ public void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException { - process(request, response, defaultViewPage, FacesPortlet.VIEW_REQUEST); + process(request, response, defaultViewPage, FacesPortlet.VIEW_REQUEST, JSF_VIEW_ID); } /** @@ -279,7 +283,20 @@ */ public void processAction(ActionRequest request, ActionResponse response) throws PortletException, IOException { - process(request, response, defaultActionPage, FacesPortlet.ACTION_REQUEST); + String viewId = JSF_CUSTOM_ID; + if (request.getPortletMode().equals(PortletMode.VIEW)) + { + viewId = JSF_VIEW_ID; + } + else if (request.getPortletMode().equals(PortletMode.EDIT)) + { + viewId = JSF_EDIT_ID; + } + else if (request.getPortletMode().equals(PortletMode.HELP)) + { + viewId = JSF_HELP_ID; + } + process(request, response, defaultActionPage, FacesPortlet.ACTION_REQUEST, viewId); } /** @@ -383,7 +400,7 @@ * @throws PortletException Throws a [EMAIL PROTECTED] PortletException}. * @throws IOException Throws an [EMAIL PROTECTED] IOException}. */ - private void process(PortletRequest request, PortletResponse response, String defaultPage, String requestType) + private void process(PortletRequest request, PortletResponse response, String defaultPage, String requestType, String viewId) throws PortletException, IOException { boolean actionRequest = (request instanceof ActionRequest); @@ -403,7 +420,7 @@ request, response, getLifecycle()); // Restore view if available. - setDefaultView(context, defaultPage); + setDefaultView(context, defaultPage, viewId); if (log.isTraceEnabled()) { log.trace("Begin Executing phases"); @@ -424,11 +441,11 @@ // The view should have been restore. // Pass it to the render request. - request.getPortletSession().setAttribute(createViewRootKey(context, defaultPage), context.getViewRoot()); + request.getPortletSession().setAttribute(createViewRootKey(context, defaultPage, viewId), context.getViewRoot()); ActionResponse actionResponse = (ActionResponse)response; - // actionResponse.setRenderParameter(JSF_VIEW_ID, context.getViewRoot().getViewId()); // get the navigation change - request.getPortletSession().setAttribute(JSF_VIEW_ID, context.getViewRoot().getViewId(), PortletSession.PORTLET_SCOPE); + // actionResponse.setRenderParameter(viewId, context.getViewRoot().getViewId()); // get the navigation change + request.getPortletSession().setAttribute(viewId, context.getViewRoot().getViewId(), PortletSession.PORTLET_SCOPE); } else if (renderRequest) { @@ -486,11 +503,11 @@ } - private String createViewRootKey(FacesContext context, String defaultView) + private String createViewRootKey(FacesContext context, String defaultView, String viewId) { PortletRequest portletRequest = (PortletRequest) context.getExternalContext().getRequest(); - // String view = portletRequest.getParameter(JSF_VIEW_ID); - String view = (String)portletRequest.getPortletSession().getAttribute(JSF_VIEW_ID, PortletSession.PORTLET_SCOPE); + // String view = portletRequest.getParameter(viewId); + String view = (String)portletRequest.getPortletSession().getAttribute(viewId, PortletSession.PORTLET_SCOPE); if (view == null) { @@ -518,29 +535,29 @@ * @param defaultView The default view identifier. * @return The default view. */ - private void setDefaultView(FacesContext facesContext, String defaultView) + private void setDefaultView(FacesContext facesContext, String defaultView, String viewId) { // Need to be able to transport viewId between actionRequest and // renderRequest. PortletRequest portletRequest = (PortletRequest) facesContext.getExternalContext().getRequest(); if (portletRequest instanceof ActionRequest) { - String view = (String)portletRequest.getPortletSession().getAttribute(JSF_VIEW_ID, PortletSession.PORTLET_SCOPE); + String view = (String)portletRequest.getPortletSession().getAttribute(viewId, PortletSession.PORTLET_SCOPE); if ((null != facesContext.getViewRoot()) && (null != facesContext.getViewRoot().getViewId())) { defaultView = facesContext.getViewRoot().getViewId(); } - //else if (null != portletRequest.getParameter(JSF_VIEW_ID)) + //else if (null != portletRequest.getParameter(viewId)) else if (null != view) { - //defaultView = portletRequest.getParameter(JSF_VIEW_ID); + //defaultView = portletRequest.getParameter(viewId); defaultView = view; } UIViewRoot viewRoot = (UIViewRoot)portletRequest. getPortletSession(). - getAttribute(createViewRootKey(facesContext, defaultView)); + getAttribute(createViewRootKey(facesContext, defaultView, viewId)); if (viewRoot != null) { facesContext.setViewRoot(viewRoot); @@ -551,8 +568,8 @@ } else if (portletRequest instanceof RenderRequest) { - // String view = portletRequest.getParameter(JSF_VIEW_ID); - String view = (String)portletRequest.getPortletSession().getAttribute(JSF_VIEW_ID, PortletSession.PORTLET_SCOPE); + // String view = portletRequest.getParameter(viewId); + String view = (String)portletRequest.getPortletSession().getAttribute(viewId, PortletSession.PORTLET_SCOPE); if (null == facesContext.getViewRoot()) { @@ -562,7 +579,7 @@ } UIViewRoot viewRoot = (UIViewRoot)portletRequest. getPortletSession(). - getAttribute(createViewRootKey(facesContext, view)); + getAttribute(createViewRootKey(facesContext, view, viewId)); if (null != viewRoot) { facesContext.setViewRoot(viewRoot); @@ -573,7 +590,7 @@ facesContext.setViewRoot(new UIViewRoot()); facesContext.getViewRoot().setViewId(view); facesContext.getViewRoot().setRenderKitId(RenderKitFactory.HTML_BASIC_RENDER_KIT); - portletRequest.getPortletSession().setAttribute(createViewRootKey(facesContext, view), viewRoot); + portletRequest.getPortletSession().setAttribute(createViewRootKey(facesContext, view, viewId), viewRoot); } } portletRequest.setAttribute(REQUEST_SERVLET_PATH, view.replaceAll(".jsp", ".jsf"));
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]