View Javadoc

    1   /*
    2    * $Id: ProcessTokenAction.java 471754 2006-11-06 14:55:09Z husted $
    3    *
    4    * Licensed to the Apache Software Foundation (ASF) under one
    5    * or more contributor license agreements.  See the NOTICE file
    6    * distributed with this work for additional information
    7    * regarding copyright ownership.  The ASF licenses this file
    8    * to you under the Apache License, Version 2.0 (the
    9    * "License"); you may not use this file except in compliance
    10   * with the License.  You may obtain a copy of the License at
    11   *
    12   *  http://www.apache.org/licenses/LICENSE-2.0
    13   *
    14   * Unless required by applicable law or agreed to in writing,
    15   * software distributed under the License is distributed on an
    16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    17   * KIND, either express or implied.  See the License for the
    18   * specific language governing permissions and limitations
    19   * under the License.
    20   */
    21
    22  package examples.token;
    23
    24  import javax.servlet.http.HttpServletRequest;
    25  import javax.servlet.http.HttpServletResponse;
    26
    27  import org.apache.struts.action.Action;
    28  import org.apache.struts.action.ActionErrors;
    29  import org.apache.struts.action.ActionForm;
    30  import org.apache.struts.action.ActionForward;
    31  import org.apache.struts.action.ActionMapping;
    32  import org.apache.struts.action.ActionMessage;
    33  import org.apache.struts.action.ActionMessages;
    34
    35  /**
    36   * Retrieve and process data from the submitted form
    37   *
    38   * @version $Rev: 471754 $ $Date: 2006-11-06 08:55:09 -0600 (Mon, 06 Nov 2006) $
    39   */
    40  public class ProcessTokenAction extends Action {
    41
    42      // ------------------------------------------------------------ Constructors
    43
    44      /**
    45       * Constructor for ProcessOptionsAction.
    46       */
    47      public ProcessTokenAction() {
    48          super();
    49      }
    50
    51      // ---------------------------------------------------------- Action Methods
    52
    53      /**
    54       * Process the request and return an <code>ActionForward</code> instance
    55       * describing where and how control should be forwarded, or
    56       * <code>null</code>if the response has already been completed.
    57       *
    58       * @param mapping The ActionMapping used to select this instance
    59       * @param form The optional ActionForm bean for this request (if any)
    60       * @param request The HTTP request we are processing
    61       * @param response The HTTP response we are creating
    62       *
    63       * @exception Exception if the application logic throws an exception
    64       *
    65       * @return the ActionForward for the next view
    66       */
    67      public ActionForward execute(
    68          ActionMapping mapping,
    69          ActionForm form,
    70          HttpServletRequest request,
    71          HttpServletResponse response)
    72          throws Exception {
    73
    74          // If user pressed 'Cancel' button,
    75          // return to home page
    76          if (isCancelled(request)) {
    77              return mapping.findForward("home");
    78          }
    79
    80          ActionErrors errors = new ActionErrors();
    81
    82          // Prevent unintentional duplication submissions by checking
    83          // that we have not received this token previously
    84          if (!isTokenValid(request)) {
    85              errors.add(
    86                  ActionMessages.GLOBAL_MESSAGE,
    87                  new ActionMessage("errors.token"));
    88          }
    89          resetToken(request);
    90
    91          // Report any errors we have discovered back to the original form
    92          if (!errors.isEmpty()) {
    93              saveErrors(request, errors);
    94              saveToken(request);
    95              return (mapping.getInputForward());
    96          }
    97
    98          // Forward to result page
    99          return mapping.findForward("success");
    100     }
    101
    102 }