1 /*
2 * $Id$
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
23 package org.apache.struts.webapp.example;
24
25
26 import jakarta.servlet.http.HttpServletRequest;
27
28 import org.apache.struts.action.ActionErrors;
29 import org.apache.struts.action.ActionMessage;
30 import org.apache.struts.action.ActionMapping;
31 import org.apache.struts.validator.ValidatorForm;
32
33
34 /**
35 * Form bean for the user registration page. This form has the following
36 * fields, with default values in square brackets:
37 * <ul>
38 * <li><b>action</b> - The maintenance action we are performing (Create,
39 * Delete, or Edit).
40 * <li><b>fromAddress</b> - The EMAIL address of the sender, to be included
41 * on sent messages. [REQUIRED]
42 * <li><b>fullName</b> - The full name of the sender, to be included on
43 * sent messages. [REQUIRED]
44 * <li><b>password</b> - The password used by this user to log on.
45 * <li><b>password2</b> - The confirmation password, which must match
46 * the password when changing or setting.
47 * <li><b>replyToAddress</b> - The "Reply-To" address to be included on
48 * sent messages. [Same as from address]
49 * <li><b>username</b> - The registered username, which must be unique.
50 * [REQUIRED]
51 * </ul>
52 *
53 * @author Craig R. McClanahan
54 * @version $Rev$ $Date$
55 */
56
57 public final class RegistrationForm extends ValidatorForm {
58 private static final long serialVersionUID = -3673472301335623117L;
59
60
61 // ----------------------------------------------------- Instance Variables
62
63
64 /**
65 * The maintenance action we are performing (Create or Edit).
66 */
67 private String action = "Create";
68
69
70 /**
71 * The from address.
72 */
73 private String fromAddress = null;
74
75
76 /**
77 * The full name.
78 */
79 private String fullName = null;
80
81
82 /**
83 * The password.
84 */
85 private String password = null;
86
87
88 /**
89 * The confirmation password.
90 */
91 private String password2 = null;
92
93
94 /**
95 * The reply to address.
96 */
97 private String replyToAddress = null;
98
99
100
101 /**
102 * The username.
103 */
104 private String username = null;
105
106
107 // ----------------------------------------------------------- Properties
108
109
110 /**
111 * Return the maintenance action.
112 */
113 public String getAction() {
114
115 return (this.action);
116
117 }
118
119
120 /**
121 * Set the maintenance action.
122 *
123 * @param action The new maintenance action.
124 */
125 public void setAction(String action) {
126
127 this.action = action;
128
129 }
130
131
132 /**
133 * Return the from address.
134 */
135 public String getFromAddress() {
136
137 return (this.fromAddress);
138
139 }
140
141
142 /**
143 * Set the from address.
144 *
145 * @param fromAddress The new from address
146 */
147 public void setFromAddress(String fromAddress) {
148
149 this.fromAddress = fromAddress;
150
151 }
152
153
154 /**
155 * Return the full name.
156 */
157 public String getFullName() {
158
159 return (this.fullName);
160
161 }
162
163
164 /**
165 * Set the full name.
166 *
167 * @param fullName The new full name
168 */
169 public void setFullName(String fullName) {
170
171 this.fullName = fullName;
172
173 }
174
175
176 /**
177 * Return the password.
178 */
179 public String getPassword() {
180
181 return (this.password);
182
183 }
184
185
186 /**
187 * Set the password.
188 *
189 * @param password The new password
190 */
191 public void setPassword(String password) {
192
193 this.password = password;
194
195 }
196
197
198 /**
199 * Return the confirmation password.
200 */
201 public String getPassword2() {
202
203 return (this.password2);
204
205 }
206
207
208 /**
209 * Set the confirmation password.
210 *
211 * @param password2 The new confirmation password
212 */
213 public void setPassword2(String password2) {
214
215 this.password2 = password2;
216
217 }
218
219
220 /**
221 * Return the reply to address.
222 */
223 public String getReplyToAddress() {
224
225 return (this.replyToAddress);
226
227 }
228
229
230 /**
231 * Set the reply to address.
232 *
233 * @param replyToAddress The new reply to address
234 */
235 public void setReplyToAddress(String replyToAddress) {
236
237 this.replyToAddress = replyToAddress;
238
239 }
240
241
242 /**
243 * Return the username.
244 */
245 public String getUsername() {
246
247 return (this.username);
248
249 }
250
251
252 /**
253 * Set the username.
254 *
255 * @param username The new username
256 */
257 public void setUsername(String username) {
258
259 this.username = username;
260
261 }
262
263
264 // --------------------------------------------------------- Public Methods
265
266
267 /**
268 * Reset all properties to their default values.
269 *
270 * @param mapping The mapping used to select this instance
271 * @param request The servlet request we are processing
272 */
273 public void reset(ActionMapping mapping, HttpServletRequest request) {
274
275 this.action = "Create";
276 this.fromAddress = null;
277 this.fullName = null;
278 this.password = null;
279 this.password2 = null;
280 this.replyToAddress = null;
281 this.username = null;
282
283 }
284
285
286 /**
287 * Validate the properties that have been set from this HTTP request,
288 * and return an <code>ActionMessages</code> object that encapsulates any
289 * validation errors that have been found. If no errors are found, return
290 * <code>null</code> or an <code>ActionMessages</code> object with no
291 * recorded error messages.
292 *
293 * @param mapping The mapping used to select this instance
294 * @param request The servlet request we are processing
295 */
296 public ActionErrors validate(ActionMapping mapping,
297 HttpServletRequest request) {
298
299 // Perform validator framework validations
300 ActionErrors errors = super.validate(mapping, request);
301
302 // Only need crossfield validations here
303 if (((password == null) && (password2 != null)) ||
304 ((password != null) && (password2 == null)) ||
305 ((password != null) && (password2 != null) &&
306 !password.equals(password2))) {
307 errors.add("password2",
308 new ActionMessage("error.password.match"));
309 }
310 return errors;
311
312 }
313
314
315 }