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 2019/04/24 17:37:34 UTC

[wicket] branch wicket-7.x updated: WICKET-6639 PageStoreManager$SessionEntry.clear produces NullPointerException

This is an automated email from the ASF dual-hosted git repository.

mgrigorov pushed a commit to branch wicket-7.x
in repository https://gitbox.apache.org/repos/asf/wicket.git


The following commit(s) were added to refs/heads/wicket-7.x by this push:
     new 802b8c9  WICKET-6639 PageStoreManager$SessionEntry.clear produces NullPointerException
802b8c9 is described below

commit 802b8c90e79c4bfd5464b486e2af481c3f8c18db
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
AuthorDate: Sat Mar 2 23:45:21 2019 +0200

    WICKET-6639 PageStoreManager$SessionEntry.clear produces NullPointerException
    
    Add some checks for sessionCache being null
    
    (cherry picked from commit 116a7c57af87bbe515eb710664c7e28745ca0642)
---
 .../org/apache/wicket/page/PageStoreManager.java   | 27 +++++++++++++++-------
 1 file changed, 19 insertions(+), 8 deletions(-)

diff --git a/wicket-core/src/main/java/org/apache/wicket/page/PageStoreManager.java b/wicket-core/src/main/java/org/apache/wicket/page/PageStoreManager.java
index 44259e4..adee687 100644
--- a/wicket-core/src/main/java/org/apache/wicket/page/PageStoreManager.java
+++ b/wicket-core/src/main/java/org/apache/wicket/page/PageStoreManager.java
@@ -49,10 +49,10 @@ public class PageStoreManager extends AbstractPageManager
 	 * Web containers intercept
 	 * {@link javax.servlet.http.HttpSession#setAttribute(String, Object)} to detect changes and
 	 * replicate the session. If the attribute has been already bound in the session then
-	 * {@link #valueUnbound(HttpSessionBindingEvent)} might get called - this flag
+	 * {@link SessionEntry#valueUnbound(HttpSessionBindingEvent)} might get called - this flag
 	 * helps us to ignore the invocation in that case.
 	 * 
-	 * @see #valueUnbound(HttpSessionBindingEvent)
+	 * @see SessionEntry#valueUnbound(HttpSessionBindingEvent)
 	 */
 	private static final ThreadLocal<Boolean> STORING_TOUCHED_PAGES = new ThreadLocal<Boolean>()
 	{
@@ -148,11 +148,14 @@ public class PageStoreManager extends AbstractPageManager
 		 */
 		private IManageablePage findPage(int id)
 		{
-			for (IManageablePage p : sessionCache)
+			if (sessionCache != null)
 			{
-				if (p.getPageId() == id)
+				for (IManageablePage p : sessionCache)
 				{
-					return p;
+					if (p.getPageId() == id)
+					{
+						return p;
+					}
 				}
 			}
 			return null;
@@ -172,6 +175,10 @@ public class PageStoreManager extends AbstractPageManager
 					return;
 				}
 
+				if (sessionCache == null)
+				{
+					sessionCache = new ArrayList<>();
+				}
 				sessionCache.add(page);
 			}
 		}
@@ -347,9 +354,13 @@ public class PageStoreManager extends AbstractPageManager
 			return false;
 		}
 
-		public void clear() {
-			sessionCache.clear();
-			
+		public void clear()
+		{
+			if (sessionCache != null)
+			{
+				sessionCache.clear();
+			}
+
 			// WICKET-5164 use the original sessionId
 			IPageStore store = getPageStore();
 			// store might be null if destroyed already