[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. |