01: /*
02: * $Id: ProcessTokenAction.java 471754 2006-11-06 14:55:09Z husted $
03: *
04: * Licensed to the Apache Software Foundation (ASF) under one
05: * or more contributor license agreements. See the NOTICE file
06: * distributed with this work for additional information
07: * regarding copyright ownership. The ASF licenses this file
08: * to you under the Apache License, Version 2.0 (the
09: * "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(ActionMapping mapping,
68: ActionForm form, HttpServletRequest request,
69: HttpServletResponse response) throws Exception {
70:
71: // If user pressed 'Cancel' button,
72: // return to home page
73: if (isCancelled(request)) {
74: return mapping.findForward("home");
75: }
76:
77: ActionErrors errors = new ActionErrors();
78:
79: // Prevent unintentional duplication submissions by checking
80: // that we have not received this token previously
81: if (!isTokenValid(request)) {
82: errors.add(ActionMessages.GLOBAL_MESSAGE,
83: new ActionMessage("errors.token"));
84: }
85: resetToken(request);
86:
87: // Report any errors we have discovered back to the original form
88: if (!errors.isEmpty()) {
89: saveErrors(request, errors);
90: saveToken(request);
91: return (mapping.getInputForward());
92: }
93:
94: // Forward to result page
95: return mapping.findForward("success");
96: }
97:
98: }
|