You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shiro.apache.org by ka...@apache.org on 2010/07/07 06:12:27 UTC
svn commit: r961162 - in /incubator/shiro/trunk/core/src:
main/java/org/apache/shiro/session/mgt/SimpleSession.java
test/java/org/apache/shiro/session/mgt/SimpleSessionTest.java
Author: kaosko
Date: Wed Jul 7 04:12:26 2010
New Revision: 961162
URL: http://svn.apache.org/viewvc?rev=961162&view=rev
Log:
FIXED - issue SHIRO-182: SimpleSession cannot be deserialized
https://issues.apache.org/jira/browse/SHIRO-182
- fixed the incorrect comparison of expired flag in getAlteredFieldsBitMask
- added two unit tests
Added:
incubator/shiro/trunk/core/src/test/java/org/apache/shiro/session/mgt/SimpleSessionTest.java
Modified:
incubator/shiro/trunk/core/src/main/java/org/apache/shiro/session/mgt/SimpleSession.java
Modified: incubator/shiro/trunk/core/src/main/java/org/apache/shiro/session/mgt/SimpleSession.java
URL: http://svn.apache.org/viewvc/incubator/shiro/trunk/core/src/main/java/org/apache/shiro/session/mgt/SimpleSession.java?rev=961162&r1=961161&r2=961162&view=diff
==============================================================================
--- incubator/shiro/trunk/core/src/main/java/org/apache/shiro/session/mgt/SimpleSession.java (original)
+++ incubator/shiro/trunk/core/src/main/java/org/apache/shiro/session/mgt/SimpleSession.java Wed Jul 7 04:12:26 2010
@@ -500,7 +500,7 @@ public class SimpleSession implements Va
bitMask = stopTimestamp != null ? bitMask | STOP_TIMESTAMP_BIT_MASK : bitMask;
bitMask = lastAccessTime != null ? bitMask | LAST_ACCESS_TIME_BIT_MASK : bitMask;
bitMask = timeout != 0l ? bitMask | TIMEOUT_BIT_MASK : bitMask;
- bitMask = !expired ? bitMask | EXPIRED_BIT_MASK : bitMask;
+ bitMask = expired ? bitMask | EXPIRED_BIT_MASK : bitMask;
bitMask = host != null ? bitMask | HOST_BIT_MASK : bitMask;
bitMask = !CollectionUtils.isEmpty(attributes) ? bitMask | ATTRIBUTES_BIT_MASK : bitMask;
return (short) bitMask;
Added: incubator/shiro/trunk/core/src/test/java/org/apache/shiro/session/mgt/SimpleSessionTest.java
URL: http://svn.apache.org/viewvc/incubator/shiro/trunk/core/src/test/java/org/apache/shiro/session/mgt/SimpleSessionTest.java?rev=961162&view=auto
==============================================================================
--- incubator/shiro/trunk/core/src/test/java/org/apache/shiro/session/mgt/SimpleSessionTest.java (added)
+++ incubator/shiro/trunk/core/src/test/java/org/apache/shiro/session/mgt/SimpleSessionTest.java Wed Jul 7 04:12:26 2010
@@ -0,0 +1,35 @@
+package org.apache.shiro.session.mgt;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+
+import org.junit.Test;
+
+public class SimpleSessionTest {
+ @Test
+ public void serializeHost() throws IOException, ClassNotFoundException {
+ SimpleSession session = new SimpleSession("localhost");
+ assertEquals("localhost", serializeAndDeserialize(session).getHost());
+ }
+
+ @Test
+ public void serializeExpired() throws IOException, ClassNotFoundException {
+ SimpleSession session = new SimpleSession();
+ session.setExpired(true);
+ assertTrue(serializeAndDeserialize(session).isExpired());
+ }
+
+ private SimpleSession serializeAndDeserialize(SimpleSession session) throws IOException, ClassNotFoundException {
+ ByteArrayOutputStream serialized = new ByteArrayOutputStream();
+ ObjectOutputStream serializer = new ObjectOutputStream(serialized);
+ serializer.writeObject(session);
+ serializer.close();
+ return (SimpleSession) new ObjectInputStream(new ByteArrayInputStream(serialized.toByteArray())).readObject();
+ }
+}