Author: niallp
Date: Thu Jun  8 12:08:02 2006
New Revision: 412834

URL: http://svn.apache.org/viewvc?rev=412834&view=rev
Log:
Fix for STR-2883 - Command corresponding to 
RequestProcessor.processCachedMessages() method is missing

Added:
    
struts/action/trunk/core/src/main/java/org/apache/struts/chain/commands/RemoveCachedMessages.java
   (with props)
Modified:
    
struts/action/trunk/core/src/main/resources/org/apache/struts/chain/chain-config.xml
    struts/action/trunk/src/site/xdoc/userGuide/building_controller.xml

Added: 
struts/action/trunk/core/src/main/java/org/apache/struts/chain/commands/RemoveCachedMessages.java
URL: 
http://svn.apache.org/viewvc/struts/action/trunk/core/src/main/java/org/apache/struts/chain/commands/RemoveCachedMessages.java?rev=412834&view=auto
==============================================================================
--- 
struts/action/trunk/core/src/main/java/org/apache/struts/chain/commands/RemoveCachedMessages.java
 (added)
+++ 
struts/action/trunk/core/src/main/java/org/apache/struts/chain/commands/RemoveCachedMessages.java
 Thu Jun  8 12:08:02 2006
@@ -0,0 +1,73 @@
+/*
+ * $Id$
+ *
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.struts.chain.commands;
+
+import java.util.Map;
+import org.apache.struts.Globals;
+import org.apache.struts.chain.contexts.ActionContext;
+import org.apache.struts.action.ActionMessages;
+
+/**
+ * <p>Remove cached messages stored in the session.</p>
+ *
+ * @version $Id$
+ * @since Struts 1.3.5
+ */
+public class RemoveCachedMessages extends ActionCommandBase {
+
+    /**
+     * <p>Removes any <code>ActionMessages</code> object stored in the session 
+     * under <code>Globals.MESSAGE_KEY</code> and 
<code>Globals.ERROR_KEY</code> 
+     * if the messages' <code>isAccessed</code> method returns true.  This 
+     * allows messages to be stored in the session, displayed one time, and be 
+     * released here.</p>
+     *
+     * @param actionCtx The <code>Context</code> for the current request
+     * @return <code>false</code> so that processing continues
+     * @throws Exception on any error
+     */
+    public boolean execute(ActionContext actionCtx)
+        throws Exception {
+
+        // Get session scope
+        Map session = actionCtx.getSessionScope();
+
+        // Remove messages as needed
+        removeAccessedMessages(session, Globals.MESSAGE_KEY);
+
+        // Remove error messages as needed
+        removeAccessedMessages(session, Globals.ERROR_KEY);
+
+        return false;
+    }
+
+    /**
+     * <p>Removes any <code>ActionMessages</code> object from the specified
+     * scope stored under the specified key if the messages' 
+     * <code>isAccessed</code> method returns true.
+     *
+     * @param scope The scope to check for messages in.
+     * @param key The key the messages are stored under.
+     */
+    private void removeAccessedMessages(Map scope, String key) {
+        ActionMessages messages = (ActionMessages)scope.get(key);
+        if (messages != null && messages.isAccessed()) {
+            scope.remove(key);
+        }
+    }
+}

Propchange: 
struts/action/trunk/core/src/main/java/org/apache/struts/chain/commands/RemoveCachedMessages.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
struts/action/trunk/core/src/main/java/org/apache/struts/chain/commands/RemoveCachedMessages.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Modified: 
struts/action/trunk/core/src/main/resources/org/apache/struts/chain/chain-config.xml
URL: 
http://svn.apache.org/viewvc/struts/action/trunk/core/src/main/resources/org/apache/struts/chain/chain-config.xml?rev=412834&r1=412833&r2=412834&view=diff
==============================================================================
--- 
struts/action/trunk/core/src/main/resources/org/apache/struts/chain/chain-config.xml
 (original)
+++ 
struts/action/trunk/core/src/main/resources/org/apache/struts/chain/chain-config.xml
 Thu Jun  8 12:08:02 2006
@@ -87,6 +87,8 @@
                                      point in the chain without modifying the
                                      standard definition.
 
+             processCachedMessages   RemoveCachedMessages
+
              processMapping          SelectAction (which also does processPath)
 
              processRoles            AuthorizeAction
@@ -132,6 +134,11 @@
         <!-- Set (if needed) the HTTP response content type -->
         <command
                 
className="org.apache.struts.chain.commands.servlet.SetContentType"/>
+
+
+        <!-- Remove messages cached in the Session -->
+        <command
+                
className="org.apache.struts.chain.commands.RemoveCachedMessages"/>
 
 
         <!-- Identify the ActionConfig for this request -->

Modified: struts/action/trunk/src/site/xdoc/userGuide/building_controller.xml
URL: 
http://svn.apache.org/viewvc/struts/action/trunk/src/site/xdoc/userGuide/building_controller.xml?rev=412834&r1=412833&r2=412834&view=diff
==============================================================================
--- struts/action/trunk/src/site/xdoc/userGuide/building_controller.xml 
(original)
+++ struts/action/trunk/src/site/xdoc/userGuide/building_controller.xml Thu Jun 
 8 12:08:02 2006
@@ -245,6 +245,20 @@
 
                     <tr>
                         <td>
+                            RemoveCachedMessages
+                        </td>
+                        <td>
+                            Removes any <code>ActionMessages</code> object 
stored
+                            in the session under 
<code>Globals.MESSAGE_KEY</code>
+                            and <code>Globals.ERROR_KEY</code> if the 
messages' 
+                            <code>isAccessed</code> method returns true.  This 
+                            allows messages to be stored in the session, 
displayed
+                            one time, and be released.
+                        </td>
+                    </tr>
+
+                    <tr>
+                        <td>
                             SetContentType
                         </td>
                         <td>
@@ -513,6 +527,12 @@
                             support additional processing hooks at any
                             point in the chain without modifying the
                             standard definition.
+                        </td>
+                    </tr>
+                    <tr>
+                        <td>
+                            processCachedMessages</td>
+                        <td>RemoveCachedMessages
                         </td>
                     </tr>
                     <tr>


Reply via email to