This is an automated email from the ASF dual-hosted git repository.
svenmeier pushed a commit to branch WICKET-6558-prevent-lock-after-detach
in repository https://gitbox.apache.org/repos/asf/wicket.git
The following commit(s) were added to
refs/heads/WICKET-6558-prevent-lock-after-detach by this push:
new 0de0d38 WICKET-6558 error message
0de0d38 is described below
commit 0de0d38965fbdfc7bc0d10465c9dc6474c8ecc96
Author: Sven Meier <[email protected]>
AuthorDate: Mon Aug 19 11:58:43 2019 +0200
WICKET-6558 error message
---
.../src/main/java/org/apache/wicket/Session.java | 2 +-
.../wicket/protocol/http/WebSessionTest.java | 37 +++++++++++++++++++---
2 files changed, 33 insertions(+), 6 deletions(-)
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 3080b2b..2376267 100644
--- a/wicket-core/src/main/java/org/apache/wicket/Session.java
+++ b/wicket-core/src/main/java/org/apache/wicket/Session.java
@@ -925,7 +925,7 @@ public abstract class Session implements IClusterable,
IEventSink, IMetadataCont
public final IPageManager getPageManager()
{
if
(Boolean.TRUE.equals(RequestCycle.get().getMetaData(PAGES_UNLOCKED))) {
- throw new WicketRuntimeException("pages have already
been unlocked - synchronized access is no longer possible");
+ throw new WicketRuntimeException("The request has been
processed. Access to pages is no longer allowed");
}
IPageManager manager =
Application.get().internalGetPageManager();
diff --git
a/wicket-core/src/test/java/org/apache/wicket/protocol/http/WebSessionTest.java
b/wicket-core/src/test/java/org/apache/wicket/protocol/http/WebSessionTest.java
index c775d19..2eb05a7 100644
---
a/wicket-core/src/test/java/org/apache/wicket/protocol/http/WebSessionTest.java
+++
b/wicket-core/src/test/java/org/apache/wicket/protocol/http/WebSessionTest.java
@@ -19,10 +19,12 @@ package org.apache.wicket.protocol.http;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.fail;
import java.util.Locale;
import org.apache.wicket.Session;
+import org.apache.wicket.WicketRuntimeException;
import org.apache.wicket.mock.MockApplication;
import org.apache.wicket.mock.MockWebRequest;
import org.apache.wicket.protocol.http.mock.MockHttpSession;
@@ -54,23 +56,48 @@ class WebSessionTest
WebSession session = new WebSession(request);
assertEquals(locale, session.getLocale());
}
-
+
@Test
public void changeSessionId() throws Exception
{
WicketTester tester = new WicketTester(new MockApplication());
MockHttpSession httpSession =
(MockHttpSession)tester.getRequest().getSession();
Session session = tester.getSession();
-
+
httpSession.setTemporary(false);
session.bind();
-
+
String oldId = session.getId();
assertNotNull(oldId);
-
+
session.changeSessionId();
String newId = session.getId();
-
+
assertNotEquals(oldId, newId);
}
+
+ /**
+ * WICKET-6558
+ */
+ @Test
+ public void lockAfterDetach() throws Exception
+ {
+ WicketTester tester = new WicketTester(new MockApplication());
+
+ Session session = tester.getSession();
+
+ session.getPageManager();
+
+ session.detach();
+
+ try
+ {
+ session.getPageManager();
+ fail();
+ }
+ catch (WicketRuntimeException ex)
+ {
+ assertEquals("The request has been processed. Access to
pages is no longer allowed", ex.getMessage());
+ }
+ }
}