You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by ts...@apache.org on 2007/10/31 02:55:33 UTC

svn commit: r590536 - in /struts/struts2/trunk/core/src: main/java/org/apache/struts2/interceptor/ClearSessionInterceptor.java test/java/org/apache/struts2/interceptor/ClearSessionInterceptorTest.java

Author: tschneider
Date: Tue Oct 30 18:55:32 2007
New Revision: 590536

URL: http://svn.apache.org/viewvc?rev=590536&view=rev
Log:
WW-1622 - added interceptor to clear out the http session

Added:
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/interceptor/ClearSessionInterceptor.java
    struts/struts2/trunk/core/src/test/java/org/apache/struts2/interceptor/ClearSessionInterceptorTest.java

Added: struts/struts2/trunk/core/src/main/java/org/apache/struts2/interceptor/ClearSessionInterceptor.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/interceptor/ClearSessionInterceptor.java?rev=590536&view=auto
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/interceptor/ClearSessionInterceptor.java (added)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/interceptor/ClearSessionInterceptor.java Tue Oct 30 18:55:32 2007
@@ -0,0 +1,93 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.struts2.interceptor;
+
+import java.util.Map;
+
+import com.opensymphony.xwork2.ActionContext;
+import com.opensymphony.xwork2.ActionInvocation;
+import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
+import com.opensymphony.xwork2.util.logging.Logger;
+import com.opensymphony.xwork2.util.logging.LoggerFactory;
+
+/**
+ * <!-- START SNIPPET: description -->
+ *
+ * This interceptor clears the HttpSession.
+ * <p/>
+ *
+ * <!-- END SNIPPET: description -->
+ *
+ * <p/> <u>Interceptor parameters:</u>
+ *
+ *
+ * <!-- START SNIPPET: extending -->
+ *
+ * <ul>
+ *  <li>none</li>
+ * </ul>
+ *
+ * <!-- END SNIPPET: extending -->
+ *
+ *
+ * <!-- START SNIPPET: parameters -->
+ *
+ * <ul>
+ *
+ * <li>None</li>
+ *
+ * </ul>
+ *
+ * <!-- END SNIPPET: parameters -->
+ *
+ * <b>Example:</b>
+ *
+ * <pre>
+ * <!-- START SNIPPET: example -->
+ *
+ * &lt;action name="exampleAction" class="com.examples.ExampleAction"&gt;
+ *     &lt;interceptor-ref name="clear-session"/&gt;
+ *     &lt;interceptor-ref name="defaultStack"/&gt;
+ *     &lt;result name="success"&gt;example.jsp&lt;/result&gt;
+ * &lt;/action&gt;
+ *
+ * <!-- END SNIPPET: example -->
+ * </pre>
+ */
+public class ClearSessionInterceptor extends AbstractInterceptor {
+
+    private static final long serialVersionUID = -2102199238428329238L;
+
+    private static final Logger LOG = LoggerFactory.getLogger(ClearSessionInterceptor.class);
+
+    /* (non-Javadoc)
+     * @see com.opensymphony.xwork2.interceptor.Interceptor#intercept(com.opensymphony.xwork2.ActionInvocation)
+     */
+    public String intercept(ActionInvocation invocation) throws Exception {
+        LOG.debug("Clearing HttpSession");
+        ActionContext ac = invocation.getInvocationContext();
+        Map session = ac.getSession();
+ 
+        if (null != session) {
+            session.clear();
+        }
+        return invocation.invoke();
+    }
+}

Added: struts/struts2/trunk/core/src/test/java/org/apache/struts2/interceptor/ClearSessionInterceptorTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/interceptor/ClearSessionInterceptorTest.java?rev=590536&view=auto
==============================================================================
--- struts/struts2/trunk/core/src/test/java/org/apache/struts2/interceptor/ClearSessionInterceptorTest.java (added)
+++ struts/struts2/trunk/core/src/test/java/org/apache/struts2/interceptor/ClearSessionInterceptorTest.java Tue Oct 30 18:55:32 2007
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.struts2.interceptor;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.struts2.StrutsTestCase;
+import org.jmock.Mock;
+
+import com.opensymphony.xwork2.ActionContext;
+import com.opensymphony.xwork2.mock.MockActionInvocation;
+
+/**
+ * Test case for ClearSessionInterceptor.
+ */
+public class ClearSessionInterceptorTest extends StrutsTestCase {
+
+    public void testCreateSession() throws Exception {
+        Mock httpServletRequestMock = new Mock(HttpServletRequest.class);
+
+        ClearSessionInterceptor interceptor = new ClearSessionInterceptor();
+        MockActionInvocation invocation = new MockActionInvocation();
+        ActionContext context = new ActionContext(new HashMap());
+        Map session = new HashMap();
+        session.put("Test1", "Test1");
+        session.put("Test2", "Test2");
+        session.put("Test3", "Test3");
+        context.setSession(session);
+        invocation.setInvocationContext(context);
+        interceptor.intercept(invocation);
+        
+        assertEquals(0, session.size());
+    }
+}