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 <svenme...@apache.org>
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());
+               }
+       }
 }

Reply via email to