sraeburn 2003/08/11 20:52:15 Modified: src/share/org/apache/struts/actions MappingDispatchAction.java Log: *** keyword substitution change *** Revision Changes Path 1.2 +259 -259 jakarta-struts/src/share/org/apache/struts/actions/MappingDispatchAction.java Index: MappingDispatchAction.java =================================================================== RCS file: /home/cvs/jakarta-struts/src/share/org/apache/struts/actions/MappingDispatchAction.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- MappingDispatchAction.java 12 Aug 2003 03:26:53 -0000 1.1 +++ MappingDispatchAction.java 12 Aug 2003 03:52:15 -0000 1.2 @@ -1,260 +1,260 @@ -/* - * $Header$ - * $Revision$ - * $Date$ - * - * ==================================================================== - * - * The Apache Software License, Version 1.1 - * - * Copyright (c) 1999-2003 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Struts", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact [EMAIL PROTECTED] - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * <http://www.apache.org/>. - * - */ - -package org.apache.struts.actions; - -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.apache.struts.action.ActionForm; -import org.apache.struts.action.ActionForward; -import org.apache.struts.action.ActionMapping; - -/** - * <p>An abstract <strong>Action</strong> that dispatches to a public - * method that is named by the <code>parameter</code> attribute of - * the corresponding ActionMapping. This is useful for developers who prefer - * to combine many related actions into a single Action class.</p> - * - * <p>To configure the use of this action in your - * <code>struts-config.xml</code> file, create an entry like this:</p> - * - * <pre><code> - * <action path="/saveSubscription" - * type="org.example.SubscriptionAction" - * name="subscriptionForm" - * scope="request" - * input="/subscription.jsp" - * parameter="method"/> - * </code></pre> - * - * <p>where 'method' is the name of a method in your subclass of - * MappingDispatchAction that has the same signature (other than method - * name) of the standard Action.execute method. For example, you might combine - * the methods for managing a subscription into a single - * MappingDispatchAction class using the following methods:</p> - * <ul> - * <li>public ActionForward create(ActionMapping mapping, ActionForm form, - * HttpServletRequest request, HttpServletResponse response) - * throws Exception</li> - * <li>public ActionForward edit(ActionMapping mapping, ActionForm form, - * HttpServletRequest request, HttpServletResponse response) - * throws Exception</li> - * <li>public ActionForward save(ActionMapping mapping, ActionForm form, - * HttpServletRequest request, HttpServletResponse response) - * throws Exception</li> - * <li>public ActionForward delete(ActionMapping mapping, ActionForm form, - * HttpServletRequest request, HttpServletResponse response) - * throws Exception</li> - * <li>public ActionForward list(ActionMapping mapping, ActionForm form, - * HttpServletRequest request, HttpServletResponse response) - * throws Exception</li> - * </ul> - * <p>for which you would create corresponding <action> configurations - * that reference this class:</p> - * - * <pre><code> - * <action path="/createSubscription" - * type="org.example.SubscriptionAction" - * parameter="create"> - * <forward name="success" path="/editSubscription.jsp"/> - * </action> - * - * <action path="/editSubscription" - * type="org.example.Subscription" - * parameter="edit"> - * <forward name="success" path="/editSubscription.jsp"/> - * </action> - * - * <action path="/saveSubscription" - * type="org.example.SubscriptionAction" - * parameter="save" - * name="subscriptionForm" - * validate="true" - * input="/editSubscription.jsp" - * scope="request"> - * <forward name="success" path="/savedSubscription.jsp"/> - * </action> - * - * <action path="/deleteSubscription" - * type="org.example.SubscriptionAction" - * name="subscriptionForm" - * scope="request" - * input="/subscription.jsp" - * parameter="delete"> - * <forward name="success" path="/deletedSubscription.jsp"/> - * </action> - * - * <action path="/listSubscriptions" - * type="org.example.SubscriptionAction" - * parameter="list"> - * <forward name="success" path="/subscriptionList.jsp"/> - * </action> - * </code></pre> - * - * <p><strong>NOTE</strong> - Unlike DispatchAction, mapping characteristics - * may differ between the various handlers, so you can combine actions in the - * same class that, for example, differ in their use of forms or validation. - * Also, a request parameter, which would be visible to the application user, - * is not required to enable selection of the handler method. - * </p> - * - * @author Niall Pemberton <[EMAIL PROTECTED]> - * @author Craig R. McClanahan - * @author Ted Husted - * @author Anthony Kay - * @author Steve Raeburn - * @version $Revision$ $Date$ - * @since Struts 1.2 - */ -public class MappingDispatchAction extends DispatchAction { - - - // -------------------------------------------------------- Class Variables - - - /** - * Commons Logging instance. - */ - protected static Log log = - LogFactory.getLog(MappingDispatchAction.class); - - - // --------------------------------------------------------- Public Methods - - - /** - * Process the specified HTTP request, and create the corresponding HTTP - * response (or forward to another web component that will create it). - * Return an <code>ActionForward</code> instance describing where and how - * control should be forwarded, or <code>null</code> if the response has - * already been completed. - * - * This method dispatches the request to other methods of - * <code>MappingDispatchAction</code> using the 'parameter' attribute of - * <code>ActionMapping</code> and Java Introspection. - * - * @param mapping The ActionMapping used to select this instance - * @param form The optional ActionForm bean for this request (if any) - * @param request The HTTP request we are processing - * @param response The HTTP response we are creating - * - * @return Return an <code>ActionForward</code> instance describing where - * and how control should be forwarded, or <code>null</code> if - * the response has already been completed. - * - * @exception Exception if an exception occurs - */ - public ActionForward execute( - ActionMapping mapping, - ActionForm form, - HttpServletRequest request, - HttpServletResponse response) - throws Exception { - - // Identify the method name to be dispatched to - String name = mapping.getParameter(); - if (name == null) { - return unspecified(mapping, form, request, response); - } - - // Invoke the named method, and return the result - return dispatchMethod(mapping, form, request, response, name); - } - - - /** - * Method which is dispatched to when there is no value for the - * parameter in the ActionMapping. Subclasses of - * <code>MappingDispatchAction</code> should override this method - * if they wish to provide default behavior different than throwing a - * ServletException. - * - * @param mapping The ActionMapping used to select this instance - * @param form The optional ActionForm bean for this request (if any) - * @param request The HTTP request we are processing - * @param response The HTTP response we are creating - * - * @return Return an <code>ActionForward</code> instance describing where - * and how control should be forwarded, or <code>null</code> if - * the response has already been completed. - * - * @exception Exception if an exception occurs - */ - protected ActionForward unspecified( - ActionMapping mapping, - ActionForm form, - HttpServletRequest request, - HttpServletResponse response) - throws Exception { - - String message = - messages.getMessage("mapping.parameter", mapping.getPath()); - - log.error(message); - - throw new ServletException(message); - } - +/* + * $Header$ + * $Revision$ + * $Date$ + * + * ==================================================================== + * + * The Apache Software License, Version 1.1 + * + * Copyright (c) 1999-2003 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, if + * any, must include the following acknowlegement: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowlegement may appear in the software itself, + * if and wherever such third-party acknowlegements normally appear. + * + * 4. The names "The Jakarta Project", "Struts", and "Apache Software + * Foundation" must not be used to endorse or promote products derived + * from this software without prior written permission. For written + * permission, please contact [EMAIL PROTECTED] + * + * 5. Products derived from this software may not be called "Apache" + * nor may "Apache" appear in their names without prior written + * permission of the Apache Group. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + * + */ + +package org.apache.struts.actions; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; + +/** + * <p>An abstract <strong>Action</strong> that dispatches to a public + * method that is named by the <code>parameter</code> attribute of + * the corresponding ActionMapping. This is useful for developers who prefer + * to combine many related actions into a single Action class.</p> + * + * <p>To configure the use of this action in your + * <code>struts-config.xml</code> file, create an entry like this:</p> + * + * <pre><code> + * <action path="/saveSubscription" + * type="org.example.SubscriptionAction" + * name="subscriptionForm" + * scope="request" + * input="/subscription.jsp" + * parameter="method"/> + * </code></pre> + * + * <p>where 'method' is the name of a method in your subclass of + * MappingDispatchAction that has the same signature (other than method + * name) of the standard Action.execute method. For example, you might combine + * the methods for managing a subscription into a single + * MappingDispatchAction class using the following methods:</p> + * <ul> + * <li>public ActionForward create(ActionMapping mapping, ActionForm form, + * HttpServletRequest request, HttpServletResponse response) + * throws Exception</li> + * <li>public ActionForward edit(ActionMapping mapping, ActionForm form, + * HttpServletRequest request, HttpServletResponse response) + * throws Exception</li> + * <li>public ActionForward save(ActionMapping mapping, ActionForm form, + * HttpServletRequest request, HttpServletResponse response) + * throws Exception</li> + * <li>public ActionForward delete(ActionMapping mapping, ActionForm form, + * HttpServletRequest request, HttpServletResponse response) + * throws Exception</li> + * <li>public ActionForward list(ActionMapping mapping, ActionForm form, + * HttpServletRequest request, HttpServletResponse response) + * throws Exception</li> + * </ul> + * <p>for which you would create corresponding <action> configurations + * that reference this class:</p> + * + * <pre><code> + * <action path="/createSubscription" + * type="org.example.SubscriptionAction" + * parameter="create"> + * <forward name="success" path="/editSubscription.jsp"/> + * </action> + * + * <action path="/editSubscription" + * type="org.example.Subscription" + * parameter="edit"> + * <forward name="success" path="/editSubscription.jsp"/> + * </action> + * + * <action path="/saveSubscription" + * type="org.example.SubscriptionAction" + * parameter="save" + * name="subscriptionForm" + * validate="true" + * input="/editSubscription.jsp" + * scope="request"> + * <forward name="success" path="/savedSubscription.jsp"/> + * </action> + * + * <action path="/deleteSubscription" + * type="org.example.SubscriptionAction" + * name="subscriptionForm" + * scope="request" + * input="/subscription.jsp" + * parameter="delete"> + * <forward name="success" path="/deletedSubscription.jsp"/> + * </action> + * + * <action path="/listSubscriptions" + * type="org.example.SubscriptionAction" + * parameter="list"> + * <forward name="success" path="/subscriptionList.jsp"/> + * </action> + * </code></pre> + * + * <p><strong>NOTE</strong> - Unlike DispatchAction, mapping characteristics + * may differ between the various handlers, so you can combine actions in the + * same class that, for example, differ in their use of forms or validation. + * Also, a request parameter, which would be visible to the application user, + * is not required to enable selection of the handler method. + * </p> + * + * @author Niall Pemberton <[EMAIL PROTECTED]> + * @author Craig R. McClanahan + * @author Ted Husted + * @author Anthony Kay + * @author Steve Raeburn + * @version $Revision$ $Date$ + * @since Struts 1.2 + */ +public class MappingDispatchAction extends DispatchAction { + + + // -------------------------------------------------------- Class Variables + + + /** + * Commons Logging instance. + */ + protected static Log log = + LogFactory.getLog(MappingDispatchAction.class); + + + // --------------------------------------------------------- Public Methods + + + /** + * Process the specified HTTP request, and create the corresponding HTTP + * response (or forward to another web component that will create it). + * Return an <code>ActionForward</code> instance describing where and how + * control should be forwarded, or <code>null</code> if the response has + * already been completed. + * + * This method dispatches the request to other methods of + * <code>MappingDispatchAction</code> using the 'parameter' attribute of + * <code>ActionMapping</code> and Java Introspection. + * + * @param mapping The ActionMapping used to select this instance + * @param form The optional ActionForm bean for this request (if any) + * @param request The HTTP request we are processing + * @param response The HTTP response we are creating + * + * @return Return an <code>ActionForward</code> instance describing where + * and how control should be forwarded, or <code>null</code> if + * the response has already been completed. + * + * @exception Exception if an exception occurs + */ + public ActionForward execute( + ActionMapping mapping, + ActionForm form, + HttpServletRequest request, + HttpServletResponse response) + throws Exception { + + // Identify the method name to be dispatched to + String name = mapping.getParameter(); + if (name == null) { + return unspecified(mapping, form, request, response); + } + + // Invoke the named method, and return the result + return dispatchMethod(mapping, form, request, response, name); + } + + + /** + * Method which is dispatched to when there is no value for the + * parameter in the ActionMapping. Subclasses of + * <code>MappingDispatchAction</code> should override this method + * if they wish to provide default behavior different than throwing a + * ServletException. + * + * @param mapping The ActionMapping used to select this instance + * @param form The optional ActionForm bean for this request (if any) + * @param request The HTTP request we are processing + * @param response The HTTP response we are creating + * + * @return Return an <code>ActionForward</code> instance describing where + * and how control should be forwarded, or <code>null</code> if + * the response has already been completed. + * + * @exception Exception if an exception occurs + */ + protected ActionForward unspecified( + ActionMapping mapping, + ActionForm form, + HttpServletRequest request, + HttpServletResponse response) + throws Exception { + + String message = + messages.getMessage("mapping.parameter", mapping.getPath()); + + log.error(message); + + throw new ServletException(message); + } + }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]