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 2014/08/14 15:22:16 UTC

git commit: WICKET-5371 IllegalArgumentException: Argument 'page' may not be null. - when sending event from asynchronous process

Repository: wicket
Updated Branches:
  refs/heads/wicket-6.x 18f269e13 -> b26481d59


WICKET-5371 IllegalArgumentException: Argument 'page' may not be null. - when sending event from asynchronous process

Log a warning and unregister all subscriptions for a page when it is no more in the page stores for any reason


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/b26481d5
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/b26481d5
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/b26481d5

Branch: refs/heads/wicket-6.x
Commit: b26481d59dc6d38718a5c176a7b921b9d00d6240
Parents: 18f269e
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Thu Aug 14 15:21:18 2014 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Thu Aug 14 15:21:18 2014 +0200

----------------------------------------------------------------------
 .../atmosphere/AtmosphereRequestHandler.java      | 18 +++++++++++++++---
 .../org/apache/wicket/atmosphere/EventBus.java    | 16 ++++++++++++++++
 2 files changed, 31 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/b26481d5/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/AtmosphereRequestHandler.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/AtmosphereRequestHandler.java b/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/AtmosphereRequestHandler.java
index 3ba143d..f19e7e0 100644
--- a/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/AtmosphereRequestHandler.java
+++ b/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/AtmosphereRequestHandler.java
@@ -20,6 +20,7 @@ import java.util.Iterator;
 
 import org.apache.wicket.Component;
 import org.apache.wicket.Page;
+import org.apache.wicket.Session;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.behavior.Behavior;
 import org.apache.wicket.protocol.http.WebApplication;
@@ -71,9 +72,20 @@ public class AtmosphereRequestHandler implements IRequestHandler
 	public void respond(IRequestCycle requestCycle)
 	{
 		WebApplication application = WebApplication.get();
-		Page page = (Page)application.getMapperContext().getPageInstance(pageKey.getPageId());
-		AjaxRequestTarget target = application.newAjaxRequestTarget(page);
-		executeHandlers(target, page);
+		Integer pageId = pageKey.getPageId();
+		Page page = (Page) Session.get().getPageManager().getPage(pageId);
+		if (page != null)
+		{
+			AjaxRequestTarget target = application.newAjaxRequestTarget(page);
+			executeHandlers(target, page);
+		}
+		else
+		{
+			LOGGER.warn("Could not find a page with id '{}' for session with id '{}' in the page stores. It will be unregistered",
+					pageId, pageKey.getSessionId());
+			EventBus.get(application).unregister(pageKey);
+
+		}
 	}
 
 	private void executeHandlers(AjaxRequestTarget target, Page page)

http://git-wip-us.apache.org/repos/asf/wicket/blob/b26481d5/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/EventBus.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/EventBus.java b/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/EventBus.java
index 80837b8..b085027 100644
--- a/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/EventBus.java
+++ b/wicket-experimental/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/EventBus.java
@@ -274,6 +274,22 @@ public class EventBus implements UnboundListener
 	}
 
 	/**
+	 * Unregisters all {@link EventSubscription}s for the given pageKey.
+	 *
+	 * @param pageKey
+	 *          The key with the page id and session id
+	 */
+	public synchronized void unregister(PageKey pageKey)
+	{
+		if (log.isDebugEnabled())
+		{
+			log.debug("unregistering all subscriptions for page {} for session {}",
+					pageKey.getPageId(), pageKey.getSessionId());
+		}
+		subscriptions.removeAll(pageKey);
+	}
+
+	/**
 	 * Unregisters all {@link EventSubscription}s for the given component, including the
 	 * subscriptions for its behaviors.
 	 *