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);
+ }
}