taylor 2004/10/06 16:43:49 Added: portals-bridges/common/src/java/org/apache/portals/bridges/common GenericServletPortlet.java Log: moving the ServletPortlet to Portals Bridges under a new name GenericServletPortlet While it is not a fully featured bridge, it does fall under (i think) the general re-usable portlet frameworks (oops) category This portlet is not tied to jetspeed, i.e. it can be used in other JSR 168 portlets Revision Changes Path 1.1 jakarta-jetspeed-2/portals-bridges/common/src/java/org/apache/portals/bridges/common/GenericServletPortlet.java Index: GenericServletPortlet.java =================================================================== /* * Copyright 2000-2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.portals.bridges.common; import java.io.IOException; import javax.portlet.ActionResponse; import javax.portlet.GenericPortlet; import javax.portlet.PortletConfig; import javax.portlet.PortletContext; import javax.portlet.PortletException; import javax.portlet.PortletPreferences; import javax.portlet.PortletRequestDispatcher; import javax.portlet.RenderRequest; import javax.portlet.RenderResponse; /** * ServletPortlet will call a server, as defined by a xxxPage preference, for * the Action, Custom, Edit, Help, and View operations. This allow the use of * existing servlets or JSPs in the portlet. Since this is a very thin class, * it is up to the servlet, or JSP, to return properly formated content. See * the JSR 168 for more information * * <pre> * <!—- Portlet Preferences --> * <portlet-preferences> * <preference> * <description>Action Servlet</description> * <name>ActionPage</name> * <value>/WEB-INF/action.do</value> * <non-modifiable/> * </preference> * <preference> * <description>Custom Servlet</description> * <name>CustomPage</name> * <value>/WEB-INF/custom.jsp</value> * <non-modifiable/> * </preference> * <preference> * <description>Edit Servlet</description> * <name>EditPage</name> * <value>/WEB-INF/edit.jsp</value> * <non-modifiable/> * </preference> * <preference> * <description>Help Servlet</description> * <name>HelpPage</name> * <value>/WEB-INF/help.jsp</value> * <non-modifiable/> * </preference> * <preference> * <description>View Servlet</description> * <name>ViewPage</name> * <value>/WEB-INF/view.jsp</value> * <non-modifiable/> * </preference> * </portlet-preferences> * * @author paul * @version $Id: GenericServletPortlet.java,v 1.1 2004/10/06 23:43:49 taylor Exp $ */ public class GenericServletPortlet extends GenericPortlet { /** * Name of portlet preference for Action page */ public static final String PARAM_ACTION_PAGE = "ActionPage"; /** * Name of portlet preference to allow the use of preferenecs to set pages */ public static final String PARAM_ALLOW_PREFERENCES = "AllowPreferences"; /** * Name of portlet preference for Custom page */ public static final String PARAM_CUSTOM_PAGE = "CustomPage"; /** * Name of portlet preference for Edit page */ public static final String PARAM_EDIT_PAGE = "EditPage"; /** * Name of portlet preference for Edit page */ public static final String PARAM_HELP_PAGE = "HelpPage"; /** * Name of portlet preference for View page */ public static final String PARAM_VIEW_PAGE = "ViewPage"; /** * Name of portlet preference for View page */ public static final String PARAM_MAX_PAGE = "MaxPage"; /** * Allow preferences to be set by preferences. */ private boolean allowPreferences = false; /** * Default URL for the action page. */ private String defaultActionPage = null; /** * Default URL for the custom page. */ private String defaultCustomPage = null; /** * Default URL for the edit page. */ private String defaultEditPage = null; /** * Default URL for the help page. */ private String defaultHelpPage = null; /** * Default URL for the view page. */ private String defaultViewPage = null; /** * Creates a new instance of StrutsPortlet */ public GenericServletPortlet() { } public void init(PortletConfig config) throws PortletException { super.init(config); this.defaultActionPage = config.getInitParameter(PARAM_ACTION_PAGE); this.defaultCustomPage = config.getInitParameter(PARAM_CUSTOM_PAGE); this.defaultEditPage = config.getInitParameter(PARAM_EDIT_PAGE); this.defaultViewPage = config.getInitParameter(PARAM_VIEW_PAGE); this.defaultHelpPage = config.getInitParameter(PARAM_HELP_PAGE); String allowPreferencesString = config.getInitParameter(PARAM_ALLOW_PREFERENCES); if (allowPreferencesString != null) { this.allowPreferences = new Boolean(allowPreferencesString).booleanValue(); } if ((this.defaultActionPage == null) && (this.defaultCustomPage == null) && (this.defaultEditPage == null) && (this.defaultViewPage == null) && (this.defaultHelpPage == null) && (this.allowPreferences == false) ) { // This portlet is configured to do nothing! throw new PortletException("Portlet " + config.getPortletName() + " is incorrectly configured. No pages are defined."); } } /** * Execute the servlet as define by the init parameter or preference PARAM_ACTION_PAGE. The value * if the parameter is a relative URL, i.e. /actionPage.jsp will execute the * JSP editPage.jsp in the portlet application's web app. The action should * not generate any content. The content will be generate by doCustom(), * doHelp() , doEdit(), or doView(). * * See section PLT.16.2 of the JSR 168 Portlet Spec for more information * around executing a servlet or JSP in processAction() * * @see javax.portlet.GenericPortlet#processAction * * @task Need to be able to execute a servlet for the action */ public void processAction(RenderRequest request, ActionResponse actionResponse) throws PortletException, IOException { String actionPage = this.defaultActionPage; if (this.allowPreferences == true) { PortletPreferences prefs = request.getPreferences(); if (prefs != null) { actionPage = prefs.getValue(PARAM_ACTION_PAGE, this.defaultActionPage); } } if (actionPage != null) { /* * At this point the desire action should be execute. See the @TASK. */ } return; } /** * Execute the servlet as define by the init parameter or preference PARAM_EDIT_PAGE. The value * if the parameter is a relative URL, i.e. /editPage.jsp will execute the * JSP editPage.jsp in the portlet application's web app. * * @see javax.portlet.GenericPortlet#doCustom */ public void doCustom(RenderRequest request, RenderResponse response) throws PortletException, IOException { String customPage = this.defaultCustomPage; if (this.allowPreferences == true) { PortletPreferences prefs = request.getPreferences(); // allow ViewPage override by the request customPage = (String) request.getAttribute(PARAM_CUSTOM_PAGE); if (prefs != null && customPage == null) { customPage = prefs.getValue(PARAM_CUSTOM_PAGE, this.defaultCustomPage); } } if (customPage != null) { PortletContext context = getPortletContext(); PortletRequestDispatcher rd = context.getRequestDispatcher(customPage); rd.include(request, response); } return; } /** * Execute the servlet as define by the init parameter or preference PARAM_EDIT_PAGE. * The value if the parameter is a relative URL, i.e. /editPage.jsp will execute the * JSP editPage.jsp in the portlet application's web app. * * @see javax.portlet.GenericPortlet#doEdit */ public void doEdit(RenderRequest request, RenderResponse response) throws PortletException, IOException { String editPage = this.defaultEditPage; if (this.allowPreferences == true) { PortletPreferences prefs = request.getPreferences(); if (prefs != null) { editPage = prefs.getValue(PARAM_EDIT_PAGE, this.defaultEditPage); } } if (editPage != null) { PortletContext context = getPortletContext(); PortletRequestDispatcher rd = context.getRequestDispatcher(editPage); rd.include(request, response); } return; } /** * Execute the servlet as define by the init parameter or preference PARAM_HELP_PAGE. * The value if the parameter is a relative URL, i.e. /helpPage.jsp will exeute the * JSP helpPage.jsp in the portlet application's web app. * * @see javax.portlet.GenericPortlet#doView */ public void doHelp(RenderRequest request, RenderResponse response) throws PortletException, IOException { String helpPage = this.defaultHelpPage; if (this.allowPreferences == true) { PortletPreferences prefs = request.getPreferences(); if (prefs != null) { helpPage = prefs.getValue(PARAM_HELP_PAGE, this.defaultHelpPage); } } if (helpPage != null) { PortletContext context = getPortletContext(); PortletRequestDispatcher rd = context.getRequestDispatcher(helpPage); rd.include(request, response); } return; } /** * Execute the servlet as define by the init parameter or preference PARAM_VIEW_PAGE. * The value if the parameter is a relative URL, i.e. /viewPage.jsp will execute the * JSP viewPage.jsp in the portlet application's web app. * * @see javax.portlet.GenericPortlet#doView */ public void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException { String viewPage = this.defaultViewPage; // allow ViewPage override by the request String reqViewPage = (String) request.getAttribute(PARAM_VIEW_PAGE); if(reqViewPage != null) { viewPage = reqViewPage; } if (this.allowPreferences == true) { PortletPreferences prefs = request.getPreferences(); if (prefs != null && reqViewPage == null) { viewPage = prefs.getValue(PARAM_VIEW_PAGE, this.defaultViewPage); } } if (viewPage != null) { PortletContext context = getPortletContext(); PortletRequestDispatcher rd = context.getRequestDispatcher(viewPage); rd.include(request, response); } return; } /** * Getter for property defaultViewPage. * * @return Value of property defaultViewPage. */ public java.lang.String getDefaultViewPage() { return defaultViewPage; } /** * Setter for property defaultViewPage. * * @param defaultViewPage New value of property defaultViewPage. */ public void setDefaultViewPage(java.lang.String defaultViewPage) { this.defaultViewPage = defaultViewPage; } /** * Getter for property defaultHelpPage. * * @return Value of property defaultHelpPage. */ public java.lang.String getDefaultHelpPage() { return defaultHelpPage; } /** * Setter for property defaultHelpPage. * * @param defaultHelpPage New value of property defaultHelpPage. */ public void setDefaultHelpPage(java.lang.String defaultHelpPage) { this.defaultHelpPage = defaultHelpPage; } /** * Getter for property defaultEditPage. * * @return Value of property defaultEditPage. */ public java.lang.String getDefaultEditPage() { return defaultEditPage; } /** * Setter for property defaultEditPage. * * @param defaultEditPage New value of property defaultEditPage. */ public void setDefaultEditPage(java.lang.String defaultEditPage) { this.defaultEditPage = defaultEditPage; } /** * Getter for property defaultCustomPage. * * @return Value of property defaultCustomPage. */ public java.lang.String getDefaultCustomPage() { return defaultCustomPage; } /** * Setter for property defaultCustomPage. * * @param defaultCustomPage New value of property defaultCustomPage. */ public void setDefaultCustomPage(java.lang.String defaultCustomPage) { this.defaultCustomPage = defaultCustomPage; } /** * Getter for property defaultActionPage. * * @return Value of property defaultActionPage. */ public java.lang.String getDefaultActionPage() { return defaultActionPage; } /** * Setter for property defaultActionPage. * * @param defaultActionPage New value of property defaultActionPage. */ public void setDefaultActionPage(java.lang.String defaultActionPage) { this.defaultActionPage = defaultActionPage; } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]