You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2016/01/04 13:05:17 UTC

[2/2] wicket git commit: WICKET-6062 MockHttpSession should renew its id after invalidation

WICKET-6062 MockHttpSession should renew its id after invalidation


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/8211cbe0
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/8211cbe0
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/8211cbe0

Branch: refs/heads/master
Commit: 8211cbe08484fa9bddee1ef11e549259a5701a82
Parents: 620d773
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Mon Jan 4 13:01:24 2016 +0100
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Mon Jan 4 13:03:18 2016 +0100

----------------------------------------------------------------------
 .../java/org/apache/wicket/Application.java     |  3 ++-
 .../main/java/org/apache/wicket/Session.java    |  1 +
 .../protocol/http/mock/MockHttpSession.java     | 10 ++++++--
 .../wicket/util/tester/WicketTesterTest.java    | 25 ++++++++++++++++++++
 4 files changed, 36 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/8211cbe0/wicket-core/src/main/java/org/apache/wicket/Application.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/Application.java b/wicket-core/src/main/java/org/apache/wicket/Application.java
index 0ae5830..a65d02d 100644
--- a/wicket-core/src/main/java/org/apache/wicket/Application.java
+++ b/wicket-core/src/main/java/org/apache/wicket/Application.java
@@ -873,7 +873,8 @@ public abstract class Application implements UnboundListener, IEventSink
 	 */
 	public final Application setSessionStoreProvider(final Supplier<ISessionStore> sessionStoreProvider)
 	{
-		this.sessionStoreProvider = sessionStoreProvider;
+		this.sessionStoreProvider = Args.notNull(sessionStoreProvider, "sessionStoreProvider");
+		this.sessionStore = null;
 		return this;
 	}
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/8211cbe0/wicket-core/src/main/java/org/apache/wicket/Session.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/Session.java b/wicket-core/src/main/java/org/apache/wicket/Session.java
index dcf3bd0..59c8bd5 100644
--- a/wicket-core/src/main/java/org/apache/wicket/Session.java
+++ b/wicket-core/src/main/java/org/apache/wicket/Session.java
@@ -492,6 +492,7 @@ public abstract class Session implements IClusterable, IEventSink
 		{
 			sessionStore.invalidate(RequestCycle.get().getRequest());
 			sessionStore = null;
+			id = null;
 		}
 	}
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/8211cbe0/wicket-core/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpSession.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpSession.java b/wicket-core/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpSession.java
index d64387c..dc92f1d 100755
--- a/wicket-core/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpSession.java
+++ b/wicket-core/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpSession.java
@@ -42,7 +42,7 @@ public class MockHttpSession implements HttpSession, Serializable
 
 	private final long creationTime = System.currentTimeMillis();
 
-	private final String id = UUID.randomUUID().toString().replace(':', '_').replace('-', '_');
+	private String id = generateSessionId();
 
 	private long lastAccessedTime = 0;
 
@@ -187,6 +187,7 @@ public class MockHttpSession implements HttpSession, Serializable
 	public void invalidate()
 	{
 		attributes.clear();
+		id = generateSessionId();
 	}
 
 	/**
@@ -296,4 +297,9 @@ public class MockHttpSession implements HttpSession, Serializable
 	{
 		this.temporary = temporary;
 	}
-}
\ No newline at end of file
+
+	private static String generateSessionId()
+	{
+		return UUID.randomUUID().toString().replace(':', '_').replace('-', '_');
+	}
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/8211cbe0/wicket-core/src/test/java/org/apache/wicket/util/tester/WicketTesterTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/util/tester/WicketTesterTest.java b/wicket-core/src/test/java/org/apache/wicket/util/tester/WicketTesterTest.java
index 8de2cc7..2e19a33 100644
--- a/wicket-core/src/test/java/org/apache/wicket/util/tester/WicketTesterTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/util/tester/WicketTesterTest.java
@@ -62,6 +62,9 @@ import org.apache.wicket.request.resource.IResource;
 import org.apache.wicket.request.resource.PackageResource.PackageResourceBlockedException;
 import org.apache.wicket.request.resource.ResourceReference;
 import org.apache.wicket.resource.DummyPage;
+import org.apache.wicket.session.HttpSessionStore;
+import org.apache.wicket.session.ISessionStore;
+import org.apache.wicket.util.IProvider;
 import org.apache.wicket.util.string.StringValue;
 import org.apache.wicket.util.tester.DummyHomePage.TestLink;
 import org.apache.wicket.util.tester.MockPageParameterPage.MockInnerClassPage;
@@ -1316,4 +1319,26 @@ public class WicketTesterTest extends WicketTestCase
 
 		tester.assertComponentOnAjaxResponse(label.getPageRelativePath());
 	}
+
+	/**
+	 * https://issues.apache.org/jira/browse/WICKET-6062
+	 */
+	@Test
+	public void renewSessionIdAfterInvalidation() {
+		tester.getApplication().setSessionStoreProvider(new IProvider<ISessionStore>()
+		{
+			@Override
+			public ISessionStore get()
+			{
+				return new HttpSessionStore();
+			}
+		});
+		tester.getSession().bind();
+		String firstId = tester.getSession().getId();
+
+		tester.getSession().invalidateNow();
+
+		String secondId = tester.getSession().getId();
+		assertNotEquals(firstId, secondId);
+	}
 }