Repository: wicket Updated Branches: refs/heads/wicket-7.x d118063ec -> 36198d9e9
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/36198d9e Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/36198d9e Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/36198d9e Branch: refs/heads/wicket-7.x Commit: 36198d9e9586f4c0d5204d6e06188196dff83106 Parents: 00bde76 Author: Martin Tzvetanov Grigorov <mgrigo...@apache.org> Authored: Mon Jan 4 13:01:24 2016 +0100 Committer: Martin Tzvetanov Grigorov <mgrigo...@apache.org> Committed: Mon Jan 4 13:08:32 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/36198d9e/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 d23bb84..5506e77 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 IProvider<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/36198d9e/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 5084cc4..f194b98 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/36198d9e/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/36198d9e/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 2948005..b046b87 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); + } }