You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by cr...@apache.org on 2006/05/23 04:02:23 UTC

svn commit: r408817 - in /struts/shale/trunk: core-library/src/java/org/apache/shale/component/ use-cases/src/web/WEB-INF/ use-cases/src/web/profile/

Author: craigmcc
Date: Mon May 22 19:02:23 2006
New Revision: 408817

URL: http://svn.apache.org/viewvc?rev=408817&view=rev
Log:
Fix the <s:token> component so that it does not allow a spurious resubmit
to succeed after the first resubmit has failed.  This is done by caching the
token value the first time it is generated, so that the same value is used
if the page is rerendered later.  This works because a given value is only
accepted once.

JIRA Issue:  SHALE-177
Submitted By:  Veit Guna <grave AT gmx.de>

Modified:
    struts/shale/trunk/core-library/src/java/org/apache/shale/component/Token.java
    struts/shale/trunk/use-cases/src/web/WEB-INF/dialog-config.xml
    struts/shale/trunk/use-cases/src/web/profile/logon.jsp
    struts/shale/trunk/use-cases/src/web/profile/profile1.jsp
    struts/shale/trunk/use-cases/src/web/profile/profile2.jsp
    struts/shale/trunk/use-cases/src/web/profile/profile3.jsp

Modified: struts/shale/trunk/core-library/src/java/org/apache/shale/component/Token.java
URL: http://svn.apache.org/viewvc/struts/shale/trunk/core-library/src/java/org/apache/shale/component/Token.java?rev=408817&r1=408816&r2=408817&view=diff
==============================================================================
--- struts/shale/trunk/core-library/src/java/org/apache/shale/component/Token.java (original)
+++ struts/shale/trunk/core-library/src/java/org/apache/shale/component/Token.java Mon May 22 19:02:23 2006
@@ -58,6 +58,13 @@
   
         
     /**
+     * <p>Local component attribute under which we store the token value
+     * the first time it is generated.</p>
+     */
+    private static final String TOKEN_ATTRIBUTE_KEY = "org.apache.shale.Token.TOKEN_VALUE";
+
+
+    /**
      * <p>Message resources for this class
      */
     private static Messages messages =
@@ -263,9 +270,18 @@
      */
     public String getToken() {
 
+        // Have we already generated a token value?  If so, use it
+        String value = (String) getAttributes().get(TOKEN_ATTRIBUTE_KEY);
+        if (value != null) {
+             return value;
+        }
+
+        // Generate a new token value and cache it for reuse if the
+        // current view is rerendered
         FacesContext context = FacesContext.getCurrentInstance();
         TokenProcessor tp = getTokenProcessor(context);
         String token = tp.generate(context);
+        getAttributes().put(TOKEN_ATTRIBUTE_KEY, token);
         if (log.isDebugEnabled()) {
             log.debug("Generating token '" + token + "'");
         }

Modified: struts/shale/trunk/use-cases/src/web/WEB-INF/dialog-config.xml
URL: http://svn.apache.org/viewvc/struts/shale/trunk/use-cases/src/web/WEB-INF/dialog-config.xml?rev=408817&r1=408816&r2=408817&view=diff
==============================================================================
--- struts/shale/trunk/use-cases/src/web/WEB-INF/dialog-config.xml (original)
+++ struts/shale/trunk/use-cases/src/web/WEB-INF/dialog-config.xml Mon May 22 19:02:23 2006
@@ -57,6 +57,8 @@
 
     <subdialog           name="Create Profile"
                    dialogName="Edit Profile">
+      <transition     outcome="next"
+                       target="Exit"/>
       <transition     outcome="success"
                        target="Exit"/>
     </subdialog>

Modified: struts/shale/trunk/use-cases/src/web/profile/logon.jsp
URL: http://svn.apache.org/viewvc/struts/shale/trunk/use-cases/src/web/profile/logon.jsp?rev=408817&r1=408816&r2=408817&view=diff
==============================================================================
--- struts/shale/trunk/use-cases/src/web/profile/logon.jsp (original)
+++ struts/shale/trunk/use-cases/src/web/profile/logon.jsp Mon May 22 19:02:23 2006
@@ -37,7 +37,7 @@
 
       <f:facet           name="header">
         <h:messages
-                   globalOnly="true"/>
+                   globalOnly="false"/>
       </f:facet>
 
       <%-- "remember" --%>

Modified: struts/shale/trunk/use-cases/src/web/profile/profile1.jsp
URL: http://svn.apache.org/viewvc/struts/shale/trunk/use-cases/src/web/profile/profile1.jsp?rev=408817&r1=408816&r2=408817&view=diff
==============================================================================
--- struts/shale/trunk/use-cases/src/web/profile/profile1.jsp (original)
+++ struts/shale/trunk/use-cases/src/web/profile/profile1.jsp Mon May 22 19:02:23 2006
@@ -37,7 +37,7 @@
 
       <f:facet           name="header">
         <h:messages
-                   globalOnly="true"/>
+                   globalOnly="false"/>
       </f:facet>
 
       <%-- username --%>

Modified: struts/shale/trunk/use-cases/src/web/profile/profile2.jsp
URL: http://svn.apache.org/viewvc/struts/shale/trunk/use-cases/src/web/profile/profile2.jsp?rev=408817&r1=408816&r2=408817&view=diff
==============================================================================
--- struts/shale/trunk/use-cases/src/web/profile/profile2.jsp (original)
+++ struts/shale/trunk/use-cases/src/web/profile/profile2.jsp Mon May 22 19:02:23 2006
@@ -39,7 +39,7 @@
 
       <f:facet           name="header">
         <h:messages
-                   globalOnly="true"/>
+                   globalOnly="false"/>
       </f:facet>
 
       <%-- fullName --%>

Modified: struts/shale/trunk/use-cases/src/web/profile/profile3.jsp
URL: http://svn.apache.org/viewvc/struts/shale/trunk/use-cases/src/web/profile/profile3.jsp?rev=408817&r1=408816&r2=408817&view=diff
==============================================================================
--- struts/shale/trunk/use-cases/src/web/profile/profile3.jsp (original)
+++ struts/shale/trunk/use-cases/src/web/profile/profile3.jsp Mon May 22 19:02:23 2006
@@ -37,7 +37,7 @@
 
       <f:facet           name="header">
         <h:messages
-                   globalOnly="true"/>
+                   globalOnly="false"/>
       </f:facet>
 
       <%-- categories --%>