Author: mgrigorov
Date: Thu Oct 27 16:42:25 2011
New Revision: 1189859

URL: http://svn.apache.org/viewvc?rev=1189859&view=rev
Log:
WICKET-4180 WebApplication.unmount(String) doesn't work if invoked from 
Application#init() (or IInitializer#init())


Modified:
    
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/mapper/BufferedResponseMapper.java

Modified: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/mapper/BufferedResponseMapper.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/mapper/BufferedResponseMapper.java?rev=1189859&r1=1189858&r2=1189859&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/mapper/BufferedResponseMapper.java
 (original)
+++ 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/mapper/BufferedResponseMapper.java
 Thu Oct 27 16:42:25 2011
@@ -25,6 +25,7 @@ import org.apache.wicket.request.Request
 import org.apache.wicket.request.Url;
 import org.apache.wicket.request.cycle.RequestCycle;
 import org.apache.wicket.request.handler.BufferedResponseRequestHandler;
+import org.apache.wicket.util.string.Strings;
 
 /**
  * Encoder that intercepts requests for which there is already stored buffer 
with rendered data.
@@ -42,20 +43,33 @@ public class BufferedResponseMapper impl
 
        /**
         * @return the current session id for stateful pages and 
<code>null</code> for stateless pages
+        *         and non-http threads
         */
        protected String getSessionId()
        {
-               return Session.get().getId();
+               return RequestCycle.get() != null ? Session.get().getId() : 
null;
        }
 
        protected boolean hasBufferedResponse(Url url)
        {
-               return WebApplication.get().hasBufferedResponse(getSessionId(), 
url);
+               String sessionId = getSessionId();
+               boolean hasResponse = false;
+               if (Strings.isEmpty(sessionId) == false)
+               {
+                       hasResponse = 
WebApplication.get().hasBufferedResponse(sessionId, url);
+               }
+               return hasResponse;
        }
 
        protected BufferedWebResponse getAndRemoveBufferedResponse(Url url)
        {
-               return 
WebApplication.get().getAndRemoveBufferedResponse(getSessionId(), url);
+               String sessionId = getSessionId();
+               BufferedWebResponse response = null;
+               if (Strings.isEmpty(sessionId) == false)
+               {
+                       response = 
WebApplication.get().getAndRemoveBufferedResponse(sessionId, url);
+               }
+               return response;
        }
 
        private Request getRequest(Request original)


Reply via email to