[Statelessfilter-commits] SF.net SVN: statelessfilter:[73] trunk/stateless-core/src
Status: Beta
Brought to you by:
nricheton
|
From: <nri...@us...> - 2011-02-24 13:08:37
|
Revision: 73
http://statelessfilter.svn.sourceforge.net/statelessfilter/?rev=73&view=rev
Author: nricheton
Date: 2011-02-24 13:08:31 +0000 (Thu, 24 Feb 2011)
Log Message:
-----------
https://sourceforge.net/apps/mantisbt/statelessfilter/view.php?id=23
Modified Paths:
--------------
trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/session/StatelessSession.java
Added Paths:
-----------
trunk/stateless-core/src/test/java/net/sourceforge/statelessfilter/filter/Bug23Test.java
Modified: trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/session/StatelessSession.java
===================================================================
--- trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/session/StatelessSession.java 2011-02-23 17:16:06 UTC (rev 72)
+++ trunk/stateless-core/src/main/java/net/sourceforge/statelessfilter/session/StatelessSession.java 2011-02-24 13:08:31 UTC (rev 73)
@@ -41,7 +41,9 @@
*/
@SuppressWarnings("deprecation")
public class StatelessSession implements HttpSession, Serializable {
- final private static String SECURE_ALGORITHM = "SHA1PRNG"; //$NON-NLS-1$
+ final private static String SECURE_ALGORITHM = "SHA1PRNG"; //$NON-NLS-1$
+
+ final private static String NULL_VALUE = "net.sourceforge.statelessfilter.session.NullValue";
/**
* Generated serial ID
*/
@@ -61,17 +63,16 @@
private volatile List<String> modifiedAttributes = new Vector<String>();
/**
- * Were this session properties (validity, maxInactiveInterval) modified during the
- * current request.
+ * Were this session properties (validity, maxInactiveInterval) modified
+ * during the current request.
*/
private volatile boolean propertyDirty = false;
-
+
/**
- * Was this session modified during the current request.
+ * Was this session modified during the current request.
*/
private volatile boolean dirty = false;
-
private final StatelessRequestWrapper request;
private boolean valid;
@@ -88,7 +89,13 @@
* @see javax.servlet.http.HttpSession#getAttribute(java.lang.String)
*/
public Object getAttribute(String name) {
- return content.get(name);
+ Object result = content.get(name);
+
+ if (result instanceof String && NULL_VALUE.equals(result)) {
+ result = null;
+ }
+
+ return result;
}
/**
@@ -162,7 +169,7 @@
*/
@Deprecated
public Object getValue(String name) {
- return content.get(name);
+ return getAttribute(name);
}
/**
@@ -264,8 +271,7 @@
*/
@Deprecated
public void putValue(String name, Object value) {
- content.put(name, value);
- setAttributeDirty(name);
+ setAttribute(name, value);
}
/**
@@ -282,8 +288,7 @@
*/
@Deprecated
public void removeValue(String name) {
- content.remove(name);
- setAttributeDirty(name);
+ removeAttribute(name);
}
/**
@@ -291,7 +296,13 @@
* java.lang.Object)
*/
public void setAttribute(String name, Object value) {
- content.put(name, value);
+ Object toInsert = value;
+
+ if (toInsert == null) {
+ toInsert = NULL_VALUE;
+ }
+
+ content.put(name, toInsert);
setAttributeDirty(name);
}
Added: trunk/stateless-core/src/test/java/net/sourceforge/statelessfilter/filter/Bug23Test.java
===================================================================
--- trunk/stateless-core/src/test/java/net/sourceforge/statelessfilter/filter/Bug23Test.java (rev 0)
+++ trunk/stateless-core/src/test/java/net/sourceforge/statelessfilter/filter/Bug23Test.java 2011-02-24 13:08:31 UTC (rev 73)
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2009-2010 Capgemini
+ * 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 net.sourceforge.statelessfilter.filter;
+
+import java.io.IOException;
+
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+
+import junit.framework.TestCase;
+import net.sourceforge.statelessfilter.backend.MockSessionBackend;
+
+import org.springframework.mock.web.MockFilterChain;
+import org.springframework.mock.web.MockFilterConfig;
+import org.springframework.mock.web.MockHttpServletRequest;
+import org.springframework.mock.web.MockHttpServletResponse;
+
+/**
+ * Tests for bug
+ * https://sourceforge.net/apps/mantisbt/statelessfilter/view.php?id=23
+ *
+ * @author Nicolas Richeton - Capgemini
+ *
+ */
+public class Bug23Test extends TestCase {
+ Object sessionValue ="shouldBeNull";
+
+ public void testSetNull() throws IOException, ServletException {
+ MockSessionBackend.reset();
+
+ StatelessFilter filter = new StatelessFilter();
+ MockFilterConfig config = new MockFilterConfig();
+ filter.init(config);
+
+ MockHttpServletRequest request = new MockHttpServletRequest();
+ MockHttpServletResponse response = new MockHttpServletResponse();
+
+
+ MockFilterChain chain = new MockFilterChain() {
+
+ @Override
+ public void doFilter(ServletRequest request,
+ ServletResponse response) {
+ super.doFilter(request, response);
+
+ HttpServletRequest httpRequest = (HttpServletRequest) request;
+ HttpSession session = httpRequest.getSession();
+ session.setAttribute("null", null);
+
+ sessionValue = session.getAttribute("null");
+ }
+
+ };
+
+ filter.doFilter(request, response, chain);
+
+
+
+ assertTrue(MockSessionBackend.getContent().getContent()
+ .containsKey("null"));
+ assertNull ( sessionValue );
+ }
+
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|