You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@struts.apache.org by hu...@apache.org on 2006/03/22 06:05:42 UTC

svn commit: r387725 - in /struts/sandbox/trunk/action2/apps/mailreader/src: java/ java/mailreader2/ webapp/pages/

Author: husted
Date: Tue Mar 21 21:05:41 2006
New Revision: 387725

URL: http://svn.apache.org/viewcvs?rev=387725&view=rev
Log:
Action2 Apps
* Mailreader - Work in progress
** Switch from "model driven" to POJOs to work around DAO quirks. 

Modified:
    struts/sandbox/trunk/action2/apps/mailreader/src/java/mailreader2/Logon.java
    struts/sandbox/trunk/action2/apps/mailreader/src/java/mailreader2/MailreaderSupport.java
    struts/sandbox/trunk/action2/apps/mailreader/src/java/mailreader2/Registration-validation.xml
    struts/sandbox/trunk/action2/apps/mailreader/src/java/mailreader2/Registration.java
    struts/sandbox/trunk/action2/apps/mailreader/src/java/xwork.xml
    struts/sandbox/trunk/action2/apps/mailreader/src/webapp/pages/Registration.jsp

Modified: struts/sandbox/trunk/action2/apps/mailreader/src/java/mailreader2/Logon.java
URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/action2/apps/mailreader/src/java/mailreader2/Logon.java?rev=387725&r1=387724&r2=387725&view=diff
==============================================================================
--- struts/sandbox/trunk/action2/apps/mailreader/src/java/mailreader2/Logon.java (original)
+++ struts/sandbox/trunk/action2/apps/mailreader/src/java/mailreader2/Logon.java Tue Mar 21 21:05:41 2006
@@ -27,48 +27,6 @@
  */
 public final class Logon extends MailreaderSupport {
 
-    // -------------------------------------------------------------- Properties
-
-    /**
-     * <p>The password input field.</p>
-     */
-    private String password = null;
-
-
-    /**
-     * @return Returns the password.
-     */
-    public String getPassword() {
-        return this.password;
-    }
-
-    /**
-     * @param password The password to set.
-     */
-    public void setPassword(String password) {
-        this.password = password;
-    }
-
-    /**
-     * <p>The username input field.</p>
-     */
-    private String username = null;
-
-
-    /**
-     * @return Returns the username.
-     */
-    public String getUsername() {
-        return this.username;
-    }
-
-    /**
-     * @param username The username to set.
-     */
-    public void setUsername(String username) {
-        this.username = username;
-    }
-
     /**
      * <p> Use "username" and "password" fields to retrieve a User object from the database. If credentials are not
      * valid, or database has disappeared, post error messages and forward to input. </p>

Modified: struts/sandbox/trunk/action2/apps/mailreader/src/java/mailreader2/MailreaderSupport.java
URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/action2/apps/mailreader/src/java/mailreader2/MailreaderSupport.java?rev=387725&r1=387724&r2=387725&view=diff
==============================================================================
--- struts/sandbox/trunk/action2/apps/mailreader/src/java/mailreader2/MailreaderSupport.java (original)
+++ struts/sandbox/trunk/action2/apps/mailreader/src/java/mailreader2/MailreaderSupport.java Tue Mar 21 21:05:41 2006
@@ -21,7 +21,6 @@
 import com.opensymphony.webwork.interceptor.ApplicationAware;
 import com.opensymphony.webwork.interceptor.SessionAware;
 import com.opensymphony.xwork.ActionSupport;
-import com.opensymphony.xwork.ModelDriven;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.struts.apps.mailreader.dao.ExpiredPasswordException;
@@ -32,13 +31,16 @@
 import java.util.Map;
 
 /**
- * <p> Base Action for MailreaderSupport application. </p><p> All the BaseAction helper methods are prefixed with "do"
- * so that they can be easily distinguished from Struts and Servlet API methods. BaseAction subclasses may also have
- * prive "do" helpers of their own. </p><p> Methods are kept in alphabetical order, to make them easier to find. </p>
+ * <p> Base Action for MailreaderSupport application. </p>
+ *
+ * <p> Note that this class does NOT implement model driven because of issues with the pre-existing model. The
+ * MailReader DAO does not provide a setter for username and does not provide a default constructor, making it difficult
+ * to use as a POJO or to extend. As an alternative, the username and password properties are provided on the Action and
+ * then passed to the user class as needed. </p>
  *
  * @version $Rev: 360442 $ $Date: 2005-12-31 15:10:04 -0500 (Sat, 31 Dec 2005) $
  */
-public abstract class MailreaderSupport extends ActionSupport implements ModelDriven, SessionAware, ApplicationAware {
+public class MailreaderSupport extends ActionSupport implements SessionAware, ApplicationAware {
 
     // ---- ApplicationAware ----
 
@@ -64,10 +66,92 @@
         return session;
     }
 
-    // ---- ModelDriven ----
+    // ---- Task property (utilized by UI) ----
+
+    /**
+     * <p>The task input field.</p>
+     */
+    private String task = null;
+
+
+    /**
+     * @return Returns the task.
+     */
+    public String getTask() {
+        return this.task;
+    }
+
+    /**
+     * @param task The task to set.
+     */
+    public void setTask(String task) {
+        this.task = task;
+    }
+
+    // ---- Password property ----
+
+    /**
+     * <p>The password input field.</p>
+     */
+    private String password = null;
+
+
+    /**
+     * @return Returns the password.
+     */
+    public String getPassword() {
+        return this.password;
+    }
+
+    /**
+     * @param password The password to set.
+     */
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+    // ---- Password2 property (confirmation) ----
+
+    /**
+     * <p>The confirmation password input field.</p>
+     */
+    private String password2 = null;
+
+
+    /**
+     * @return Returns the confirmationpassword.
+     */
+    public String getPassword2() {
+        return this.password2;
+    }
+
+    /**
+     * @param password2 The confirmation password to set.
+     */
+    public void setPassword2(String password2) {
+        this.password2 = password2;
+    }
+
+    // ---- Username property ----
+
+    /**
+     * <p>The username input field.</p>
+     */
+    private String username = null;
+
+
+    /**
+     * @return Returns the username.
+     */
+    public String getUsername() {
+        return this.username;
+    }
 
-    public Object getModel() {
-        return getSession().get(Constants.USER_KEY);
+    /**
+     * @param username The username to set.
+     */
+    public void setUsername(String username) {
+        this.username = username;
     }
 
     // ---- Database property ----
@@ -92,7 +176,7 @@
     // ---- User property ----
 
     public User getUser() {
-        return (User) getModel();
+        return (User) getSession().get(Constants.USER_KEY);
     }
 
     public void setUser(User user) {
@@ -148,26 +232,6 @@
 
     protected void getSubscriprtion(Subscription subscription) {
         getSession().put(Constants.SUBSCRIPTION_KEY, subscription);
-    }
-
-    /**
-     * <p>The task input field.</p>
-     */
-    private String task = null;
-
-
-    /**
-     * @return Returns the task.
-     */
-    public String getTask() {
-        return this.task;
-    }
-
-    /**
-     * @param task The task to set.
-     */
-    public void setTask(String task) {
-        this.task = task;
     }
 
 

Modified: struts/sandbox/trunk/action2/apps/mailreader/src/java/mailreader2/Registration-validation.xml
URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/action2/apps/mailreader/src/java/mailreader2/Registration-validation.xml?rev=387725&r1=387724&r2=387725&view=diff
==============================================================================
--- struts/sandbox/trunk/action2/apps/mailreader/src/java/mailreader2/Registration-validation.xml (original)
+++ struts/sandbox/trunk/action2/apps/mailreader/src/java/mailreader2/Registration-validation.xml Tue Mar 21 21:05:41 2006
@@ -14,7 +14,7 @@
         </field-validator>
         <field-validator type="stringlength">
             <param name="trim">true</param>
-            <param name="minLength">5</param>
+            <param name="minLength">4</param>
             <param name="maxLength">10</param>
             <message key="errors.range"/>
         </field-validator>
@@ -26,13 +26,13 @@
         </field-validator>
     </field>
 
-    <field name="fullname">
+    <field name="user.fullName">
         <field-validator type="requiredstring">
             <message key="error.fullName.required"/>
         </field-validator>
     </field>
 
-    <field name="fromaddress">
+    <field name="user.fromAddress">
         <field-validator type="requiredstring">
             <message key="error.fromAddress.required"/>
         </field-validator>
@@ -41,15 +41,17 @@
         </field-validator>
     </field>
 
-    <field name="replytoaddress">
+    <field name="user.replyToAddress">
         <field-validator type="email">
             <message key="errors.email"/>
         </field-validator>
     </field>
 
+    <!--
     <validator type="expression">
         <param name="expression">password eq password2</param>
         <message key="error.password.match"/>
     </validator>
+     -->
 
 </validators>

Modified: struts/sandbox/trunk/action2/apps/mailreader/src/java/mailreader2/Registration.java
URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/action2/apps/mailreader/src/java/mailreader2/Registration.java?rev=387725&r1=387724&r2=387725&view=diff
==============================================================================
--- struts/sandbox/trunk/action2/apps/mailreader/src/java/mailreader2/Registration.java (original)
+++ struts/sandbox/trunk/action2/apps/mailreader/src/java/mailreader2/Registration.java Tue Mar 21 21:05:41 2006
@@ -14,47 +14,6 @@
  */
 public final class Registration extends MailreaderSupport {
 
-    /**
-     * <p>The confirmation password input field.</p>
-     */
-    private String password2 = null;
-
-
-    /**
-     * @return Returns the confirmationpassword.
-     */
-    public String getPassword2() {
-        return this.password2;
-    }
-
-    /**
-     * @param password2 The confirmation password to set.
-     */
-    public void setPassword2(String password2) {
-        this.password2 = password2;
-    }
-
-
-    /**
-     * <p>The username input field.</p>
-     */
-    private String username = null;
-
-
-    /**
-     * @return Returns the username.
-     */
-    public String getUsername() {
-        return this.username;
-    }
-
-    /**
-     * @param username The username to set.
-     */
-    public void setUsername(String username) {
-        this.username = username;
-    }
-
     // ---- Private Methods ----
 
     /**
@@ -86,13 +45,9 @@
 
     // ----- Public Methods ----
 
-
     private boolean isCreating() {
         User user = getUser();
-        if (null == user) {
-            return true;
-        }
-        return (null == user.getDatabase());
+        return (null == user) || (null == user.getDatabase());
     }
 
     /**
@@ -110,6 +65,9 @@
             setTask(Constants.CREATE);
         } else {
             setTask(Constants.EDIT);
+            setUsername(getUser().getUsername());
+            setPassword(getUser().getPassword());
+            setPassword2(getUser().getPassword());
         }
 
         return INPUT;
@@ -125,16 +83,17 @@
     public String execute()
             throws Exception {
 
-        boolean editing = Constants.EDIT.equals(getTask());
-        // Double check for user and database
-        editing = editing && (null != getUser()) && (null != getUser().getDatabase());
+        boolean creating = Constants.CREATE.equals(getTask());
+        creating = creating && isCreating(); // trust but verify
 
         User user;
-        if (!editing) {
+        if (creating) {
             User input = getUser();
-            // Since user.username is immutable, we have to use a local property
-            user = createUser(getUsername(), input.getPassword());
+            // Since user.username is immutable, we have to use some local properties
+            user = createUser(getUsername(), getPassword());
+            input.setPassword(getPassword());
             BeanUtils.setValues(user, input, null);
+            setUser(user);
         }
 
         saveUser();

Modified: struts/sandbox/trunk/action2/apps/mailreader/src/java/xwork.xml
URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/action2/apps/mailreader/src/java/xwork.xml?rev=387725&r1=387724&r2=387725&view=diff
==============================================================================
--- struts/sandbox/trunk/action2/apps/mailreader/src/java/xwork.xml (original)
+++ struts/sandbox/trunk/action2/apps/mailreader/src/java/xwork.xml Tue Mar 21 21:05:41 2006
@@ -25,7 +25,7 @@
             <result>/pages/ChangePassword.jsp</result>
         </action>
 
-        <action name="MainMenu" class="mailreader2.MainMenu">
+        <action name="MainMenu" class="mailreader2.MailreaderSupport">
             <result>/pages/MainMenu.jsp</result>
             <result name="input">/pages/MainMenu.jsp</result>
         </action>

Modified: struts/sandbox/trunk/action2/apps/mailreader/src/webapp/pages/Registration.jsp
URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/action2/apps/mailreader/src/webapp/pages/Registration.jsp?rev=387725&r1=387724&r2=387725&view=diff
==============================================================================
--- struts/sandbox/trunk/action2/apps/mailreader/src/webapp/pages/Registration.jsp (original)
+++ struts/sandbox/trunk/action2/apps/mailreader/src/webapp/pages/Registration.jsp Tue Mar 21 21:05:41 2006
@@ -12,7 +12,7 @@
 
 <body>
 
-<ww:form method="POST" validate="true">
+<ww:form method="POST" validate="false">
     <ww:hidden name="task"/>
     <ww:if test="task == 'Create'">
         <ww:textfield label="%{getText('prompt.username')}" name="username"/>
@@ -26,17 +26,22 @@
 
     <ww:textfield label="%{getText('prompt.password2')}" name="password2"/>
 
-    <ww:textfield label="%{getText('prompt.fullName')}" name="fullName"/>
+    <ww:textfield label="%{getText('prompt.fullName')}" name="user.fullName"/>
 
-    <ww:textfield label="%{getText('prompt.fromAddress')}" name="fromAddress"/>
+    <ww:textfield label="%{getText('prompt.fromAddress')}" name="user.fromAddress"/>
 
-    <ww:textfield label="%{getText('prompt.replyToAddress')}" name="replyToAddress"/>
+    <ww:textfield label="%{getText('prompt.replyToAddress')}" name="user.replyToAddress"/>
 
     <ww:submit/>
 
     <ww:reset/>
 
-    <ww:submit action="Welcome" value="%{getText('button.cancel')}" onclick="form.onsubmit=null"/>
+    <ww:if test="task == 'Create'">
+        <ww:submit action="Welcome" value="%{getText('button.cancel')}" onclick="form.onsubmit=null"/>
+    </ww:if>
+    <ww:else>
+        <ww:submit action="MainMenu" value="%{getText('button.cancel')}" onclick="form.onsubmit=null"/>
+    </ww:else>
 
 </ww:form>
 



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@struts.apache.org
For additional commands, e-mail: dev-help@struts.apache.org