Author: husted
Date: Fri Apr 7 10:18:15 2006
New Revision: 392338
URL: http://svn.apache.org/viewcvs?rev=392338&view=rev
Log:
MailReader Course
* Add lab 3-2
Added:
struts/sandbox/trunk/mailreader-course/action2/lab-3-2/
- copied from r392136,
struts/sandbox/trunk/mailreader-course/action2/lab-3-1/
struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/webapp/WEB-INF/webtest.properties.sample
Modified:
struts/sandbox/trunk/mailreader-course/action2/lab-3-1/src/java/resources.properties
struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/java/Login-validation.xml
struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/java/MailReaderSupport.java
struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/java/Register-validation.xml
struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/java/Register.java
struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/java/resources.properties
struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/java/xwork.xml
struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/webapp/WEB-INF/webtest.xml
struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/webapp/pages/Menu.jsp
struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/webapp/pages/Register.jsp
struts/sandbox/trunk/mailreader-course/action2/mailreader-course-action2.ipr
Modified:
struts/sandbox/trunk/mailreader-course/action2/lab-3-1/src/java/resources.properties
URL:
http://svn.apache.org/viewcvs/struts/sandbox/trunk/mailreader-course/action2/lab-3-1/src/java/resources.properties?rev=392338&r1=392337&r2=392338&view=diff
==============================================================================
---
struts/sandbox/trunk/mailreader-course/action2/lab-3-1/src/java/resources.properties
(original)
+++
struts/sandbox/trunk/mailreader-course/action2/lab-3-1/src/java/resources.properties
Fri Apr 7 10:18:15 2006
@@ -16,6 +16,7 @@
button.cancel=Cancel
button.save=Save
+button.reset=Reset
menu.title=MailReader - Main Menu
menu.heading=Menu Options for
@@ -46,7 +47,6 @@
button.doSubmit=DO_SUBMIT
button.doReset=DO_RESULT
button.doCancel=org.apache.struts.taglib.html.CANCEL
-button.reset=Reset
change.message=Your password has expired. Please ask the system administrator
to change it.
change.try=Try Again
change.title=Password Has Expired
Modified:
struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/java/Login-validation.xml
URL:
http://svn.apache.org/viewcvs/struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/java/Login-validation.xml?rev=392338&r1=392136&r2=392338&view=diff
==============================================================================
---
struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/java/Login-validation.xml
(original)
+++
struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/java/Login-validation.xml
Fri Apr 7 10:18:15 2006
@@ -3,12 +3,12 @@
<validators>
<field name="username">
<field-validator type="requiredstring">
- <message>Username is required</message>
+ <message key="error.username.required"/>
</field-validator>
</field>
<field name="password">
<field-validator type="requiredstring">
- <message>Password is required</message>
+ <message key="error.password.required"/>
</field-validator>
</field>
</validators>
Modified:
struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/java/MailReaderSupport.java
URL:
http://svn.apache.org/viewcvs/struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/java/MailReaderSupport.java?rev=392338&r1=392136&r2=392338&view=diff
==============================================================================
---
struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/java/MailReaderSupport.java
(original)
+++
struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/java/MailReaderSupport.java
Fri Apr 7 10:18:15 2006
@@ -73,6 +73,18 @@
replyToAddress = value;
}
+ // ---- Task property (utilized by UI) ----
+
+ private String task = null;
+
+ public String getTask() {
+ return task;
+ }
+
+ public void setTask(String value) {
+ task = value;
+ }
+
// ---- Keys ----
public static final String DATABASE_KEY = "database";
@@ -83,16 +95,23 @@
public static final String CANCEL = "cancel";
- // ---- Messages ----
+ public static final String CREATE = "Create";
+
+ public static final String EDIT = "Edit";
+
+ // ---- Message Keys ----
public static final String ERROR_DATABASE_MISSING =
- "Database is missing";
+ "error.database.missing";
public static final String ERROR_USERNAME_UNIQUE =
- "That username is already in use - please select another";
+ "error.username.unique";
public static final String ERROR_PASSWORD_MISMATCH =
- "Invalid username and/or password, please try again";
+ "error.password.mismatch";
+
+ public static final String ERROR_PASSWORD_MATCH =
+ "error.password.match";
// ---- ApplicationAware ----
@@ -111,7 +130,7 @@
public UserDatabase getDatabase() {
Object db = getApplication().get(DATABASE_KEY);
if (db == null) {
- this.addActionError(ERROR_DATABASE_MISSING);
+ this.addActionError(getText(ERROR_DATABASE_MISSING));
}
return (UserDatabase) db;
}
@@ -191,7 +210,7 @@
User user = database.findUser(username);
if (user != null) {
- addActionError(ERROR_USERNAME_UNIQUE);
+ addActionError(getText(ERROR_USERNAME_UNIQUE));
return null;
}
Modified:
struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/java/Register-validation.xml
URL:
http://svn.apache.org/viewcvs/struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/java/Register-validation.xml?rev=392338&r1=392136&r2=392338&view=diff
==============================================================================
---
struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/java/Register-validation.xml
(original)
+++
struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/java/Register-validation.xml
Fri Apr 7 10:18:15 2006
@@ -4,52 +4,29 @@
<field name="username">
<field-validator type="requiredstring">
- <message>Username is required</message>
+ <message key="error.username.required"/>
</field-validator>
</field>
- <field name="fullName">
+ <field name="user.fullName">
<field-validator type="requiredstring">
- <message>Full Name is required</message>
+ <message key="error.fullName.required"/>
</field-validator>
</field>
- <field name="fromAddress">
+ <field name="user.fromAddress">
<field-validator type="requiredstring">
- <message>From Address is required</message>
+ <message key="error.fromAddress.required"/>
</field-validator>
<field-validator type="email">
- <message>Invalid format for From Address</message>
+ <message key="errors.email"/>
</field-validator>
</field>
- <field name="replyToAddress">
+ <field name="user.replyToAddress">
<field-validator type="email">
- <message>Invalid format for Reply To Address</message>
+ <message key="errors.email"/>
</field-validator>
</field>
-
- <field name="password">
- <field-validator type="requiredstring">
- <message>Password is required</message>
- </field-validator>
- <field-validator type="stringlength">
- <param name="trim">true</param>
- <param name="minLength">4</param>
- <param name="maxLength">10</param>
- <message>Password length is not in the range 4 through
10.</message>
- </field-validator>
- </field>
-
- <field name="password2">
- <field-validator type="requiredstring">
- <message>Confirmation password is required</message>
- </field-validator>
- </field>
-
- <validator type="expression">
- <param name="expression">password eq password2</param>
- <message>Invalid username and/or password, please try again</message>
- </validator>
</validators>
Modified:
struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/java/Register.java
URL:
http://svn.apache.org/viewcvs/struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/java/Register.java?rev=392338&r1=392136&r2=392338&view=diff
==============================================================================
---
struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/java/Register.java
(original)
+++
struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/java/Register.java
Fri Apr 7 10:18:15 2006
@@ -1,26 +1,65 @@
-import com.opensymphony.xwork.Action;
+import com.opensymphony.util.BeanUtils;
import org.apache.struts.apps.mailreader.dao.User;
public class Register extends MailReaderSupport {
+ public String input() throws Exception {
+
+ User user = getUser();
+ boolean editing = (null != user);
+
+ if (editing) {
+ setTask(EDIT);
+ BeanUtils.setValues(this, user, null);
+ setPassword(null);
+ } else {
+ setTask(CREATE);
+ }
+
+ return INPUT;
+ }
+
public String execute()
throws Exception {
- User user = findUser(getUsername(), getPassword());
- boolean haveUser = (user != null);
+ User user = getUser();
+ boolean editing = (null != user);
- if (haveUser) {
- addActionError(ERROR_USERNAME_UNIQUE);
- return Action.INPUT;
+ if (editing) {
+ // FIXME: Any way to call the RegisterSave validators from here?
+ String newPassword = getPassword();
+ boolean changing = ((null != newPassword) &&
(newPassword.length()>0));
+ if (!changing) {
+ setPassword(user.getPassword());
+ } else {
+ String confirmPassword = getPassword2();
+ boolean matches = ((null != confirmPassword)
+ && (confirmPassword.equals(newPassword)));
+ if (matches) {
+ user.setPassword(newPassword);
+ } else {
+ addActionError(getText(ERROR_PASSWORD_MATCH));
+ return INPUT;
+ }
+ }
+ BeanUtils.setValues(user, this, null);
}
- user = createUser(getUsername(), getPassword());
+ if (!editing) {
+ user = findUser(getUsername(), getPassword());
+ boolean haveUser = (user != null);
+
+ if (haveUser) {
+ addActionError(getText(ERROR_USERNAME_UNIQUE));
+ return INPUT;
+ }
- setUser(user);
+ user = createUser(getUsername(), getPassword());
+ setUser(user);
+ }
saveUser();
- return Action.SUCCESS;
+ return SUCCESS;
}
-
}
Modified:
struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/java/resources.properties
URL:
http://svn.apache.org/viewcvs/struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/java/resources.properties?rev=392338&r1=392136&r2=392338&view=diff
==============================================================================
---
struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/java/resources.properties
(original)
+++
struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/java/resources.properties
Fri Apr 7 10:18:15 2006
@@ -14,6 +14,9 @@
fromAddress=From Address
replyToAddress=Reply To Address
+button.cancel=Cancel
+button.save=Save
+
menu.title=MailReader - Main Menu
menu.heading=Menu Options for
menu.registration=Edit your registration profile
@@ -21,41 +24,41 @@
login.title=MailReader - Logon
+error.database.missing=User database is missing, cannot validate logon
credentials
+error.username.unique=That username is already in use - please select another
+error.password.mismatch=Invalid username and/or password, please try again
+
+error.username.required=Username is required
+error.fullName.required=Full Name is required
+error.fromAddress.required=From Address is required
+error.fromAddress.format=Invalid format for From Address
+error.replyToAddress.format=Invalid format for Reply To Address
+error.password.required=Password is required
+error.password2.required=Confirmation password is required
+error.password.match=Password and confirmation password must match
+
+error.host.required=Mail Server is required
+error.type.invalid=Server Type must be 'imap' or 'pop3'
+error.type.required=Server Type is required
# Future use
-button.cancel=Cancel
button.confirm=Confirm
button.doSubmit=DO_SUBMIT
button.doReset=DO_RESULT
button.doCancel=org.apache.struts.taglib.html.CANCEL
button.reset=Reset
-button.save=Save
change.message=Your password has expired. Please ask the system administrator
to change it.
change.try=Try Again
change.title=Password Has Expired
database.load=Cannot load database from {0}
-error.database.missing=User database is missing, cannot validate logon
credentials
-error.fromAddress.format=Invalid format for From Address
-error.fromAddress.required=From Address is required
-error.fullName.required=Full Name is required
-error.host.required=Mail Server is required
-error.noSubscription=No Subscription bean in user session
-error.password.expired=Your password has expired for username {0}
-error.password.required=Password is required
-error.password2.required=Confirmation password is required
-error.password.match=Password and confirmation password must match
-error.password.mismatch=Invalid username and/or password, please try again
-error.replyToAddress.format=Invalid format for Reply To Address
webwork.messages.invalid.token=Cannot submit this form out of order
-error.type.invalid=Server Type must be 'imap' or 'pop3'
-error.type.required=Server Type is required
-error.username.required=Username is required
-error.username.unique=That username is already in use - please select another
errors.footer=</ul><hr>
errors.header=<h3><font color="red">Validation Error</font></h3><p>You must
correct the following error(s) before proceeding:</p><ul>
errors.prefix=<li>
errors.suffix=</li>
errors.ioException=I/O exception rendering error messages: {0}
+error.noSubscription=No Subscription bean in user session
+error.password.expired=Your password has expired for username {0}
expired.password=User Password has expired for {0}
heading.autoConnect=Auto
heading.subscriptions=Current Subscriptions
Modified:
struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/java/xwork.xml
URL:
http://svn.apache.org/viewcvs/struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/java/xwork.xml?rev=392338&r1=392136&r2=392338&view=diff
==============================================================================
--- struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/java/xwork.xml
(original)
+++ struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/java/xwork.xml
Fri Apr 7 10:18:15 2006
@@ -25,6 +25,11 @@
<result type="redirect-action">Menu</result>
</action>
+ <action name="RegisterSave" class="RegisterSave">
+ <result name="input">/pages/Register.jsp</result>
+ <result type="redirect-action">Menu</result>
+ </action>
+
<action name="Menu" class="MailReaderSupport">
<result>/pages/Menu.jsp</result>
</action>
Added:
struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/webapp/WEB-INF/webtest.properties.sample
URL:
http://svn.apache.org/viewcvs/struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/webapp/WEB-INF/webtest.properties.sample?rev=392338&view=auto
==============================================================================
---
struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/webapp/WEB-INF/webtest.properties.sample
(added)
+++
struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/webapp/WEB-INF/webtest.properties.sample
Fri Apr 7 10:18:15 2006
@@ -0,0 +1,15 @@
+# -----------------------------------------------------------------------------
+# webtest.properties.sample
+#
+# This is an example "webtest.properties" file, used to customize building
Struts
+# for your local environment. Make any changes you need, and rename this file
+# to "webtest.properties" in the same directory that contains the Struts
+# "webtest.xml" file.
+# -----------------------------------------------------------------------------
+webtest.home = /opt/Canoo/webtest-1.7
+host = localhost
+port = 8080
+basepath = lab-2-2
+webapps.home = /opt/Apache/Tomcat-5.5/webapps/
+resource.home =
${webapps.home}/${basepath}/WEB-INF/classes/resources.properties"
+# mailreader.home =
Modified:
struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/webapp/WEB-INF/webtest.xml
URL:
http://svn.apache.org/viewcvs/struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/webapp/WEB-INF/webtest.xml?rev=392338&r1=392136&r2=392338&view=diff
==============================================================================
---
struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/webapp/WEB-INF/webtest.xml
(original)
+++
struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/webapp/WEB-INF/webtest.xml
Fri Apr 7 10:18:15 2006
@@ -15,7 +15,7 @@
]>
<project name="MailReader Training Course - Exercise navigation and database
logic
-- Canoo WebTests" basedir="." default="Register">
+- Canoo WebTests" basedir="." default="clean">
<!--
Canoo WebTest configuration file to test navigating between pages and
@@ -52,18 +52,16 @@
The tests are based on a set of MailReader Use Cases maintained at the
Struts University site
[http://opensource2.atlassian.com/confluence/oss/display/STRUTS/MailReader].
-
- @version $Revision: 1.2 $ $Date: 2005-12-31 15:10:04 -0500 (Sat, 31 Dec
2005) $
*/
-->
<!-- Load local preferences, if any -->
- <!-- property file="webtest.properties"/ -->
+ <property file="webtest.properties" />
<!-- These properties can be customized using via webtest.properties -->
<!-- See webtest.properties.sample for a starter file -->
<property name="webtest.home"
- location="C:/opt/Canoo/webtest-1.7"/>
+ location="/opt/Canoo/webtest-1.7"/>
<property name="host"
value="localhost"/>
@@ -75,19 +73,13 @@
value="lab-2-2"/>
<property name="mailreader.home"
- location=""/>
+ location="../../../"/>
<property name="webapps.home"
- location="C:/opt/Apache/Tomcat-5.0/webapps/"/>
-
- <!-- Load application resources
+ location="/opt/Apache/Tomcat-5.5/webapps"/>
- <property name="resource.home"
-
location="${mailreader.home}/src/java/org/apache/struts/apps/mailreader/resources/ApplicationResources.properties"/>
+ <property
file="${webapps.home}/${basepath}/WEB-INF/classes/resources.properties"/>
- <property file="${resource.home}"/>
-
- -->
<taskdef file="${webtest.home}/webtestTaskdefs.properties">
<classpath>
@@ -96,9 +88,6 @@
</classpath>
</taskdef>
- <target name="clean" description="Only run against a clean database"
- depends="Register"/>
-
<target name="clean-database"
description="Sets database.xml to default. Stop server, run
target, and Start server.">
<copy file="${mailreader.home}/src/java/database.xml"
@@ -108,6 +97,9 @@
<!-- ADD YOUR TARGETS HERE -->
+ <target name="clean" description="Only run against a clean database"
+ depends="Register"/>
+
<target name="Register"
description="Subscribers can store login credentials and a
primary email contact with the system.">
@@ -118,8 +110,8 @@
®ister-open;
®ister-trillian;
<verifyTitle
- description="Menu page title"
- text="MailReader - Menu"/>
+ description="Menu page title"
+ text="MailReader - Menu"/>
</steps>
</webtest>
Modified:
struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/webapp/pages/Menu.jsp
URL:
http://svn.apache.org/viewcvs/struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/webapp/pages/Menu.jsp?rev=392338&r1=392136&r2=392338&view=diff
==============================================================================
---
struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/webapp/pages/Menu.jsp
(original)
+++
struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/webapp/pages/Menu.jsp
Fri Apr 7 10:18:15 2006
@@ -4,7 +4,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
- <title><ww:text name="mainMenu.title"/></title>
+ <title><ww:text name="menu.title"/></title>
</head>
<body>
Modified:
struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/webapp/pages/Register.jsp
URL:
http://svn.apache.org/viewcvs/struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/webapp/pages/Register.jsp?rev=392338&r1=392136&r2=392338&view=diff
==============================================================================
---
struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/webapp/pages/Register.jsp
(original)
+++
struts/sandbox/trunk/mailreader-course/action2/lab-3-2/src/webapp/pages/Register.jsp
Fri Apr 7 10:18:15 2006
@@ -4,33 +4,58 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
- <title><ww:text name="registration.title.create"/></title>
+ <ww:if test="task=='Create'">
+ <title><ww:text name="registration.title.create"/></title>
+ </ww:if>
+ <ww:if test="task=='Edit'">
+ <title><ww:text name="registration.title.edit"/></title>
+ </ww:if>
</head>
<body onLoad="self.focus();document.Register.username.focus()">
<ww:actionerror/>
<ww:form method="POST" validate="true">
-
- <ww:textfield label="%{getText('username')}" name="username"/>
+ <ww:hidden name="task"/>
+ <ww:if test="task == 'Create'">
+ <ww:textfield label="%{getText('username')}" name="username"/>
+ </ww:if>
+ <ww:else>
+ <ww:label label="%{getText('username')}" name="username"/>
+ <ww:hidden name="username"/>
+ </ww:else>
<ww:password label="%{getText('password')}" name="password"/>
<ww:password label="%{getText('password2')}" name="password2"/>
- <ww:textfield label="Full Name" name="fullName"/>
+ <ww:textfield label="%{getText('fullName')}"
+ name="user.fullName"/>
- <ww:textfield label="From Address" name="fromAddress"/>
+ <ww:textfield label="%{getText('fromAddress')}"
+ name="user.fromAddress"/>
- <ww:textfield label="Reply To Address" name="replyToAddress"/>
+ <ww:textfield label="%{getText('replyToAddress')}"
+ name="user.replyToAddress"/>
- <ww:submit value="%{getText('button.save')}" name="Save"/>
+ <ww:if test="task == 'Create'">
+ <ww:submit value="%{getText('button.save')}" action="RegisterSave"/>
- <ww:submit action="Register!cancel" value="%{getText('button.cancel')}"
name="Cancel"
- onclick="form.onsubmit=null"/>
-
-</ww:form>
+ <ww:reset value="%{getText('button.reset')}"/>
+
+ <ww:submit action="Welcome" value="%{getText('button.cancel')}"
+ onclick="form.onsubmit=null"/>
+ </ww:if>
+ <ww:else>
+ <ww:submit value="%{getText('button.save')}" action="Register"/>
+ <ww:reset value="%{getText('button.reset')}"/>
+
+ <ww:submit action="Menu" value="%{getText('button.cancel')}"
+ onclick="form.onsubmit=null"/>
+ </ww:else>
+
+</ww:form>
</body>
</html>
Modified:
struts/sandbox/trunk/mailreader-course/action2/mailreader-course-action2.ipr
URL:
http://svn.apache.org/viewcvs/struts/sandbox/trunk/mailreader-course/action2/mailreader-course-action2.ipr?rev=392338&r1=392337&r2=392338&view=diff
==============================================================================
---
struts/sandbox/trunk/mailreader-course/action2/mailreader-course-action2.ipr
(original)
+++
struts/sandbox/trunk/mailreader-course/action2/mailreader-course-action2.ipr
Fri Apr 7 10:18:15 2006
@@ -9,6 +9,13 @@
<maximumHeapSize value="128" />
<properties />
</buildFile>
+ <buildFile
url="file://$PROJECT_DIR$/lab-3-1/src/webapp/WEB-INF/webtest.xml">
+ <additionalClassPath />
+ <antReference projectDefault="true" />
+ <customJdkName value="" />
+ <maximumHeapSize value="128" />
+ <properties />
+ </buildFile>
</component>
<component name="CodeStyleSettingsManager">
<option name="PER_PROJECT_SETTINGS" />
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]