You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by sv...@apache.org on 2017/01/30 15:51:26 UTC

wicket git commit: WICKET-6137 renamed ListenerInterfaceRequestHandler to ListenerRequestHandler

Repository: wicket
Updated Branches:
  refs/heads/master 16e44ce98 -> 8342e4ef9


WICKET-6137 renamed ListenerInterfaceRequestHandler to ListenerRequestHandler

there isn't a ..ListenerInterface any more


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

Branch: refs/heads/master
Commit: 8342e4ef9acd442ddfe7ad78d04838d17c1b9fec
Parents: 16e44ce
Author: Sven Meier <sv...@apache.org>
Authored: Mon Jan 30 16:50:26 2017 +0100
Committer: Sven Meier <sv...@apache.org>
Committed: Mon Jan 30 16:50:26 2017 +0100

----------------------------------------------------------------------
 .../main/java/org/apache/wicket/Component.java  |   4 +-
 ...markableListenerInterfaceRequestHandler.java |   2 +-
 .../ListenerInterfaceRequestHandler.java        | 327 -------------------
 .../request/handler/ListenerRequestHandler.java | 327 +++++++++++++++++++
 .../logger/ListenerInterfaceLogData.java        | 214 ------------
 .../request/handler/logger/ListenerLogData.java | 214 ++++++++++++
 .../mapper/AbstractBookmarkableMapper.java      |   4 +-
 .../core/request/mapper/MountedMapper.java      |   6 +-
 .../core/request/mapper/PageInstanceMapper.java |   8 +-
 .../wicket/util/tester/BaseWicketTester.java    |   6 +-
 .../org/apache/wicket/BehaviorRequestTest.java  |   4 +-
 .../ComponentWithLazyModelCreationTest.java     |   4 +-
 .../ListenerInterfaceRequestHandlerTest.java    | 208 ------------
 .../handler/ListenerRequestHandlerTest.java     | 208 ++++++++++++
 .../request/mapper/BookmarkableMapperTest.java  |  18 +-
 .../core/request/mapper/CryptoMapperTest.java   |  14 +-
 .../core/request/mapper/MountedMapperTest.java  |  26 +-
 .../core/request/mapper/PackageMapperTest.java  |  18 +-
 .../request/mapper/PageInstanceMapperTest.java  |  16 +-
 .../wicket/examples/ajax/prototype/Index.java   |   5 +-
 20 files changed, 816 insertions(+), 817 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/8342e4ef/wicket-core/src/main/java/org/apache/wicket/Component.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/Component.java b/wicket-core/src/main/java/org/apache/wicket/Component.java
index 97262ed..a6aa54f 100644
--- a/wicket-core/src/main/java/org/apache/wicket/Component.java
+++ b/wicket-core/src/main/java/org/apache/wicket/Component.java
@@ -32,7 +32,7 @@ import org.apache.wicket.authorization.UnauthorizedActionException;
 import org.apache.wicket.authorization.strategies.page.SimplePageAuthorizationStrategy;
 import org.apache.wicket.behavior.Behavior;
 import org.apache.wicket.core.request.handler.BookmarkableListenerInterfaceRequestHandler;
-import org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler;
+import org.apache.wicket.core.request.handler.ListenerRequestHandler;
 import org.apache.wicket.core.request.handler.PageAndComponentProvider;
 import org.apache.wicket.core.util.lang.WicketObjects;
 import org.apache.wicket.core.util.string.ComponentStrings;
@@ -3396,7 +3396,7 @@ public abstract class Component
 		}
 		else
 		{
-			return new ListenerInterfaceRequestHandler(provider, id);
+			return new ListenerRequestHandler(provider, id);
 		}
 	}
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/8342e4ef/wicket-core/src/main/java/org/apache/wicket/core/request/handler/BookmarkableListenerInterfaceRequestHandler.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/core/request/handler/BookmarkableListenerInterfaceRequestHandler.java b/wicket-core/src/main/java/org/apache/wicket/core/request/handler/BookmarkableListenerInterfaceRequestHandler.java
index b3de191..772e215 100644
--- a/wicket-core/src/main/java/org/apache/wicket/core/request/handler/BookmarkableListenerInterfaceRequestHandler.java
+++ b/wicket-core/src/main/java/org/apache/wicket/core/request/handler/BookmarkableListenerInterfaceRequestHandler.java
@@ -25,7 +25,7 @@ import org.apache.wicket.util.lang.Args;
 
 /**
  * Request handler for bookmarkable pages with an {@link IRequestListener}. This handler is only used to
- * generate URLs. Rendering is always handled by {@link ListenerInterfaceRequestHandler}.
+ * generate URLs. Rendering is always handled by {@link ListenerRequestHandler}.
  *
  * @author Matej Knopp
  */

http://git-wip-us.apache.org/repos/asf/wicket/blob/8342e4ef/wicket-core/src/main/java/org/apache/wicket/core/request/handler/ListenerInterfaceRequestHandler.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/core/request/handler/ListenerInterfaceRequestHandler.java b/wicket-core/src/main/java/org/apache/wicket/core/request/handler/ListenerInterfaceRequestHandler.java
deleted file mode 100644
index c976a42..0000000
--- a/wicket-core/src/main/java/org/apache/wicket/core/request/handler/ListenerInterfaceRequestHandler.java
+++ /dev/null
@@ -1,327 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket.core.request.handler;
-
-import org.apache.wicket.Component;
-import org.apache.wicket.IRequestListener;
-import org.apache.wicket.Page;
-import org.apache.wicket.WicketRuntimeException;
-import org.apache.wicket.behavior.Behavior;
-import org.apache.wicket.core.request.handler.RenderPageRequestHandler.RedirectPolicy;
-import org.apache.wicket.core.request.handler.logger.ListenerInterfaceLogData;
-import org.apache.wicket.request.ILoggableRequestHandler;
-import org.apache.wicket.request.IRequestCycle;
-import org.apache.wicket.request.component.IRequestableComponent;
-import org.apache.wicket.request.component.IRequestablePage;
-import org.apache.wicket.request.http.WebRequest;
-import org.apache.wicket.request.mapper.parameter.PageParameters;
-import org.apache.wicket.util.lang.Args;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Request handler that invokes an {@link IRequestListener} on component or behavior and renders page afterwards.
- *
- * @author Matej Knopp
- */
-public class ListenerInterfaceRequestHandler
-	implements
-		IPageRequestHandler,
-		IComponentRequestHandler,
-		ILoggableRequestHandler
-{
-	
-	private static final Logger LOG = LoggerFactory.getLogger(ListenerInterfaceRequestHandler.class);
-
-	private final IPageAndComponentProvider pageComponentProvider;
-
-	private final Integer behaviorId;
-
-	private ListenerInterfaceLogData logData;
-
-	/**
-	 * Construct.
-	 *
-	 * @param pageComponentProvider
-	 * @param behaviorIndex
-	 */
-	public ListenerInterfaceRequestHandler(IPageAndComponentProvider pageComponentProvider, Integer behaviorIndex)
-	{
-		Args.notNull(pageComponentProvider, "pageComponentProvider");
-
-		this.pageComponentProvider = pageComponentProvider;
-		behaviorId = behaviorIndex;
-	}
-
-	/**
-	 * Construct.
-	 *
-	 * @param pageComponentProvider
-	 */
-	public ListenerInterfaceRequestHandler(PageAndComponentProvider pageComponentProvider)
-	{
-		this(pageComponentProvider, null);
-	}
-
-	public boolean includeRenderCount() {
-		if (behaviorId == null) {
-			return ((IRequestListener)getComponent()).rendersPage();
-		} else {
-			return ((IRequestListener)getComponent().getBehaviorById(getBehaviorIndex())).rendersPage();
-		}
-	}
-	
-	@Override
-	public IRequestableComponent getComponent()
-	{
-		return pageComponentProvider.getComponent();
-	}
-
-	@Override
-	public IRequestablePage getPage()
-	{
-		return pageComponentProvider.getPageInstance();
-	}
-
-	@Override
-	public Class<? extends IRequestablePage> getPageClass()
-	{
-		return pageComponentProvider.getPageClass();
-	}
-
-	@Override
-	public Integer getPageId()
-	{
-		return pageComponentProvider.getPageId();
-	}
-
-	@Override
-	public PageParameters getPageParameters()
-	{
-		return pageComponentProvider.getPageParameters();
-	}
-
-	@Override
-	public void detach(IRequestCycle requestCycle)
-	{
-		if (logData == null)
-		{
-			logData = new ListenerInterfaceLogData(pageComponentProvider, behaviorId);
-		}
-		pageComponentProvider.detach();
-	}
-
-	/**
-	 * Index of target behavior or <code>null</code> if component is the target.
-	 *
-	 * @return behavior index or <code>null</code>
-	 */
-	public Integer getBehaviorIndex()
-	{
-		return behaviorId;
-	}
-
-	@Override
-	public void respond(final IRequestCycle requestCycle)
-	{
-		final IRequestablePage page = getPage();
-		final boolean freshPage = pageComponentProvider.isPageInstanceFresh();
-		final boolean isAjax = ((WebRequest)requestCycle.getRequest()).isAjax();
-
-		IRequestableComponent component;
-		try
-		{
-			component = getComponent();
-		}
-		catch (ComponentNotFoundException e)
-		{
-			// either the page is stateless and the component we are looking for is not added in the
-			// constructor
-			// or the page is stateful+stale and a new instances was created by pageprovider
-			// we denote this by setting component to null
-			component = null;
-		}
-
-		if ((component == null && !freshPage) || (component != null && component.getPage() != page))
-		{
-			throw new ComponentNotFoundException("Component '" + getComponentPath()
-					+ "' has been removed from page.");
-		}
-
-		if (page instanceof Page)
-		{
-			// initialize the page to be able to check whether it is stateless
-			((Page)page).internalInitialize();
-		}
-
-		RedirectPolicy policy = page.isPageStateless()
-			? RedirectPolicy.NEVER_REDIRECT
-			: RedirectPolicy.AUTO_REDIRECT;
-
-		boolean blockIfExpired = component != null && !component.canCallListenerInterfaceAfterExpiry();
-
-		boolean lateComponent = component == null && freshPage;
-
-		if ((pageComponentProvider.wasExpired() && blockIfExpired) || lateComponent)
-		{
-			// A request listener is invoked on an expired page or the component couldn't be
-			// determined. The best we can do is to re-paint the newly constructed page.
-			// Reference: WICKET-4454, WICKET-6288
-
-			if (LOG.isDebugEnabled())
-			{
-				LOG.debug(
-					"An IRequestListener was called but its page/component({}) couldn't be resolved. "
-						+ "Scheduling re-create of the page and ignoring the listener interface...",
-					getComponentPath());
-			}
-
-			if (isAjax)
-			{
-				policy = RedirectPolicy.ALWAYS_REDIRECT;
-			}
-
-			requestCycle.scheduleRequestHandlerAfterCurrent(new RenderPageRequestHandler(
-				new PageProvider(page), policy));
-			return;
-		}
-
-		invokeListener(requestCycle, policy, isAjax);
-	}
-
-	private void invokeListener(IRequestCycle requestCycle, RedirectPolicy policy, boolean ajax)
-	{
-		if (getBehaviorIndex() == null)
-		{
-			invoke(requestCycle, policy, ajax, getComponent());
-		}
-		else
-		{
-			try
-			{
-				Behavior behavior = getComponent().getBehaviorById(behaviorId);
-				invoke(requestCycle, policy, ajax, getComponent(), behavior);
-			}
-			catch (IndexOutOfBoundsException e)
-			{
-				throw new WicketRuntimeException("Couldn't find component behavior.", e);
-			}
-
-		}
-	}
-	
-	/**
-	 * Invokes a given interface on a component.
-	 * 
-	 * @param rcomponent
-	 *            The component
-	 * 
-	 * @throws ListenerInvocationNotAllowedException
-	 *             when listener invocation attempted on a component that does not allow it
-	 */
-	private final void invoke(final IRequestCycle requestCycle, RedirectPolicy policy, boolean ajax, final IRequestableComponent rcomponent)
-	{
-		// we are in Wicket core land
-		final Component component = (Component)rcomponent;
-
-		if (!component.canCallListenerInterface())
-		{
-			// just return so that we have a silent fail and just re-render the
-			// page
-			LOG.info("component not enabled or visible; ignoring call. Component: " + component);
-			throw new ListenerInvocationNotAllowedException(component, null,
-				"Component rejected interface invocation");
-		}
-
-		internalInvoke(requestCycle, policy, ajax, component, component);
-	}
-
-	/**
-	 * Invokes a given interface on a component's behavior.
-	 * 
-	 * @param rcomponent
-	 *            The component
-	 * @param behavior
-	 * @throws ListenerInvocationNotAllowedException
-	 *             when listener invocation attempted on a component that does not allow it
-	 */
-	private final void invoke(final IRequestCycle requestCycle, RedirectPolicy policy, boolean ajax, final IRequestableComponent rcomponent, final Behavior behavior)
-	{
-		// we are in Wicket core land
-		final Component component = (Component)rcomponent;
-
-		if (!behavior.canCallListenerInterface(component))
-		{
-			LOG.warn("behavior not enabled; ignore call. Behavior {} at component {}", behavior,
-				component);
-			throw new ListenerInvocationNotAllowedException(component, behavior,
-				"Behavior rejected interface invocation. ");
-		}
-
-		internalInvoke(requestCycle, policy, ajax, component, behavior);
-	}
-
-	private void internalInvoke(final IRequestCycle requestCycle, RedirectPolicy policy, boolean ajax, final Component component, final Object target)
-	{
-		// save a reference to the page because the component can be removed
-		// during the invocation of the listener and thus lose its parent
-		Page page = component.getPage();
-
-		// initialization is required for stateless pages
-		if (!page.isInitialized())
-		{
-			page.internalInitialize();
-		}
-
-		IRequestListener requestListener = (IRequestListener)target;
-		
-		if (requestListener.rendersPage() && !ajax)
-		{
-			// schedule page render after current request handler is done. this can be
-			// overridden during invocation of listener
-			// method (i.e. by calling RequestCycle#setResponsePage)
-			requestCycle.scheduleRequestHandlerAfterCurrent(new RenderPageRequestHandler(
-				new PageProvider(page), policy));
-		}
-
-		requestListener.onRequest();
-	}
-
-	@Override
-	public final boolean isPageInstanceCreated()
-	{
-		return pageComponentProvider.hasPageInstance();
-	}
-
-	@Override
-	public final String getComponentPath()
-	{
-		return pageComponentProvider.getComponentPath();
-	}
-
-	@Override
-	public final Integer getRenderCount()
-	{
-		return pageComponentProvider.getRenderCount();
-	}
-
-	@Override
-	public ListenerInterfaceLogData getLogData()
-	{
-		return logData;
-	}
-}

http://git-wip-us.apache.org/repos/asf/wicket/blob/8342e4ef/wicket-core/src/main/java/org/apache/wicket/core/request/handler/ListenerRequestHandler.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/core/request/handler/ListenerRequestHandler.java b/wicket-core/src/main/java/org/apache/wicket/core/request/handler/ListenerRequestHandler.java
new file mode 100644
index 0000000..3f131e3
--- /dev/null
+++ b/wicket-core/src/main/java/org/apache/wicket/core/request/handler/ListenerRequestHandler.java
@@ -0,0 +1,327 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.core.request.handler;
+
+import org.apache.wicket.Component;
+import org.apache.wicket.IRequestListener;
+import org.apache.wicket.Page;
+import org.apache.wicket.WicketRuntimeException;
+import org.apache.wicket.behavior.Behavior;
+import org.apache.wicket.core.request.handler.RenderPageRequestHandler.RedirectPolicy;
+import org.apache.wicket.core.request.handler.logger.ListenerLogData;
+import org.apache.wicket.request.ILoggableRequestHandler;
+import org.apache.wicket.request.IRequestCycle;
+import org.apache.wicket.request.component.IRequestableComponent;
+import org.apache.wicket.request.component.IRequestablePage;
+import org.apache.wicket.request.http.WebRequest;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.apache.wicket.util.lang.Args;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Request handler that invokes an {@link IRequestListener} on component or behavior and renders page afterwards.
+ *
+ * @author Matej Knopp
+ */
+public class ListenerRequestHandler
+	implements
+		IPageRequestHandler,
+		IComponentRequestHandler,
+		ILoggableRequestHandler
+{
+	
+	private static final Logger LOG = LoggerFactory.getLogger(ListenerRequestHandler.class);
+
+	private final IPageAndComponentProvider pageComponentProvider;
+
+	private final Integer behaviorId;
+
+	private ListenerLogData logData;
+
+	/**
+	 * Construct.
+	 *
+	 * @param pageComponentProvider
+	 * @param behaviorIndex
+	 */
+	public ListenerRequestHandler(IPageAndComponentProvider pageComponentProvider, Integer behaviorIndex)
+	{
+		Args.notNull(pageComponentProvider, "pageComponentProvider");
+
+		this.pageComponentProvider = pageComponentProvider;
+		behaviorId = behaviorIndex;
+	}
+
+	/**
+	 * Construct.
+	 *
+	 * @param pageComponentProvider
+	 */
+	public ListenerRequestHandler(PageAndComponentProvider pageComponentProvider)
+	{
+		this(pageComponentProvider, null);
+	}
+
+	public boolean includeRenderCount() {
+		if (behaviorId == null) {
+			return ((IRequestListener)getComponent()).rendersPage();
+		} else {
+			return ((IRequestListener)getComponent().getBehaviorById(getBehaviorIndex())).rendersPage();
+		}
+	}
+	
+	@Override
+	public IRequestableComponent getComponent()
+	{
+		return pageComponentProvider.getComponent();
+	}
+
+	@Override
+	public IRequestablePage getPage()
+	{
+		return pageComponentProvider.getPageInstance();
+	}
+
+	@Override
+	public Class<? extends IRequestablePage> getPageClass()
+	{
+		return pageComponentProvider.getPageClass();
+	}
+
+	@Override
+	public Integer getPageId()
+	{
+		return pageComponentProvider.getPageId();
+	}
+
+	@Override
+	public PageParameters getPageParameters()
+	{
+		return pageComponentProvider.getPageParameters();
+	}
+
+	@Override
+	public void detach(IRequestCycle requestCycle)
+	{
+		if (logData == null)
+		{
+			logData = new ListenerLogData(pageComponentProvider, behaviorId);
+		}
+		pageComponentProvider.detach();
+	}
+
+	/**
+	 * Index of target behavior or <code>null</code> if component is the target.
+	 *
+	 * @return behavior index or <code>null</code>
+	 */
+	public Integer getBehaviorIndex()
+	{
+		return behaviorId;
+	}
+
+	@Override
+	public void respond(final IRequestCycle requestCycle)
+	{
+		final IRequestablePage page = getPage();
+		final boolean freshPage = pageComponentProvider.isPageInstanceFresh();
+		final boolean isAjax = ((WebRequest)requestCycle.getRequest()).isAjax();
+
+		IRequestableComponent component;
+		try
+		{
+			component = getComponent();
+		}
+		catch (ComponentNotFoundException e)
+		{
+			// either the page is stateless and the component we are looking for is not added in the
+			// constructor
+			// or the page is stateful+stale and a new instances was created by pageprovider
+			// we denote this by setting component to null
+			component = null;
+		}
+
+		if ((component == null && !freshPage) || (component != null && component.getPage() != page))
+		{
+			throw new ComponentNotFoundException("Component '" + getComponentPath()
+					+ "' has been removed from page.");
+		}
+
+		if (page instanceof Page)
+		{
+			// initialize the page to be able to check whether it is stateless
+			((Page)page).internalInitialize();
+		}
+
+		RedirectPolicy policy = page.isPageStateless()
+			? RedirectPolicy.NEVER_REDIRECT
+			: RedirectPolicy.AUTO_REDIRECT;
+
+		boolean blockIfExpired = component != null && !component.canCallListenerInterfaceAfterExpiry();
+
+		boolean lateComponent = component == null && freshPage;
+
+		if ((pageComponentProvider.wasExpired() && blockIfExpired) || lateComponent)
+		{
+			// A request listener is invoked on an expired page or the component couldn't be
+			// determined. The best we can do is to re-paint the newly constructed page.
+			// Reference: WICKET-4454, WICKET-6288
+
+			if (LOG.isDebugEnabled())
+			{
+				LOG.debug(
+					"An IRequestListener was called but its page/component({}) couldn't be resolved. "
+						+ "Scheduling re-create of the page and ignoring the listener interface...",
+					getComponentPath());
+			}
+
+			if (isAjax)
+			{
+				policy = RedirectPolicy.ALWAYS_REDIRECT;
+			}
+
+			requestCycle.scheduleRequestHandlerAfterCurrent(new RenderPageRequestHandler(
+				new PageProvider(page), policy));
+			return;
+		}
+
+		invokeListener(requestCycle, policy, isAjax);
+	}
+
+	private void invokeListener(IRequestCycle requestCycle, RedirectPolicy policy, boolean ajax)
+	{
+		if (getBehaviorIndex() == null)
+		{
+			invoke(requestCycle, policy, ajax, getComponent());
+		}
+		else
+		{
+			try
+			{
+				Behavior behavior = getComponent().getBehaviorById(behaviorId);
+				invoke(requestCycle, policy, ajax, getComponent(), behavior);
+			}
+			catch (IndexOutOfBoundsException e)
+			{
+				throw new WicketRuntimeException("Couldn't find component behavior.", e);
+			}
+
+		}
+	}
+	
+	/**
+	 * Invokes a given interface on a component.
+	 * 
+	 * @param rcomponent
+	 *            The component
+	 * 
+	 * @throws ListenerInvocationNotAllowedException
+	 *             when listener invocation attempted on a component that does not allow it
+	 */
+	private final void invoke(final IRequestCycle requestCycle, RedirectPolicy policy, boolean ajax, final IRequestableComponent rcomponent)
+	{
+		// we are in Wicket core land
+		final Component component = (Component)rcomponent;
+
+		if (!component.canCallListenerInterface())
+		{
+			// just return so that we have a silent fail and just re-render the
+			// page
+			LOG.info("component not enabled or visible; ignoring call. Component: " + component);
+			throw new ListenerInvocationNotAllowedException(component, null,
+				"Component rejected interface invocation");
+		}
+
+		internalInvoke(requestCycle, policy, ajax, component, component);
+	}
+
+	/**
+	 * Invokes a given interface on a component's behavior.
+	 * 
+	 * @param rcomponent
+	 *            The component
+	 * @param behavior
+	 * @throws ListenerInvocationNotAllowedException
+	 *             when listener invocation attempted on a component that does not allow it
+	 */
+	private final void invoke(final IRequestCycle requestCycle, RedirectPolicy policy, boolean ajax, final IRequestableComponent rcomponent, final Behavior behavior)
+	{
+		// we are in Wicket core land
+		final Component component = (Component)rcomponent;
+
+		if (!behavior.canCallListenerInterface(component))
+		{
+			LOG.warn("behavior not enabled; ignore call. Behavior {} at component {}", behavior,
+				component);
+			throw new ListenerInvocationNotAllowedException(component, behavior,
+				"Behavior rejected interface invocation. ");
+		}
+
+		internalInvoke(requestCycle, policy, ajax, component, behavior);
+	}
+
+	private void internalInvoke(final IRequestCycle requestCycle, RedirectPolicy policy, boolean ajax, final Component component, final Object target)
+	{
+		// save a reference to the page because the component can be removed
+		// during the invocation of the listener and thus lose its parent
+		Page page = component.getPage();
+
+		// initialization is required for stateless pages
+		if (!page.isInitialized())
+		{
+			page.internalInitialize();
+		}
+
+		IRequestListener requestListener = (IRequestListener)target;
+		
+		if (requestListener.rendersPage() && !ajax)
+		{
+			// schedule page render after current request handler is done. this can be
+			// overridden during invocation of listener
+			// method (i.e. by calling RequestCycle#setResponsePage)
+			requestCycle.scheduleRequestHandlerAfterCurrent(new RenderPageRequestHandler(
+				new PageProvider(page), policy));
+		}
+
+		requestListener.onRequest();
+	}
+
+	@Override
+	public final boolean isPageInstanceCreated()
+	{
+		return pageComponentProvider.hasPageInstance();
+	}
+
+	@Override
+	public final String getComponentPath()
+	{
+		return pageComponentProvider.getComponentPath();
+	}
+
+	@Override
+	public final Integer getRenderCount()
+	{
+		return pageComponentProvider.getRenderCount();
+	}
+
+	@Override
+	public ListenerLogData getLogData()
+	{
+		return logData;
+	}
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/8342e4ef/wicket-core/src/main/java/org/apache/wicket/core/request/handler/logger/ListenerInterfaceLogData.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/core/request/handler/logger/ListenerInterfaceLogData.java b/wicket-core/src/main/java/org/apache/wicket/core/request/handler/logger/ListenerInterfaceLogData.java
deleted file mode 100644
index 5ed97a7..0000000
--- a/wicket-core/src/main/java/org/apache/wicket/core/request/handler/logger/ListenerInterfaceLogData.java
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket.core.request.handler.logger;
-
-import org.apache.wicket.Component;
-import org.apache.wicket.behavior.Behavior;
-import org.apache.wicket.core.request.handler.IPageAndComponentProvider;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.markup.html.form.IFormSubmitter;
-import org.apache.wicket.request.component.IRequestableComponent;
-
-/**
- * Contains logging data for component/listener-interface request handlers.
- *
- * @author Emond Papegaaij
- */
-public class ListenerInterfaceLogData extends PageLogData
-{
-	private static final long serialVersionUID = 1L;
-
-	private final Class<? extends IRequestableComponent> componentClass;
-	private final String componentPath;
-	private final Integer behaviorIndex;
-	private Class<? extends Behavior> behaviorClass;
-	private Class<? extends IRequestableComponent> submittingComponentClass;
-	private String submittingComponentPath;
-
-	/**
-	 * Construct.
-	 *
-	 * @param pageAndComponentProvider
-	 * @param listenerInterface
-	 * @param behaviorIndex
-	 */
-	public ListenerInterfaceLogData(IPageAndComponentProvider pageAndComponentProvider, Integer behaviorIndex)
-	{
-		super(pageAndComponentProvider);
-		componentClass = tryToGetComponentClass(pageAndComponentProvider);
-		componentPath = tryToGetComponentPath(pageAndComponentProvider);
-		this.behaviorIndex = behaviorIndex;
-		if (behaviorIndex != null && componentClass != null)
-		{
-			try
-			{
-				behaviorClass = pageAndComponentProvider.getComponent()
-					.getBehaviorById(behaviorIndex)
-					.getClass();
-			}
-			catch (Exception ignore)
-			{
-				behaviorClass = null;
-			}
-		}
-		else
-		{
-			behaviorClass = null;
-		}
-		
-		final Component formSubmitter = tryToGetFormSubmittingComponent(pageAndComponentProvider);
-		if (formSubmitter != null)
-		{
-			submittingComponentClass = formSubmitter.getClass();
-			submittingComponentPath = formSubmitter.getPageRelativePath();
-		}
-	}
-
-	private static Class<? extends IRequestableComponent> tryToGetComponentClass(
-		IPageAndComponentProvider pageAndComponentProvider)
-	{
-		try
-		{
-			return pageAndComponentProvider.getComponent().getClass();
-		}
-		catch (Exception e)
-		{
-			// getComponent might fail if the page does not exist (ie session timeout)
-			return null;
-		}
-	}
-
-
-	private static String tryToGetComponentPath(IPageAndComponentProvider pageAndComponentProvider)
-	{
-		try
-		{
-			return pageAndComponentProvider.getComponentPath();
-		}
-		catch (Exception e)
-		{
-			// getComponentPath might fail if the page does not exist (ie session timeout)
-			return null;
-		}
-	}
-
-	private static Component tryToGetFormSubmittingComponent(
-		IPageAndComponentProvider pageAndComponentProvider)
-	{
-		try
-		{
-			final IRequestableComponent component = pageAndComponentProvider.getComponent();
-			if (component instanceof Form)
-			{
-				final IFormSubmitter submitter = ((Form<?>)component).findSubmittingButton();
-				return submitter instanceof Component ? (Component)submitter : null;
-			}
-			return null;
-		}
-		catch (Exception e)
-		{
-			// getComponent might fail if the page does not exist (ie session timeout)
-			return null;
-		}
-	}
-
-	/**
-	 * @return componentClass
-	 */
-	public final Class<? extends IRequestableComponent> getComponentClass()
-	{
-		return componentClass;
-	}
-
-	/**
-	 * @return componentPath
-	 */
-	public final String getComponentPath()
-	{
-		return componentPath;
-	}
-
-	/**
-	 * @return behaviorIndex
-	 */
-	public final Integer getBehaviorIndex()
-	{
-		return behaviorIndex;
-	}
-
-	/**
-	 * @return behaviorClass
-	 */
-	public final Class<? extends Behavior> getBehaviorClass()
-	{
-		return behaviorClass;
-	}
-
-	/**
-	 * @return submittingComponentClass
-	 */
-	public Class<? extends IRequestableComponent> getSubmittingComponentClass()
-	{
-		return submittingComponentClass;
-	}
-
-	/**
-	 * @return submittingComponentPath
-	 */
-	public String getSubmittingComponentPath()
-	{
-		return submittingComponentPath;
-	}
-
-	@Override
-	public String toString()
-	{
-		StringBuilder sb = new StringBuilder(super.toString());
-		sb.setCharAt(sb.length() - 1, ',');
-		if (getComponentClass() != null)
-		{
-			sb.append("componentClass=");
-			sb.append(getComponentClass().getName());
-			sb.append(',');
-		}
-		if (getComponentPath() != null)
-		{
-			sb.append("componentPath=");
-			sb.append(getComponentPath());
-			sb.append(',');
-		}
-		sb.append("behaviorIndex=");
-		sb.append(getBehaviorIndex());
-		if (getBehaviorClass() != null)
-		{
-			sb.append(",behaviorClass=");
-			sb.append(getBehaviorClass().getName());
-		}
-		if (getSubmittingComponentClass() != null)
-		{
-			sb.append(",submittingComponentClass=");
-			sb.append(getSubmittingComponentClass().getName());
-		}
-		if (getSubmittingComponentPath() != null)
-		{
-			sb.append(",submittingComponentPath=");
-			sb.append(getSubmittingComponentPath());
-		}
-		sb.append("}");
-		return sb.toString();
-	}
-}

http://git-wip-us.apache.org/repos/asf/wicket/blob/8342e4ef/wicket-core/src/main/java/org/apache/wicket/core/request/handler/logger/ListenerLogData.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/core/request/handler/logger/ListenerLogData.java b/wicket-core/src/main/java/org/apache/wicket/core/request/handler/logger/ListenerLogData.java
new file mode 100644
index 0000000..d06fe69
--- /dev/null
+++ b/wicket-core/src/main/java/org/apache/wicket/core/request/handler/logger/ListenerLogData.java
@@ -0,0 +1,214 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.core.request.handler.logger;
+
+import org.apache.wicket.Component;
+import org.apache.wicket.behavior.Behavior;
+import org.apache.wicket.core.request.handler.IPageAndComponentProvider;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.IFormSubmitter;
+import org.apache.wicket.request.component.IRequestableComponent;
+
+/**
+ * Contains logging data for component/listener-interface request handlers.
+ *
+ * @author Emond Papegaaij
+ */
+public class ListenerLogData extends PageLogData
+{
+	private static final long serialVersionUID = 1L;
+
+	private final Class<? extends IRequestableComponent> componentClass;
+	private final String componentPath;
+	private final Integer behaviorIndex;
+	private Class<? extends Behavior> behaviorClass;
+	private Class<? extends IRequestableComponent> submittingComponentClass;
+	private String submittingComponentPath;
+
+	/**
+	 * Construct.
+	 *
+	 * @param pageAndComponentProvider
+	 * @param listenerInterface
+	 * @param behaviorIndex
+	 */
+	public ListenerLogData(IPageAndComponentProvider pageAndComponentProvider, Integer behaviorIndex)
+	{
+		super(pageAndComponentProvider);
+		componentClass = tryToGetComponentClass(pageAndComponentProvider);
+		componentPath = tryToGetComponentPath(pageAndComponentProvider);
+		this.behaviorIndex = behaviorIndex;
+		if (behaviorIndex != null && componentClass != null)
+		{
+			try
+			{
+				behaviorClass = pageAndComponentProvider.getComponent()
+					.getBehaviorById(behaviorIndex)
+					.getClass();
+			}
+			catch (Exception ignore)
+			{
+				behaviorClass = null;
+			}
+		}
+		else
+		{
+			behaviorClass = null;
+		}
+		
+		final Component formSubmitter = tryToGetFormSubmittingComponent(pageAndComponentProvider);
+		if (formSubmitter != null)
+		{
+			submittingComponentClass = formSubmitter.getClass();
+			submittingComponentPath = formSubmitter.getPageRelativePath();
+		}
+	}
+
+	private static Class<? extends IRequestableComponent> tryToGetComponentClass(
+		IPageAndComponentProvider pageAndComponentProvider)
+	{
+		try
+		{
+			return pageAndComponentProvider.getComponent().getClass();
+		}
+		catch (Exception e)
+		{
+			// getComponent might fail if the page does not exist (ie session timeout)
+			return null;
+		}
+	}
+
+
+	private static String tryToGetComponentPath(IPageAndComponentProvider pageAndComponentProvider)
+	{
+		try
+		{
+			return pageAndComponentProvider.getComponentPath();
+		}
+		catch (Exception e)
+		{
+			// getComponentPath might fail if the page does not exist (ie session timeout)
+			return null;
+		}
+	}
+
+	private static Component tryToGetFormSubmittingComponent(
+		IPageAndComponentProvider pageAndComponentProvider)
+	{
+		try
+		{
+			final IRequestableComponent component = pageAndComponentProvider.getComponent();
+			if (component instanceof Form)
+			{
+				final IFormSubmitter submitter = ((Form<?>)component).findSubmittingButton();
+				return submitter instanceof Component ? (Component)submitter : null;
+			}
+			return null;
+		}
+		catch (Exception e)
+		{
+			// getComponent might fail if the page does not exist (ie session timeout)
+			return null;
+		}
+	}
+
+	/**
+	 * @return componentClass
+	 */
+	public final Class<? extends IRequestableComponent> getComponentClass()
+	{
+		return componentClass;
+	}
+
+	/**
+	 * @return componentPath
+	 */
+	public final String getComponentPath()
+	{
+		return componentPath;
+	}
+
+	/**
+	 * @return behaviorIndex
+	 */
+	public final Integer getBehaviorIndex()
+	{
+		return behaviorIndex;
+	}
+
+	/**
+	 * @return behaviorClass
+	 */
+	public final Class<? extends Behavior> getBehaviorClass()
+	{
+		return behaviorClass;
+	}
+
+	/**
+	 * @return submittingComponentClass
+	 */
+	public Class<? extends IRequestableComponent> getSubmittingComponentClass()
+	{
+		return submittingComponentClass;
+	}
+
+	/**
+	 * @return submittingComponentPath
+	 */
+	public String getSubmittingComponentPath()
+	{
+		return submittingComponentPath;
+	}
+
+	@Override
+	public String toString()
+	{
+		StringBuilder sb = new StringBuilder(super.toString());
+		sb.setCharAt(sb.length() - 1, ',');
+		if (getComponentClass() != null)
+		{
+			sb.append("componentClass=");
+			sb.append(getComponentClass().getName());
+			sb.append(',');
+		}
+		if (getComponentPath() != null)
+		{
+			sb.append("componentPath=");
+			sb.append(getComponentPath());
+			sb.append(',');
+		}
+		sb.append("behaviorIndex=");
+		sb.append(getBehaviorIndex());
+		if (getBehaviorClass() != null)
+		{
+			sb.append(",behaviorClass=");
+			sb.append(getBehaviorClass().getName());
+		}
+		if (getSubmittingComponentClass() != null)
+		{
+			sb.append(",submittingComponentClass=");
+			sb.append(getSubmittingComponentClass().getName());
+		}
+		if (getSubmittingComponentPath() != null)
+		{
+			sb.append(",submittingComponentPath=");
+			sb.append(getSubmittingComponentPath());
+		}
+		sb.append("}");
+		return sb.toString();
+	}
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/8342e4ef/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractBookmarkableMapper.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractBookmarkableMapper.java b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractBookmarkableMapper.java
index cb372d8..ecb50a2 100644
--- a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractBookmarkableMapper.java
+++ b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractBookmarkableMapper.java
@@ -23,7 +23,7 @@ import org.apache.wicket.IRequestListener;
 import org.apache.wicket.core.request.handler.BookmarkableListenerInterfaceRequestHandler;
 import org.apache.wicket.core.request.handler.BookmarkablePageRequestHandler;
 import org.apache.wicket.core.request.handler.IPageRequestHandler;
-import org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler;
+import org.apache.wicket.core.request.handler.ListenerRequestHandler;
 import org.apache.wicket.core.request.handler.PageAndComponentProvider;
 import org.apache.wicket.core.request.handler.PageProvider;
 import org.apache.wicket.core.request.handler.RenderPageRequestHandler;
@@ -304,7 +304,7 @@ public abstract class AbstractBookmarkableMapper extends AbstractComponentMapper
 
 		checkExpiration(provider, pageInfo);
 
-		return new ListenerInterfaceRequestHandler(provider, componentInfo.getBehaviorId());
+		return new ListenerRequestHandler(provider, componentInfo.getBehaviorId());
 	}
 
 	private void checkExpiration(PageProvider provider, PageInfo pageInfo)

http://git-wip-us.apache.org/repos/asf/wicket/blob/8342e4ef/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/MountedMapper.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/MountedMapper.java b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/MountedMapper.java
index 1b6aa28..f9edf11 100644
--- a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/MountedMapper.java
+++ b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/MountedMapper.java
@@ -18,7 +18,7 @@ package org.apache.wicket.core.request.mapper;
 
 import java.util.function.Supplier;
 
-import org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler;
+import org.apache.wicket.core.request.handler.ListenerRequestHandler;
 import org.apache.wicket.request.IRequestHandler;
 import org.apache.wicket.request.Request;
 import org.apache.wicket.request.Url;
@@ -158,10 +158,10 @@ public class MountedMapper extends AbstractBookmarkableMapper
 	{
 		Url url = super.mapHandler(requestHandler);
 
-		if (url == null && requestHandler instanceof ListenerInterfaceRequestHandler &&
+		if (url == null && requestHandler instanceof ListenerRequestHandler &&
 			getRecreateMountedPagesAfterExpiry())
 		{
-			ListenerInterfaceRequestHandler handler = (ListenerInterfaceRequestHandler)requestHandler;
+			ListenerRequestHandler handler = (ListenerRequestHandler)requestHandler;
 			IRequestablePage page = handler.getPage();
 			if (checkPageInstance(page))
 			{

http://git-wip-us.apache.org/repos/asf/wicket/blob/8342e4ef/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/PageInstanceMapper.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/PageInstanceMapper.java b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/PageInstanceMapper.java
index e983131..f90ea87 100644
--- a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/PageInstanceMapper.java
+++ b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/PageInstanceMapper.java
@@ -16,7 +16,7 @@
  */
 package org.apache.wicket.core.request.mapper;
 
-import org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler;
+import org.apache.wicket.core.request.handler.ListenerRequestHandler;
 import org.apache.wicket.core.request.handler.PageAndComponentProvider;
 import org.apache.wicket.core.request.handler.PageProvider;
 import org.apache.wicket.core.request.handler.RenderPageRequestHandler;
@@ -85,7 +85,7 @@ public class PageInstanceMapper extends AbstractComponentMapper
 
 					provider.setPageSource(getContext());
 
-					return new ListenerInterfaceRequestHandler(provider, componentInfo.getBehaviorId());
+					return new ListenerRequestHandler(provider, componentInfo.getBehaviorId());
 				}
 			}
 		}
@@ -107,9 +107,9 @@ public class PageInstanceMapper extends AbstractComponentMapper
 			PageInfo i = new PageInfo(page.getPageId());
 			info = new PageComponentInfo(i, null);
 		}
-		else if (requestHandler instanceof ListenerInterfaceRequestHandler)
+		else if (requestHandler instanceof ListenerRequestHandler)
 		{
-			ListenerInterfaceRequestHandler handler = (ListenerInterfaceRequestHandler)requestHandler;
+			ListenerRequestHandler handler = (ListenerRequestHandler)requestHandler;
 			IRequestablePage page = handler.getPage();
 			String componentPath = handler.getComponentPath();
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/8342e4ef/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java b/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
index b5a15ec..0b30c92 100644
--- a/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
+++ b/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
@@ -62,7 +62,7 @@ import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink;
 import org.apache.wicket.behavior.AbstractAjaxBehavior;
 import org.apache.wicket.core.request.handler.BookmarkablePageRequestHandler;
 import org.apache.wicket.core.request.handler.IPageProvider;
-import org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler;
+import org.apache.wicket.core.request.handler.ListenerRequestHandler;
 import org.apache.wicket.core.request.handler.PageAndComponentProvider;
 import org.apache.wicket.core.request.handler.PageProvider;
 import org.apache.wicket.core.request.handler.RenderPageRequestHandler;
@@ -1093,7 +1093,7 @@ public class BaseWicketTester
 
 		// there are two ways to do this. RequestCycle could be forced to call the handler
 		// directly but constructing and parsing the URL increases the chance of triggering bugs
-		IRequestHandler handler = new ListenerInterfaceRequestHandler(new PageAndComponentProvider(
+		IRequestHandler handler = new ListenerRequestHandler(new PageAndComponentProvider(
 			component.getPage(), component));
 
 		Url url = urlFor(handler);
@@ -1119,7 +1119,7 @@ public class BaseWicketTester
 
 		// there are two ways to do this. RequestCycle could be forced to call the handler
 		// directly but constructing and parsing the URL increases the chance of triggering bugs
-		IRequestHandler handler = new ListenerInterfaceRequestHandler(new PageAndComponentProvider(
+		IRequestHandler handler = new ListenerRequestHandler(new PageAndComponentProvider(
 			component.getPage(), component));
 
 		processRequest(handler);

http://git-wip-us.apache.org/repos/asf/wicket/blob/8342e4ef/wicket-core/src/test/java/org/apache/wicket/BehaviorRequestTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/BehaviorRequestTest.java b/wicket-core/src/test/java/org/apache/wicket/BehaviorRequestTest.java
index 909ee23..1e5227c 100644
--- a/wicket-core/src/test/java/org/apache/wicket/BehaviorRequestTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/BehaviorRequestTest.java
@@ -18,7 +18,7 @@ package org.apache.wicket;
 
 import org.apache.wicket.behavior.Behavior;
 import org.apache.wicket.core.request.handler.IPageAndComponentProvider;
-import org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler;
+import org.apache.wicket.core.request.handler.ListenerRequestHandler;
 import org.apache.wicket.core.request.handler.ListenerInvocationNotAllowedException;
 import org.apache.wicket.core.request.handler.PageAndComponentProvider;
 import org.apache.wicket.markup.ComponentTag;
@@ -83,7 +83,7 @@ public class BehaviorRequestTest extends WicketTestCase
 		final int index = page.container.getBehaviorId(behaviorUnderTest);
 		final IPageAndComponentProvider provider = new PageAndComponentProvider(page,
 			page.container);
-		final IRequestHandler handler = new ListenerInterfaceRequestHandler(provider, index);
+		final IRequestHandler handler = new ListenerRequestHandler(provider, index);
 
 		return tester.urlFor(handler).toString();
 	}

http://git-wip-us.apache.org/repos/asf/wicket/blob/8342e4ef/wicket-core/src/test/java/org/apache/wicket/ComponentWithLazyModelCreationTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/ComponentWithLazyModelCreationTest.java b/wicket-core/src/test/java/org/apache/wicket/ComponentWithLazyModelCreationTest.java
index 59cd19e..9361351 100644
--- a/wicket-core/src/test/java/org/apache/wicket/ComponentWithLazyModelCreationTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/ComponentWithLazyModelCreationTest.java
@@ -17,7 +17,7 @@
 package org.apache.wicket;
 
 import org.apache.wicket.behavior.Behavior;
-import org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler;
+import org.apache.wicket.core.request.handler.ListenerRequestHandler;
 import org.apache.wicket.core.request.handler.PageAndComponentProvider;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.IMarkupResourceStreamProvider;
@@ -120,7 +120,7 @@ public class ComponentWithLazyModelCreationTest extends WicketTestCase
 		{
 			super.onComponentTag(component, tag);
 			int index = component.getBehaviorId(this);
-			IRequestHandler handler = new ListenerInterfaceRequestHandler(
+			IRequestHandler handler = new ListenerRequestHandler(
 				new PageAndComponentProvider(component.getPage(), component), index);
 			statefullUrl = component.getRequestCycle().mapUrlFor(handler).toString();
 		}

http://git-wip-us.apache.org/repos/asf/wicket/blob/8342e4ef/wicket-core/src/test/java/org/apache/wicket/core/request/handler/ListenerInterfaceRequestHandlerTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/core/request/handler/ListenerInterfaceRequestHandlerTest.java b/wicket-core/src/test/java/org/apache/wicket/core/request/handler/ListenerInterfaceRequestHandlerTest.java
deleted file mode 100644
index d1c0592..0000000
--- a/wicket-core/src/test/java/org/apache/wicket/core/request/handler/ListenerInterfaceRequestHandlerTest.java
+++ /dev/null
@@ -1,208 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket.core.request.handler;
-
-import static org.hamcrest.Matchers.is;
-
-import java.io.IOException;
-import java.text.ParseException;
-
-import org.apache.wicket.MarkupContainer;
-import org.apache.wicket.Page;
-import org.apache.wicket.Session;
-import org.apache.wicket.WicketRuntimeException;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.markup.html.AjaxLink;
-import org.apache.wicket.core.request.mapper.MountedMapper;
-import org.apache.wicket.markup.IMarkupFragment;
-import org.apache.wicket.markup.IMarkupResourceStreamProvider;
-import org.apache.wicket.markup.Markup;
-import org.apache.wicket.markup.html.WebPage;
-import org.apache.wicket.markup.html.link.Link;
-import org.apache.wicket.markup.html.link.StatelessLink;
-import org.apache.wicket.request.Url;
-import org.apache.wicket.request.mapper.parameter.PageParameters;
-import org.apache.wicket.resource.DummyPage;
-import org.apache.wicket.util.resource.IResourceStream;
-import org.apache.wicket.util.resource.ResourceStreamNotFoundException;
-import org.apache.wicket.util.resource.StringResourceStream;
-import org.apache.wicket.util.tester.WicketTestCase;
-import org.junit.Test;
-
-/**
- * Tests for {@link ListenerInterfaceRequestHandler}
- */
-public class ListenerInterfaceRequestHandlerTest extends WicketTestCase
-{
-
-	/**
-	 * WICKET-5466
-	 */
-	@Test
-	public void removedComponent()
-	{
-		// non-existing component on fresh page is ignored
-		PageAndComponentProvider freshPage = new PageAndComponentProvider(DummyPage.class, null,
-			"foo");
-		new ListenerInterfaceRequestHandler(freshPage).respond(tester
-			.getRequestCycle());
-
-		// non-existing component on old page fails
-		PageAndComponentProvider oldPage = new PageAndComponentProvider(new DummyPage(), "foo");
-		try
-		{
-			new ListenerInterfaceRequestHandler(oldPage)
-				.respond(tester.getRequestCycle());
-			fail();
-		}
-		catch (WicketRuntimeException ex)
-		{
-			assertEquals("Component 'foo' has been removed from page.", ex.getMessage());
-		}
-	}
-
-	/**
-	 * https://issues.apache.org/jira/browse/WICKET-4116
-	 * 
-	 * @throws Exception
-	 */
-	@Test
-	public void recreateThePageWhenListenereInterfaceIsExecutedOnExpiredPage() throws Exception
-	{
-		tester.getApplication().mountPage("ajaxLink", AjaxLinkExpirePage.class);
-		AjaxLinkExpirePage page = tester.startPage(AjaxLinkExpirePage.class);
-
-		int initialPageId = page.getPageId();
-
-		Url urlToAjaxLink = tester.urlFor(page.link);
-		Session session = tester.getSession();
-		session.clear();
-
-		// fire a request to the ajax link on the expired page
-		executeAjaxUrlWithLastBaseUrl(urlToAjaxLink);
-
-		Page lastRenderedPage = tester.getLastRenderedPage();
-		int lastRenderedPageId = lastRenderedPage.getPageId();
-		assertTrue("A new page must be create ", lastRenderedPageId > initialPageId);
-	}
-
-	private void executeAjaxUrlWithLastBaseUrl(Url url) throws IOException,
-		ResourceStreamNotFoundException, ParseException
-	{
-		tester.getRequest().setUrl(url);
-		tester.getRequest().addHeader("Wicket-Ajax-BaseURL",
-			tester.getWicketAjaxBaseUrlEncodedInLastResponse());
-		tester.getRequest().addHeader("Wicket-Ajax", "true");
-		tester.processRequest();
-	}
-
-	/**
-	 * Test page for #recreateThePageWhenListenereInterfaceIsExecutedOnExpiredPage()
-	 */
-	public static class AjaxLinkExpirePage extends WebPage implements IMarkupResourceStreamProvider
-	{
-		private static final long serialVersionUID = 1L;
-
-		private AjaxLink<Void> link;
-
-		/**
-		 * Constructor.
-		 */
-		public AjaxLinkExpirePage()
-		{
-			add(link = new AjaxLink<Void>("test")
-			{
-				private static final long serialVersionUID = 1L;
-
-				@Override
-				public void onClick(AjaxRequestTarget target)
-				{
-					System.err.println("clicked");
-				}
-			});
-		}
-
-		@Override
-		public IResourceStream getMarkupResourceStream(MarkupContainer container,
-			Class<?> containerClass)
-		{
-
-			return new StringResourceStream(
-				"<html><body><a wicket:id='test'>Link</a></body></html>");
-		}
-
-	}
-
-	/**
-	 * Testcase for WICKET-4185
-	 */
-	@Test
-	public void isPageInstanceCreatedOnClassLinks()
-	{
-		PageAndComponentProvider provider = new PageAndComponentProvider(Page.class, "link");
-		ListenerInterfaceRequestHandler handler = new ListenerInterfaceRequestHandler(provider);
-		assertFalse("Handler should not report a page instance is available ",
-			handler.isPageInstanceCreated());
-	}
-
-	@Test
-	public void skipListenerIfExpiredPage()
-	{
-		tester.getApplication().getRootRequestMapperAsCompound() .add(new MountedMapper("/segment", NotExpiredPage.class));
-		tester.startPage(NotExpiredPage.class);
-		tester.clickLink("statelessLink");
-		NotExpiredPage page = (NotExpiredPage)tester.getLastRenderedPage();
-		assertThat(page.invoked, is(true));
-	}
-
-	public static class NotExpiredPage extends WebPage
-	{
-		public boolean invoked;
-
-		public NotExpiredPage(PageParameters pageParameters)
-		{
-			super(pageParameters);
-			add(new StatelessLink<Object>("statelessLink")
-			{
-				public void onClick()
-				{
-					invoked = true;
-				}
-			});
-			add(new Link<Object>("statefullLink")
-			{
-				public void onClick()
-				{
-				}
-			});
-		}
-
-		@Override
-		public IMarkupFragment getMarkup()
-		{
-			return Markup.of(
-				"<html><body><a wicket:id=\"statelessLink\"></a><a wicket:id=\"statefullLink\"></a></body></html>");
-		}
-
-		@Override
-		protected void onBeforeRender()
-		{
-			get("statefullLink").setVisible(false);
-			super.onBeforeRender();
-		}
-	}
-}

http://git-wip-us.apache.org/repos/asf/wicket/blob/8342e4ef/wicket-core/src/test/java/org/apache/wicket/core/request/handler/ListenerRequestHandlerTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/core/request/handler/ListenerRequestHandlerTest.java b/wicket-core/src/test/java/org/apache/wicket/core/request/handler/ListenerRequestHandlerTest.java
new file mode 100644
index 0000000..b212c9c
--- /dev/null
+++ b/wicket-core/src/test/java/org/apache/wicket/core/request/handler/ListenerRequestHandlerTest.java
@@ -0,0 +1,208 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.core.request.handler;
+
+import static org.hamcrest.Matchers.is;
+
+import java.io.IOException;
+import java.text.ParseException;
+
+import org.apache.wicket.MarkupContainer;
+import org.apache.wicket.Page;
+import org.apache.wicket.Session;
+import org.apache.wicket.WicketRuntimeException;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.AjaxLink;
+import org.apache.wicket.core.request.mapper.MountedMapper;
+import org.apache.wicket.markup.IMarkupFragment;
+import org.apache.wicket.markup.IMarkupResourceStreamProvider;
+import org.apache.wicket.markup.Markup;
+import org.apache.wicket.markup.html.WebPage;
+import org.apache.wicket.markup.html.link.Link;
+import org.apache.wicket.markup.html.link.StatelessLink;
+import org.apache.wicket.request.Url;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.apache.wicket.resource.DummyPage;
+import org.apache.wicket.util.resource.IResourceStream;
+import org.apache.wicket.util.resource.ResourceStreamNotFoundException;
+import org.apache.wicket.util.resource.StringResourceStream;
+import org.apache.wicket.util.tester.WicketTestCase;
+import org.junit.Test;
+
+/**
+ * Tests for {@link ListenerRequestHandler}
+ */
+public class ListenerRequestHandlerTest extends WicketTestCase
+{
+
+	/**
+	 * WICKET-5466
+	 */
+	@Test
+	public void removedComponent()
+	{
+		// non-existing component on fresh page is ignored
+		PageAndComponentProvider freshPage = new PageAndComponentProvider(DummyPage.class, null,
+			"foo");
+		new ListenerRequestHandler(freshPage).respond(tester
+			.getRequestCycle());
+
+		// non-existing component on old page fails
+		PageAndComponentProvider oldPage = new PageAndComponentProvider(new DummyPage(), "foo");
+		try
+		{
+			new ListenerRequestHandler(oldPage)
+				.respond(tester.getRequestCycle());
+			fail();
+		}
+		catch (WicketRuntimeException ex)
+		{
+			assertEquals("Component 'foo' has been removed from page.", ex.getMessage());
+		}
+	}
+
+	/**
+	 * https://issues.apache.org/jira/browse/WICKET-4116
+	 * 
+	 * @throws Exception
+	 */
+	@Test
+	public void recreateThePageWhenListenereInterfaceIsExecutedOnExpiredPage() throws Exception
+	{
+		tester.getApplication().mountPage("ajaxLink", AjaxLinkExpirePage.class);
+		AjaxLinkExpirePage page = tester.startPage(AjaxLinkExpirePage.class);
+
+		int initialPageId = page.getPageId();
+
+		Url urlToAjaxLink = tester.urlFor(page.link);
+		Session session = tester.getSession();
+		session.clear();
+
+		// fire a request to the ajax link on the expired page
+		executeAjaxUrlWithLastBaseUrl(urlToAjaxLink);
+
+		Page lastRenderedPage = tester.getLastRenderedPage();
+		int lastRenderedPageId = lastRenderedPage.getPageId();
+		assertTrue("A new page must be create ", lastRenderedPageId > initialPageId);
+	}
+
+	private void executeAjaxUrlWithLastBaseUrl(Url url) throws IOException,
+		ResourceStreamNotFoundException, ParseException
+	{
+		tester.getRequest().setUrl(url);
+		tester.getRequest().addHeader("Wicket-Ajax-BaseURL",
+			tester.getWicketAjaxBaseUrlEncodedInLastResponse());
+		tester.getRequest().addHeader("Wicket-Ajax", "true");
+		tester.processRequest();
+	}
+
+	/**
+	 * Test page for #recreateThePageWhenListenereInterfaceIsExecutedOnExpiredPage()
+	 */
+	public static class AjaxLinkExpirePage extends WebPage implements IMarkupResourceStreamProvider
+	{
+		private static final long serialVersionUID = 1L;
+
+		private AjaxLink<Void> link;
+
+		/**
+		 * Constructor.
+		 */
+		public AjaxLinkExpirePage()
+		{
+			add(link = new AjaxLink<Void>("test")
+			{
+				private static final long serialVersionUID = 1L;
+
+				@Override
+				public void onClick(AjaxRequestTarget target)
+				{
+					System.err.println("clicked");
+				}
+			});
+		}
+
+		@Override
+		public IResourceStream getMarkupResourceStream(MarkupContainer container,
+			Class<?> containerClass)
+		{
+
+			return new StringResourceStream(
+				"<html><body><a wicket:id='test'>Link</a></body></html>");
+		}
+
+	}
+
+	/**
+	 * Testcase for WICKET-4185
+	 */
+	@Test
+	public void isPageInstanceCreatedOnClassLinks()
+	{
+		PageAndComponentProvider provider = new PageAndComponentProvider(Page.class, "link");
+		ListenerRequestHandler handler = new ListenerRequestHandler(provider);
+		assertFalse("Handler should not report a page instance is available ",
+			handler.isPageInstanceCreated());
+	}
+
+	@Test
+	public void skipListenerIfExpiredPage()
+	{
+		tester.getApplication().getRootRequestMapperAsCompound() .add(new MountedMapper("/segment", NotExpiredPage.class));
+		tester.startPage(NotExpiredPage.class);
+		tester.clickLink("statelessLink");
+		NotExpiredPage page = (NotExpiredPage)tester.getLastRenderedPage();
+		assertThat(page.invoked, is(true));
+	}
+
+	public static class NotExpiredPage extends WebPage
+	{
+		public boolean invoked;
+
+		public NotExpiredPage(PageParameters pageParameters)
+		{
+			super(pageParameters);
+			add(new StatelessLink<Object>("statelessLink")
+			{
+				public void onClick()
+				{
+					invoked = true;
+				}
+			});
+			add(new Link<Object>("statefullLink")
+			{
+				public void onClick()
+				{
+				}
+			});
+		}
+
+		@Override
+		public IMarkupFragment getMarkup()
+		{
+			return Markup.of(
+				"<html><body><a wicket:id=\"statelessLink\"></a><a wicket:id=\"statefullLink\"></a></body></html>");
+		}
+
+		@Override
+		protected void onBeforeRender()
+		{
+			get("statefullLink").setVisible(false);
+			super.onBeforeRender();
+		}
+	}
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/8342e4ef/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/BookmarkableMapperTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/BookmarkableMapperTest.java b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/BookmarkableMapperTest.java
index f4fc1aa..e22210b 100644
--- a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/BookmarkableMapperTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/BookmarkableMapperTest.java
@@ -28,7 +28,7 @@ import org.apache.wicket.core.request.handler.BookmarkableListenerInterfaceReque
 import org.apache.wicket.core.request.handler.BookmarkablePageRequestHandler;
 import org.apache.wicket.core.request.handler.IPageProvider;
 import org.apache.wicket.core.request.handler.IPageRequestHandler;
-import org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler;
+import org.apache.wicket.core.request.handler.ListenerRequestHandler;
 import org.apache.wicket.core.request.handler.PageAndComponentProvider;
 import org.apache.wicket.core.request.handler.PageProvider;
 import org.apache.wicket.core.request.handler.RenderPageRequestHandler;
@@ -177,9 +177,9 @@ public class BookmarkableMapperTest extends AbstractMapperTest
 		Url url = Url.parse("wicket/bookmarkable/" + PAGE_CLASS_NAME + "?15--foo-bar");
 		IRequestHandler handler = encoder.mapRequest(getRequest(url));
 
-		assertThat(handler, instanceOf(ListenerInterfaceRequestHandler.class));
+		assertThat(handler, instanceOf(ListenerRequestHandler.class));
 
-		ListenerInterfaceRequestHandler h = (ListenerInterfaceRequestHandler)handler;
+		ListenerRequestHandler h = (ListenerRequestHandler)handler;
 
 		IRequestablePage page = h.getPage();
 		checkPage(page, 15);
@@ -198,8 +198,8 @@ public class BookmarkableMapperTest extends AbstractMapperTest
 			+ "/i1/i2?15--foo-bar&a=b&b=c");
 		IRequestHandler handler = encoder.mapRequest(getRequest(url));
 
-		assertThat(handler, instanceOf(ListenerInterfaceRequestHandler.class));
-		ListenerInterfaceRequestHandler h = (ListenerInterfaceRequestHandler)handler;
+		assertThat(handler, instanceOf(ListenerRequestHandler.class));
+		ListenerRequestHandler h = (ListenerRequestHandler)handler;
 
 		IRequestablePage page = h.getPage();
 		checkPage(page, 15);
@@ -222,9 +222,9 @@ public class BookmarkableMapperTest extends AbstractMapperTest
 			+ "?15-ILinkListener.4-foo-bar");
 		IRequestHandler handler = encoder.mapRequest(getRequest(url));
 
-		assertThat(handler, instanceOf(ListenerInterfaceRequestHandler.class));
+		assertThat(handler, instanceOf(ListenerRequestHandler.class));
 
-		ListenerInterfaceRequestHandler h = (ListenerInterfaceRequestHandler)handler;
+		ListenerRequestHandler h = (ListenerRequestHandler)handler;
 
 		IRequestablePage page = h.getPage();
 		checkPage(page, 15);
@@ -246,8 +246,8 @@ public class BookmarkableMapperTest extends AbstractMapperTest
 
 		IRequestHandler handler = encoder.mapRequest(getRequest(url));
 
-		assertThat(handler, instanceOf(ListenerInterfaceRequestHandler.class));
-		ListenerInterfaceRequestHandler h = (ListenerInterfaceRequestHandler)handler;
+		assertThat(handler, instanceOf(ListenerRequestHandler.class));
+		ListenerRequestHandler h = (ListenerRequestHandler)handler;
 
 		IRequestablePage page = h.getPage();
 		assertEquals(page.getRenderCount(), 5);

http://git-wip-us.apache.org/repos/asf/wicket/blob/8342e4ef/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/CryptoMapperTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/CryptoMapperTest.java b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/CryptoMapperTest.java
index 98696fd..f87dcc8 100644
--- a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/CryptoMapperTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/CryptoMapperTest.java
@@ -22,7 +22,7 @@ import java.util.function.Supplier;
 
 import org.apache.wicket.MockPage;
 import org.apache.wicket.core.request.handler.BookmarkableListenerInterfaceRequestHandler;
-import org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler;
+import org.apache.wicket.core.request.handler.ListenerRequestHandler;
 import org.apache.wicket.core.request.handler.PageAndComponentProvider;
 import org.apache.wicket.core.request.handler.PageProvider;
 import org.apache.wicket.core.request.handler.RenderPageRequestHandler;
@@ -358,7 +358,7 @@ public class CryptoMapperTest extends AbstractMapperTest
 		final String componentPath = "link";
 
 		PageAndComponentProvider provider = new PageAndComponentProvider(Page1.class, componentPath);
-		IRequestHandler requestHandler = new ListenerInterfaceRequestHandler(provider);
+		IRequestHandler requestHandler = new ListenerRequestHandler(provider);
 
 		Url plainUrl = mapper.getDelegateMapper().mapHandler(requestHandler);
 		assertTrue(plainUrl.toString().startsWith(MOUNTED_URL));
@@ -391,9 +391,9 @@ public class CryptoMapperTest extends AbstractMapperTest
 
 		requestHandler = unwrapRequestHandlerDelegate(requestHandler);
 
-		assertThat(requestHandler, instanceOf(ListenerInterfaceRequestHandler.class));
+		assertThat(requestHandler, instanceOf(ListenerRequestHandler.class));
 
-		ListenerInterfaceRequestHandler handler = (ListenerInterfaceRequestHandler) requestHandler;
+		ListenerRequestHandler handler = (ListenerRequestHandler) requestHandler;
 		assertEquals(componentPath, handler.getComponentPath());
 		assertEquals(Page1.class, handler.getPageClass());
 
@@ -407,9 +407,9 @@ public class CryptoMapperTest extends AbstractMapperTest
 
 		requestHandler = unwrapRequestHandlerDelegate(requestHandler);
 
-		assertThat(requestHandler, instanceOf(ListenerInterfaceRequestHandler.class));
+		assertThat(requestHandler, instanceOf(ListenerRequestHandler.class));
 
-		handler = (ListenerInterfaceRequestHandler) requestHandler;
+		handler = (ListenerRequestHandler) requestHandler;
 		assertEquals(componentPath, handler.getComponentPath());
 		assertEquals(Page1.class, handler.getPageClass());
 	}
@@ -603,7 +603,7 @@ public class CryptoMapperTest extends AbstractMapperTest
 		MockPage page = new MockPage();
 		IRequestableComponent c = page.get("foo:bar");
 		PageAndComponentProvider provider = new PageAndComponentProvider(page, c);
-		IRequestHandler handler = new ListenerInterfaceRequestHandler(provider);
+		IRequestHandler handler = new ListenerRequestHandler(provider);
 
 		Url url = mapper.mapHandler(handler);
 		url.addQueryParameter("q", "foo");

http://git-wip-us.apache.org/repos/asf/wicket/blob/8342e4ef/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/MountedMapperTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/MountedMapperTest.java b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/MountedMapperTest.java
index d92cc83..f19d866 100644
--- a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/MountedMapperTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/MountedMapperTest.java
@@ -23,7 +23,7 @@ import org.apache.wicket.core.request.handler.BookmarkableListenerInterfaceReque
 import org.apache.wicket.core.request.handler.BookmarkablePageRequestHandler;
 import org.apache.wicket.core.request.handler.IPageProvider;
 import org.apache.wicket.core.request.handler.IPageRequestHandler;
-import org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler;
+import org.apache.wicket.core.request.handler.ListenerRequestHandler;
 import org.apache.wicket.core.request.handler.PageAndComponentProvider;
 import org.apache.wicket.core.request.handler.PageProvider;
 import org.apache.wicket.core.request.handler.RenderPageRequestHandler;
@@ -210,9 +210,9 @@ public class MountedMapperTest extends AbstractMapperTest
 		Url url = Url.parse("some/mount/path?15--foo-bar");
 		IRequestHandler handler = encoder.mapRequest(getRequest(url));
 
-		assertThat(handler, instanceOf(ListenerInterfaceRequestHandler.class));
+		assertThat(handler, instanceOf(ListenerRequestHandler.class));
 
-		ListenerInterfaceRequestHandler h = (ListenerInterfaceRequestHandler)handler;
+		ListenerRequestHandler h = (ListenerRequestHandler)handler;
 
 		IRequestablePage page = h.getPage();
 		checkPage(page, 15);
@@ -230,8 +230,8 @@ public class MountedMapperTest extends AbstractMapperTest
 		Url url = Url.parse("some/mount/path/i1/i2?15--foo-bar&a=b&b=c");
 		IRequestHandler handler = encoder.mapRequest(getRequest(url));
 
-		assertThat(handler, instanceOf(ListenerInterfaceRequestHandler.class));
-		ListenerInterfaceRequestHandler h = (ListenerInterfaceRequestHandler)handler;
+		assertThat(handler, instanceOf(ListenerRequestHandler.class));
+		ListenerRequestHandler h = (ListenerRequestHandler)handler;
 
 		IRequestablePage page = h.getPage();
 		checkPage(page, 15);
@@ -253,9 +253,9 @@ public class MountedMapperTest extends AbstractMapperTest
 		Url url = Url.parse("some/mount/path?param1=value1&15-.4-foo-bar");
 		IRequestHandler handler = encoder.mapRequest(getRequest(url));
 
-		assertThat(handler, instanceOf(ListenerInterfaceRequestHandler.class));
+		assertThat(handler, instanceOf(ListenerRequestHandler.class));
 
-		ListenerInterfaceRequestHandler h = (ListenerInterfaceRequestHandler)handler;
+		ListenerRequestHandler h = (ListenerRequestHandler)handler;
 
 		IRequestablePage page = h.getPage();
 		checkPage(page, 15);
@@ -298,9 +298,9 @@ public class MountedMapperTest extends AbstractMapperTest
 		context.setNextPageRenderCount(5);
 		IRequestHandler handler = encoder.mapRequest(getRequest(url));
 
-		assertThat(handler, instanceOf(ListenerInterfaceRequestHandler.class));
+		assertThat(handler, instanceOf(ListenerRequestHandler.class));
 
-		ListenerInterfaceRequestHandler h = (ListenerInterfaceRequestHandler)handler;
+		ListenerRequestHandler h = (ListenerRequestHandler)handler;
 
 		IRequestablePage page = h.getPage();
 		assertEquals(5, page.getRenderCount());
@@ -329,9 +329,9 @@ public class MountedMapperTest extends AbstractMapperTest
 		Url url = Url.parse("some/mount/path/i1/i2?-1.-foo-bar&a=b&b=c");
 		IRequestHandler handler = encoder.mapRequest(getRequest(url));
 
-		assertThat(handler, instanceOf(ListenerInterfaceRequestHandler.class));
+		assertThat(handler, instanceOf(ListenerRequestHandler.class));
 
-		ListenerInterfaceRequestHandler h = (ListenerInterfaceRequestHandler)handler;
+		ListenerRequestHandler h = (ListenerRequestHandler)handler;
 		IRequestablePage page = h.getPage();
 		checkPage(page, 1);
 
@@ -497,7 +497,7 @@ public class MountedMapperTest extends AbstractMapperTest
 		IRequestableComponent c = page.get("foo:bar");
 
 		PageAndComponentProvider provider = new PageAndComponentProvider(page, c);
-		IRequestHandler handler = new ListenerInterfaceRequestHandler(provider);
+		IRequestHandler handler = new ListenerRequestHandler(provider);
 
 		Url url = encoder.mapHandler(handler);
 
@@ -555,7 +555,7 @@ public class MountedMapperTest extends AbstractMapperTest
 		IRequestableComponent c = page.get("foo:bar");
 
 		PageAndComponentProvider provider = new PageAndComponentProvider(page, c);
-		IRequestHandler handler = new ListenerInterfaceRequestHandler(provider, 4);
+		IRequestHandler handler = new ListenerRequestHandler(provider, 4);
 
 		Url url = encoder.mapHandler(handler);
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/8342e4ef/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PackageMapperTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PackageMapperTest.java b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PackageMapperTest.java
index 6a620ad..b0bb221 100644
--- a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PackageMapperTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PackageMapperTest.java
@@ -25,7 +25,7 @@ import org.apache.wicket.core.request.handler.BookmarkableListenerInterfaceReque
 import org.apache.wicket.core.request.handler.BookmarkablePageRequestHandler;
 import org.apache.wicket.core.request.handler.IPageProvider;
 import org.apache.wicket.core.request.handler.IPageRequestHandler;
-import org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler;
+import org.apache.wicket.core.request.handler.ListenerRequestHandler;
 import org.apache.wicket.core.request.handler.PageAndComponentProvider;
 import org.apache.wicket.core.request.handler.PageProvider;
 import org.apache.wicket.core.request.handler.RenderPageRequestHandler;
@@ -243,9 +243,9 @@ public class PackageMapperTest extends AbstractMapperTest
 		Url url = Url.parse(MOUNT_PATH + '/' + PAGE_CLASS_NAME + "?15--foo-bar");
 		IRequestHandler handler = encoder.mapRequest(getRequest(url));
 
-		assertThat(handler, instanceOf(ListenerInterfaceRequestHandler.class));
+		assertThat(handler, instanceOf(ListenerRequestHandler.class));
 
-		ListenerInterfaceRequestHandler h = (ListenerInterfaceRequestHandler)handler;
+		ListenerRequestHandler h = (ListenerRequestHandler)handler;
 
 		IRequestablePage page = h.getPage();
 		checkPage(page, 15);
@@ -263,8 +263,8 @@ public class PackageMapperTest extends AbstractMapperTest
 		Url url = Url.parse(MOUNT_PATH + '/' + PAGE_CLASS_NAME + "/i1/i2?15--foo-bar&a=b&b=c");
 		IRequestHandler handler = encoder.mapRequest(getRequest(url));
 
-		assertThat(handler, instanceOf(ListenerInterfaceRequestHandler.class));
-		ListenerInterfaceRequestHandler h = (ListenerInterfaceRequestHandler)handler;
+		assertThat(handler, instanceOf(ListenerRequestHandler.class));
+		ListenerRequestHandler h = (ListenerRequestHandler)handler;
 
 		IRequestablePage page = h.getPage();
 		checkPage(page, 15);
@@ -286,9 +286,9 @@ public class PackageMapperTest extends AbstractMapperTest
 		Url url = Url.parse(MOUNT_PATH + '/' + PAGE_CLASS_NAME + "?15-.4-foo-bar");
 		IRequestHandler handler = encoder.mapRequest(getRequest(url));
 
-		assertThat(handler, instanceOf(ListenerInterfaceRequestHandler.class));
+		assertThat(handler, instanceOf(ListenerRequestHandler.class));
 
-		ListenerInterfaceRequestHandler h = (ListenerInterfaceRequestHandler)handler;
+		ListenerRequestHandler h = (ListenerRequestHandler)handler;
 
 		IRequestablePage page = h.getPage();
 		checkPage(page, 15);
@@ -309,8 +309,8 @@ public class PackageMapperTest extends AbstractMapperTest
 
 		IRequestHandler handler = encoder.mapRequest(getRequest(url));
 
-		assertThat(handler, instanceOf(ListenerInterfaceRequestHandler.class));
-		ListenerInterfaceRequestHandler h = (ListenerInterfaceRequestHandler)handler;
+		assertThat(handler, instanceOf(ListenerRequestHandler.class));
+		ListenerRequestHandler h = (ListenerRequestHandler)handler;
 
 		IRequestablePage page = h.getPage();
 		assertEquals(page.getRenderCount(), 5);

http://git-wip-us.apache.org/repos/asf/wicket/blob/8342e4ef/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PageInstanceMapperTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PageInstanceMapperTest.java b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PageInstanceMapperTest.java
index 9a2eaf0..2691070 100644
--- a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PageInstanceMapperTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PageInstanceMapperTest.java
@@ -24,7 +24,7 @@ import java.util.Locale;
 import org.apache.wicket.MockPage;
 import org.apache.wicket.core.request.handler.IPageProvider;
 import org.apache.wicket.core.request.handler.IPageRequestHandler;
-import org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler;
+import org.apache.wicket.core.request.handler.ListenerRequestHandler;
 import org.apache.wicket.core.request.handler.PageAndComponentProvider;
 import org.apache.wicket.core.request.handler.PageProvider;
 import org.apache.wicket.core.request.handler.RenderPageRequestHandler;
@@ -90,9 +90,9 @@ public class PageInstanceMapperTest extends AbstractMapperTest
 		Url url = Url.parse("wicket/page?4--a-b-c");
 
 		IRequestHandler handler = encoder.mapRequest(getRequest(url));
-		assertThat(handler, instanceOf(ListenerInterfaceRequestHandler.class));
+		assertThat(handler, instanceOf(ListenerRequestHandler.class));
 
-		ListenerInterfaceRequestHandler h = (ListenerInterfaceRequestHandler)handler;
+		ListenerRequestHandler h = (ListenerRequestHandler)handler;
 		checkPage(h.getPage(), 4);
 		assertEquals(h.getComponent().getPageRelativePath(), "a:b:c");
 		assertNull(h.getBehaviorIndex());
@@ -131,9 +131,9 @@ public class PageInstanceMapperTest extends AbstractMapperTest
 		Url url = Url.parse("wicket/page?4-ILinkListener.5-a-b-c");
 
 		IRequestHandler handler = encoder.mapRequest(getRequest(url));
-		assertThat(handler, instanceOf(ListenerInterfaceRequestHandler.class));
+		assertThat(handler, instanceOf(ListenerRequestHandler.class));
 
-		ListenerInterfaceRequestHandler h = (ListenerInterfaceRequestHandler)handler;
+		ListenerRequestHandler h = (ListenerRequestHandler)handler;
 		checkPage(h.getPage(), 4);
 		assertEquals(h.getComponent().getPageRelativePath(), "a:b:c");
 		assertEquals((Object)5, h.getBehaviorIndex());
@@ -150,9 +150,9 @@ public class PageInstanceMapperTest extends AbstractMapperTest
 		context.setNextPageRenderCount(6);
 
 		IRequestHandler handler = encoder.mapRequest(getRequest(url));
-		assertThat(handler, instanceOf(ListenerInterfaceRequestHandler.class));
+		assertThat(handler, instanceOf(ListenerRequestHandler.class));
 
-		ListenerInterfaceRequestHandler h = (ListenerInterfaceRequestHandler)handler;
+		ListenerRequestHandler h = (ListenerRequestHandler)handler;
 		assertEquals(6, h.getPage().getRenderCount());
 	}
 
@@ -287,7 +287,7 @@ public class PageInstanceMapperTest extends AbstractMapperTest
 		IRequestableComponent c = page.get("a:b:c");
 
 		PageAndComponentProvider provider = new PageAndComponentProvider(page, c);
-		IRequestHandler handler = new ListenerInterfaceRequestHandler(provider);
+		IRequestHandler handler = new ListenerRequestHandler(provider);
 
 		Url url = encoder.mapHandler(handler);
 		assertEquals("wicket/page?15-5.-a-b-c", url.toString());

http://git-wip-us.apache.org/repos/asf/wicket/blob/8342e4ef/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/prototype/Index.java
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/prototype/Index.java b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/prototype/Index.java
index 2795eb5..c62ce4b 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/prototype/Index.java
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/prototype/Index.java
@@ -17,7 +17,7 @@
 package org.apache.wicket.examples.ajax.prototype;
 
 import org.apache.wicket.core.request.handler.ComponentRenderingRequestHandler;
-import org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler;
+import org.apache.wicket.core.request.handler.ListenerRequestHandler;
 import org.apache.wicket.core.request.handler.PageAndComponentProvider;
 import org.apache.wicket.examples.WicketExamplePage;
 import org.apache.wicket.markup.html.basic.Label;
@@ -79,8 +79,7 @@ public class Index extends WicketExamplePage
 			@Override
 			protected String getOnClickScript(CharSequence url)
 			{
-				IRequestHandler handler = new ListenerInterfaceRequestHandler(
-					new PageAndComponentProvider(getPage(), this));
+				IRequestHandler handler = new ListenerRequestHandler(new PageAndComponentProvider(getPage(), this));
 				Url componentUrl = RequestCycle.get().mapUrlFor(handler);
 				componentUrl.addQueryParameter("anticache", Math.random());
 				return new AppendingStringBuffer("new Ajax.Updater('counter', '").append(


Re: wicket git commit: WICKET-6137 renamed ListenerInterfaceRequestHandler to ListenerRequestHandler

Posted by Sven Meier <sv...@meiers.net>.
Oh yes, there goes another one.

I'll do a text search ...

Thanks
Sven


On 30.01.2017 17:01, Martin Grigorov wrote:
> What
> about org.apache.wicket.core.request.handler.BookmarkableListenerInterfaceRequestHandler
> ?
>
> Martin Grigorov
> Wicket Training and Consulting
> https://twitter.com/mtgrigorov
>
> On Mon, Jan 30, 2017 at 4:51 PM, <sv...@apache.org> wrote:
>
>> Repository: wicket
>> Updated Branches:
>>    refs/heads/master 16e44ce98 -> 8342e4ef9
>>
>>
>> WICKET-6137 renamed ListenerInterfaceRequestHandler to
>> ListenerRequestHandler
>>
>> there isn't a ..ListenerInterface any more
>>
>>
>> Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
>> Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/8342e4ef
>> Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/8342e4ef
>> Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/8342e4ef
>>
>> Branch: refs/heads/master
>> Commit: 8342e4ef9acd442ddfe7ad78d04838d17c1b9fec
>> Parents: 16e44ce
>> Author: Sven Meier <sv...@apache.org>
>> Authored: Mon Jan 30 16:50:26 2017 +0100
>> Committer: Sven Meier <sv...@apache.org>
>> Committed: Mon Jan 30 16:50:26 2017 +0100
>>
>> ----------------------------------------------------------------------
>>   .../main/java/org/apache/wicket/Component.java  |   4 +-
>>   ...markableListenerInterfaceRequestHandler.java |   2 +-
>>   .../ListenerInterfaceRequestHandler.java        | 327 -------------------
>>   .../request/handler/ListenerRequestHandler.java | 327 +++++++++++++++++++
>>   .../logger/ListenerInterfaceLogData.java        | 214 ------------
>>   .../request/handler/logger/ListenerLogData.java | 214 ++++++++++++
>>   .../mapper/AbstractBookmarkableMapper.java      |   4 +-
>>   .../core/request/mapper/MountedMapper.java      |   6 +-
>>   .../core/request/mapper/PageInstanceMapper.java |   8 +-
>>   .../wicket/util/tester/BaseWicketTester.java    |   6 +-
>>   .../org/apache/wicket/BehaviorRequestTest.java  |   4 +-
>>   .../ComponentWithLazyModelCreationTest.java     |   4 +-
>>   .../ListenerInterfaceRequestHandlerTest.java    | 208 ------------
>>   .../handler/ListenerRequestHandlerTest.java     | 208 ++++++++++++
>>   .../request/mapper/BookmarkableMapperTest.java  |  18 +-
>>   .../core/request/mapper/CryptoMapperTest.java   |  14 +-
>>   .../core/request/mapper/MountedMapperTest.java  |  26 +-
>>   .../core/request/mapper/PackageMapperTest.java  |  18 +-
>>   .../request/mapper/PageInstanceMapperTest.java  |  16 +-
>>   .../wicket/examples/ajax/prototype/Index.java   |   5 +-
>>   20 files changed, 816 insertions(+), 817 deletions(-)
>> ----------------------------------------------------------------------
>>
>>
>> http://git-wip-us.apache.org/repos/asf/wicket/blob/
>> 8342e4ef/wicket-core/src/main/java/org/apache/wicket/Component.java
>> ----------------------------------------------------------------------
>> diff --git a/wicket-core/src/main/java/org/apache/wicket/Component.java
>> b/wicket-core/src/main/java/org/apache/wicket/Component.java
>> index 97262ed..a6aa54f 100644
>> --- a/wicket-core/src/main/java/org/apache/wicket/Component.java
>> +++ b/wicket-core/src/main/java/org/apache/wicket/Component.java
>> @@ -32,7 +32,7 @@ import org.apache.wicket.authorization.
>> UnauthorizedActionException;
>>   import org.apache.wicket.authorization.strategies.page.
>> SimplePageAuthorizationStrategy;
>>   import org.apache.wicket.behavior.Behavior;
>>   import org.apache.wicket.core.request.handler.
>> BookmarkableListenerInterfaceRequestHandler;
>> -import org.apache.wicket.core.request.handler.
>> ListenerInterfaceRequestHandler;
>> +import org.apache.wicket.core.request.handler.ListenerRequestHandler;
>>   import org.apache.wicket.core.request.handler.PageAndComponentProvider;
>>   import org.apache.wicket.core.util.lang.WicketObjects;
>>   import org.apache.wicket.core.util.string.ComponentStrings;
>> @@ -3396,7 +3396,7 @@ public abstract class Component
>>                  }
>>                  else
>>                  {
>> -                       return new ListenerInterfaceRequestHandler(provider,
>> id);
>> +                       return new ListenerRequestHandler(provider, id);
>>                  }
>>          }
>>
>>
>> http://git-wip-us.apache.org/repos/asf/wicket/blob/
>> 8342e4ef/wicket-core/src/main/java/org/apache/wicket/core/request/handler/
>> BookmarkableListenerInterfaceRequestHandler.java
>> ----------------------------------------------------------------------
>> diff --git a/wicket-core/src/main/java/org/apache/wicket/core/
>> request/handler/BookmarkableListenerInterfaceRequestHandler.java
>> b/wicket-core/src/main/java/org/apache/wicket/core/request/handler/
>> BookmarkableListenerInterfaceRequestHandler.java
>> index b3de191..772e215 100644
>> --- a/wicket-core/src/main/java/org/apache/wicket/core/request/handler/
>> BookmarkableListenerInterfaceRequestHandler.java
>> +++ b/wicket-core/src/main/java/org/apache/wicket/core/request/handler/
>> BookmarkableListenerInterfaceRequestHandler.java
>> @@ -25,7 +25,7 @@ import org.apache.wicket.util.lang.Args;
>>
>>   /**
>>    * Request handler for bookmarkable pages with an {@link
>> IRequestListener}. This handler is only used to
>> - * generate URLs. Rendering is always handled by {@link
>> ListenerInterfaceRequestHandler}.
>> + * generate URLs. Rendering is always handled by {@link
>> ListenerRequestHandler}.
>>    *
>>    * @author Matej Knopp
>>    */
>>
>> http://git-wip-us.apache.org/repos/asf/wicket/blob/
>> 8342e4ef/wicket-core/src/main/java/org/apache/wicket/core/request/handler/
>> ListenerInterfaceRequestHandler.java
>> ----------------------------------------------------------------------
>> diff --git a/wicket-core/src/main/java/org/apache/wicket/core/
>> request/handler/ListenerInterfaceRequestHandler.java
>> b/wicket-core/src/main/java/org/apache/wicket/core/request/handler/
>> ListenerInterfaceRequestHandler.java
>> deleted file mode 100644
>> index c976a42..0000000
>> --- a/wicket-core/src/main/java/org/apache/wicket/core/request/handler/
>> ListenerInterfaceRequestHandler.java
>> +++ /dev/null
>> @@ -1,327 +0,0 @@
>> -/*
>> - * Licensed to the Apache Software Foundation (ASF) under one or more
>> - * contributor license agreements.  See the NOTICE file distributed with
>> - * this work for additional information regarding copyright ownership.
>> - * The ASF licenses this file to You under the Apache License, Version 2.0
>> - * (the "License"); you may not use this file except in compliance with
>> - * the License.  You may obtain a copy of the License at
>> - *
>> - *      http://www.apache.org/licenses/LICENSE-2.0
>> - *
>> - * Unless required by applicable law or agreed to in writing, software
>> - * distributed under the License is distributed on an "AS IS" BASIS,
>> - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
>> implied.
>> - * See the License for the specific language governing permissions and
>> - * limitations under the License.
>> - */
>> -package org.apache.wicket.core.request.handler;
>> -
>> -import org.apache.wicket.Component;
>> -import org.apache.wicket.IRequestListener;
>> -import org.apache.wicket.Page;
>> -import org.apache.wicket.WicketRuntimeException;
>> -import org.apache.wicket.behavior.Behavior;
>> -import org.apache.wicket.core.request.handler.RenderPageRequestHandler.
>> RedirectPolicy;
>> -import org.apache.wicket.core.request.handler.logger.
>> ListenerInterfaceLogData;
>> -import org.apache.wicket.request.ILoggableRequestHandler;
>> -import org.apache.wicket.request.IRequestCycle;
>> -import org.apache.wicket.request.component.IRequestableComponent;
>> -import org.apache.wicket.request.component.IRequestablePage;
>> -import org.apache.wicket.request.http.WebRequest;
>> -import org.apache.wicket.request.mapper.parameter.PageParameters;
>> -import org.apache.wicket.util.lang.Args;
>> -import org.slf4j.Logger;
>> -import org.slf4j.LoggerFactory;
>> -
>> -/**
>> - * Request handler that invokes an {@link IRequestListener} on component
>> or behavior and renders page afterwards.
>> - *
>> - * @author Matej Knopp
>> - */
>> -public class ListenerInterfaceRequestHandler
>> -       implements
>> -               IPageRequestHandler,
>> -               IComponentRequestHandler,
>> -               ILoggableRequestHandler
>> -{
>> -
>> -       private static final Logger LOG = LoggerFactory.getLogger(
>> ListenerInterfaceRequestHandler.class);
>> -
>> -       private final IPageAndComponentProvider pageComponentProvider;
>> -
>> -       private final Integer behaviorId;
>> -
>> -       private ListenerInterfaceLogData logData;
>> -
>> -       /**
>> -        * Construct.
>> -        *
>> -        * @param pageComponentProvider
>> -        * @param behaviorIndex
>> -        */
>> -       public ListenerInterfaceRequestHandler(IPageAndComponentProvider
>> pageComponentProvider, Integer behaviorIndex)
>> -       {
>> -               Args.notNull(pageComponentProvider,
>> "pageComponentProvider");
>> -
>> -               this.pageComponentProvider = pageComponentProvider;
>> -               behaviorId = behaviorIndex;
>> -       }
>> -
>> -       /**
>> -        * Construct.
>> -        *
>> -        * @param pageComponentProvider
>> -        */
>> -       public ListenerInterfaceRequestHandler(PageAndComponentProvider
>> pageComponentProvider)
>> -       {
>> -               this(pageComponentProvider, null);
>> -       }
>> -
>> -       public boolean includeRenderCount() {
>> -               if (behaviorId == null) {
>> -                       return ((IRequestListener)
>> getComponent()).rendersPage();
>> -               } else {
>> -                       return ((IRequestListener)getComponent().
>> getBehaviorById(getBehaviorIndex())).rendersPage();
>> -               }
>> -       }
>> -
>> -       @Override
>> -       public IRequestableComponent getComponent()
>> -       {
>> -               return pageComponentProvider.getComponent();
>> -       }
>> -
>> -       @Override
>> -       public IRequestablePage getPage()
>> -       {
>> -               return pageComponentProvider.getPageInstance();
>> -       }
>> -
>> -       @Override
>> -       public Class<? extends IRequestablePage> getPageClass()
>> -       {
>> -               return pageComponentProvider.getPageClass();
>> -       }
>> -
>> -       @Override
>> -       public Integer getPageId()
>> -       {
>> -               return pageComponentProvider.getPageId();
>> -       }
>> -
>> -       @Override
>> -       public PageParameters getPageParameters()
>> -       {
>> -               return pageComponentProvider.getPageParameters();
>> -       }
>> -
>> -       @Override
>> -       public void detach(IRequestCycle requestCycle)
>> -       {
>> -               if (logData == null)
>> -               {
>> -                       logData = new ListenerInterfaceLogData(pageComponentProvider,
>> behaviorId);
>> -               }
>> -               pageComponentProvider.detach();
>> -       }
>> -
>> -       /**
>> -        * Index of target behavior or <code>null</code> if component is
>> the target.
>> -        *
>> -        * @return behavior index or <code>null</code>
>> -        */
>> -       public Integer getBehaviorIndex()
>> -       {
>> -               return behaviorId;
>> -       }
>> -
>> -       @Override
>> -       public void respond(final IRequestCycle requestCycle)
>> -       {
>> -               final IRequestablePage page = getPage();
>> -               final boolean freshPage = pageComponentProvider.
>> isPageInstanceFresh();
>> -               final boolean isAjax = ((WebRequest)requestCycle.
>> getRequest()).isAjax();
>> -
>> -               IRequestableComponent component;
>> -               try
>> -               {
>> -                       component = getComponent();
>> -               }
>> -               catch (ComponentNotFoundException e)
>> -               {
>> -                       // either the page is stateless and the component
>> we are looking for is not added in the
>> -                       // constructor
>> -                       // or the page is stateful+stale and a new
>> instances was created by pageprovider
>> -                       // we denote this by setting component to null
>> -                       component = null;
>> -               }
>> -
>> -               if ((component == null && !freshPage) || (component !=
>> null && component.getPage() != page))
>> -               {
>> -                       throw new ComponentNotFoundException("Component
>> '" + getComponentPath()
>> -                                       + "' has been removed from page.");
>> -               }
>> -
>> -               if (page instanceof Page)
>> -               {
>> -                       // initialize the page to be able to check whether
>> it is stateless
>> -                       ((Page)page).internalInitialize();
>> -               }
>> -
>> -               RedirectPolicy policy = page.isPageStateless()
>> -                       ? RedirectPolicy.NEVER_REDIRECT
>> -                       : RedirectPolicy.AUTO_REDIRECT;
>> -
>> -               boolean blockIfExpired = component != null && !component.
>> canCallListenerInterfaceAfterExpiry();
>> -
>> -               boolean lateComponent = component == null && freshPage;
>> -
>> -               if ((pageComponentProvider.wasExpired() &&
>> blockIfExpired) || lateComponent)
>> -               {
>> -                       // A request listener is invoked on an expired
>> page or the component couldn't be
>> -                       // determined. The best we can do is to re-paint
>> the newly constructed page.
>> -                       // Reference: WICKET-4454, WICKET-6288
>> -
>> -                       if (LOG.isDebugEnabled())
>> -                       {
>> -                               LOG.debug(
>> -                                       "An IRequestListener was called
>> but its page/component({}) couldn't be resolved. "
>> -                                               + "Scheduling re-create of
>> the page and ignoring the listener interface...",
>> -                                       getComponentPath());
>> -                       }
>> -
>> -                       if (isAjax)
>> -                       {
>> -                               policy = RedirectPolicy.ALWAYS_REDIRECT;
>> -                       }
>> -
>> -                       requestCycle.scheduleRequestHandlerAfterCurrent(new
>> RenderPageRequestHandler(
>> -                               new PageProvider(page), policy));
>> -                       return;
>> -               }
>> -
>> -               invokeListener(requestCycle, policy, isAjax);
>> -       }
>> -
>> -       private void invokeListener(IRequestCycle requestCycle,
>> RedirectPolicy policy, boolean ajax)
>> -       {
>> -               if (getBehaviorIndex() == null)
>> -               {
>> -                       invoke(requestCycle, policy, ajax, getComponent());
>> -               }
>> -               else
>> -               {
>> -                       try
>> -                       {
>> -                               Behavior behavior = getComponent().
>> getBehaviorById(behaviorId);
>> -                               invoke(requestCycle, policy, ajax,
>> getComponent(), behavior);
>> -                       }
>> -                       catch (IndexOutOfBoundsException e)
>> -                       {
>> -                               throw new WicketRuntimeException("Couldn't
>> find component behavior.", e);
>> -                       }
>> -
>> -               }
>> -       }
>> -
>> -       /**
>> -        * Invokes a given interface on a component.
>> -        *
>> -        * @param rcomponent
>> -        *            The component
>> -        *
>> -        * @throws ListenerInvocationNotAllowedException
>> -        *             when listener invocation attempted on a component
>> that does not allow it
>> -        */
>> -       private final void invoke(final IRequestCycle requestCycle,
>> RedirectPolicy policy, boolean ajax, final IRequestableComponent rcomponent)
>> -       {
>> -               // we are in Wicket core land
>> -               final Component component = (Component)rcomponent;
>> -
>> -               if (!component.canCallListenerInterface())
>> -               {
>> -                       // just return so that we have a silent fail and
>> just re-render the
>> -                       // page
>> -                       LOG.info("component not enabled or visible;
>> ignoring call. Component: " + component);
>> -                       throw new ListenerInvocationNotAllowedException(component,
>> null,
>> -                               "Component rejected interface invocation");
>> -               }
>> -
>> -               internalInvoke(requestCycle, policy, ajax, component,
>> component);
>> -       }
>> -
>> -       /**
>> -        * Invokes a given interface on a component's behavior.
>> -        *
>> -        * @param rcomponent
>> -        *            The component
>> -        * @param behavior
>> -        * @throws ListenerInvocationNotAllowedException
>> -        *             when listener invocation attempted on a component
>> that does not allow it
>> -        */
>> -       private final void invoke(final IRequestCycle requestCycle,
>> RedirectPolicy policy, boolean ajax, final IRequestableComponent
>> rcomponent, final Behavior behavior)
>> -       {
>> -               // we are in Wicket core land
>> -               final Component component = (Component)rcomponent;
>> -
>> -               if (!behavior.canCallListenerInterface(component))
>> -               {
>> -                       LOG.warn("behavior not enabled; ignore call.
>> Behavior {} at component {}", behavior,
>> -                               component);
>> -                       throw new ListenerInvocationNotAllowedException(component,
>> behavior,
>> -                               "Behavior rejected interface invocation.
>> ");
>> -               }
>> -
>> -               internalInvoke(requestCycle, policy, ajax, component,
>> behavior);
>> -       }
>> -
>> -       private void internalInvoke(final IRequestCycle requestCycle,
>> RedirectPolicy policy, boolean ajax, final Component component, final
>> Object target)
>> -       {
>> -               // save a reference to the page because the component can
>> be removed
>> -               // during the invocation of the listener and thus lose its
>> parent
>> -               Page page = component.getPage();
>> -
>> -               // initialization is required for stateless pages
>> -               if (!page.isInitialized())
>> -               {
>> -                       page.internalInitialize();
>> -               }
>> -
>> -               IRequestListener requestListener =
>> (IRequestListener)target;
>> -
>> -               if (requestListener.rendersPage() && !ajax)
>> -               {
>> -                       // schedule page render after current request
>> handler is done. this can be
>> -                       // overridden during invocation of listener
>> -                       // method (i.e. by calling
>> RequestCycle#setResponsePage)
>> -                       requestCycle.scheduleRequestHandlerAfterCurrent(new
>> RenderPageRequestHandler(
>> -                               new PageProvider(page), policy));
>> -               }
>> -
>> -               requestListener.onRequest();
>> -       }
>> -
>> -       @Override
>> -       public final boolean isPageInstanceCreated()
>> -       {
>> -               return pageComponentProvider.hasPageInstance();
>> -       }
>> -
>> -       @Override
>> -       public final String getComponentPath()
>> -       {
>> -               return pageComponentProvider.getComponentPath();
>> -       }
>> -
>> -       @Override
>> -       public final Integer getRenderCount()
>> -       {
>> -               return pageComponentProvider.getRenderCount();
>> -       }
>> -
>> -       @Override
>> -       public ListenerInterfaceLogData getLogData()
>> -       {
>> -               return logData;
>> -       }
>> -}
>>
>> http://git-wip-us.apache.org/repos/asf/wicket/blob/
>> 8342e4ef/wicket-core/src/main/java/org/apache/wicket/core/request/handler/
>> ListenerRequestHandler.java
>> ----------------------------------------------------------------------
>> diff --git a/wicket-core/src/main/java/org/apache/wicket/core/
>> request/handler/ListenerRequestHandler.java b/wicket-core/src/main/java/
>> org/apache/wicket/core/request/handler/ListenerRequestHandler.java
>> new file mode 100644
>> index 0000000..3f131e3
>> --- /dev/null
>> +++ b/wicket-core/src/main/java/org/apache/wicket/core/request/handler/
>> ListenerRequestHandler.java
>> @@ -0,0 +1,327 @@
>> +/*
>> + * Licensed to the Apache Software Foundation (ASF) under one or more
>> + * contributor license agreements.  See the NOTICE file distributed with
>> + * this work for additional information regarding copyright ownership.
>> + * The ASF licenses this file to You under the Apache License, Version 2.0
>> + * (the "License"); you may not use this file except in compliance with
>> + * the License.  You may obtain a copy of the License at
>> + *
>> + *      http://www.apache.org/licenses/LICENSE-2.0
>> + *
>> + * Unless required by applicable law or agreed to in writing, software
>> + * distributed under the License is distributed on an "AS IS" BASIS,
>> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
>> implied.
>> + * See the License for the specific language governing permissions and
>> + * limitations under the License.
>> + */
>> +package org.apache.wicket.core.request.handler;
>> +
>> +import org.apache.wicket.Component;
>> +import org.apache.wicket.IRequestListener;
>> +import org.apache.wicket.Page;
>> +import org.apache.wicket.WicketRuntimeException;
>> +import org.apache.wicket.behavior.Behavior;
>> +import org.apache.wicket.core.request.handler.RenderPageRequestHandler.
>> RedirectPolicy;
>> +import org.apache.wicket.core.request.handler.logger.ListenerLogData;
>> +import org.apache.wicket.request.ILoggableRequestHandler;
>> +import org.apache.wicket.request.IRequestCycle;
>> +import org.apache.wicket.request.component.IRequestableComponent;
>> +import org.apache.wicket.request.component.IRequestablePage;
>> +import org.apache.wicket.request.http.WebRequest;
>> +import org.apache.wicket.request.mapper.parameter.PageParameters;
>> +import org.apache.wicket.util.lang.Args;
>> +import org.slf4j.Logger;
>> +import org.slf4j.LoggerFactory;
>> +
>> +/**
>> + * Request handler that invokes an {@link IRequestListener} on component
>> or behavior and renders page afterwards.
>> + *
>> + * @author Matej Knopp
>> + */
>> +public class ListenerRequestHandler
>> +       implements
>> +               IPageRequestHandler,
>> +               IComponentRequestHandler,
>> +               ILoggableRequestHandler
>> +{
>> +
>> +       private static final Logger LOG = LoggerFactory.getLogger(
>> ListenerRequestHandler.class);
>> +
>> +       private final IPageAndComponentProvider pageComponentProvider;
>> +
>> +       private final Integer behaviorId;
>> +
>> +       private ListenerLogData logData;
>> +
>> +       /**
>> +        * Construct.
>> +        *
>> +        * @param pageComponentProvider
>> +        * @param behaviorIndex
>> +        */
>> +       public ListenerRequestHandler(IPageAndComponentProvider
>> pageComponentProvider, Integer behaviorIndex)
>> +       {
>> +               Args.notNull(pageComponentProvider,
>> "pageComponentProvider");
>> +
>> +               this.pageComponentProvider = pageComponentProvider;
>> +               behaviorId = behaviorIndex;
>> +       }
>> +
>> +       /**
>> +        * Construct.
>> +        *
>> +        * @param pageComponentProvider
>> +        */
>> +       public ListenerRequestHandler(PageAndComponentProvider
>> pageComponentProvider)
>> +       {
>> +               this(pageComponentProvider, null);
>> +       }
>> +
>> +       public boolean includeRenderCount() {
>> +               if (behaviorId == null) {
>> +                       return ((IRequestListener)
>> getComponent()).rendersPage();
>> +               } else {
>> +                       return ((IRequestListener)getComponent().
>> getBehaviorById(getBehaviorIndex())).rendersPage();
>> +               }
>> +       }
>> +
>> +       @Override
>> +       public IRequestableComponent getComponent()
>> +       {
>> +               return pageComponentProvider.getComponent();
>> +       }
>> +
>> +       @Override
>> +       public IRequestablePage getPage()
>> +       {
>> +               return pageComponentProvider.getPageInstance();
>> +       }
>> +
>> +       @Override
>> +       public Class<? extends IRequestablePage> getPageClass()
>> +       {
>> +               return pageComponentProvider.getPageClass();
>> +       }
>> +
>> +       @Override
>> +       public Integer getPageId()
>> +       {
>> +               return pageComponentProvider.getPageId();
>> +       }
>> +
>> +       @Override
>> +       public PageParameters getPageParameters()
>> +       {
>> +               return pageComponentProvider.getPageParameters();
>> +       }
>> +
>> +       @Override
>> +       public void detach(IRequestCycle requestCycle)
>> +       {
>> +               if (logData == null)
>> +               {
>> +                       logData = new ListenerLogData(pageComponentProvider,
>> behaviorId);
>> +               }
>> +               pageComponentProvider.detach();
>> +       }
>> +
>> +       /**
>> +        * Index of target behavior or <code>null</code> if component is
>> the target.
>> +        *
>> +        * @return behavior index or <code>null</code>
>> +        */
>> +       public Integer getBehaviorIndex()
>> +       {
>> +               return behaviorId;
>> +       }
>> +
>> +       @Override
>> +       public void respond(final IRequestCycle requestCycle)
>> +       {
>> +               final IRequestablePage page = getPage();
>> +               final boolean freshPage = pageComponentProvider.
>> isPageInstanceFresh();
>> +               final boolean isAjax = ((WebRequest)requestCycle.
>> getRequest()).isAjax();
>> +
>> +               IRequestableComponent component;
>> +               try
>> +               {
>> +                       component = getComponent();
>> +               }
>> +               catch (ComponentNotFoundException e)
>> +               {
>> +                       // either the page is stateless and the component
>> we are looking for is not added in the
>> +                       // constructor
>> +                       // or the page is stateful+stale and a new
>> instances was created by pageprovider
>> +                       // we denote this by setting component to null
>> +                       component = null;
>> +               }
>> +
>> +               if ((component == null && !freshPage) || (component !=
>> null && component.getPage() != page))
>> +               {
>> +                       throw new ComponentNotFoundException("Component
>> '" + getComponentPath()
>> +                                       + "' has been removed from page.");
>> +               }
>> +
>> +               if (page instanceof Page)
>> +               {
>> +                       // initialize the page to be able to check whether
>> it is stateless
>> +                       ((Page)page).internalInitialize();
>> +               }
>> +
>> +               RedirectPolicy policy = page.isPageStateless()
>> +                       ? RedirectPolicy.NEVER_REDIRECT
>> +                       : RedirectPolicy.AUTO_REDIRECT;
>> +
>> +               boolean blockIfExpired = component != null && !component.
>> canCallListenerInterfaceAfterExpiry();
>> +
>> +               boolean lateComponent = component == null && freshPage;
>> +
>> +               if ((pageComponentProvider.wasExpired() &&
>> blockIfExpired) || lateComponent)
>> +               {
>> +                       // A request listener is invoked on an expired
>> page or the component couldn't be
>> +                       // determined. The best we can do is to re-paint
>> the newly constructed page.
>> +                       // Reference: WICKET-4454, WICKET-6288
>> +
>> +                       if (LOG.isDebugEnabled())
>> +                       {
>> +                               LOG.debug(
>> +                                       "An IRequestListener was called
>> but its page/component({}) couldn't be resolved. "
>> +                                               + "Scheduling re-create of
>> the page and ignoring the listener interface...",
>> +                                       getComponentPath());
>> +                       }
>> +
>> +                       if (isAjax)
>> +                       {
>> +                               policy = RedirectPolicy.ALWAYS_REDIRECT;
>> +                       }
>> +
>> +                       requestCycle.scheduleRequestHandlerAfterCurrent(new
>> RenderPageRequestHandler(
>> +                               new PageProvider(page), policy));
>> +                       return;
>> +               }
>> +
>> +               invokeListener(requestCycle, policy, isAjax);
>> +       }
>> +
>> +       private void invokeListener(IRequestCycle requestCycle,
>> RedirectPolicy policy, boolean ajax)
>> +       {
>> +               if (getBehaviorIndex() == null)
>> +               {
>> +                       invoke(requestCycle, policy, ajax, getComponent());
>> +               }
>> +               else
>> +               {
>> +                       try
>> +                       {
>> +                               Behavior behavior = getComponent().
>> getBehaviorById(behaviorId);
>> +                               invoke(requestCycle, policy, ajax,
>> getComponent(), behavior);
>> +                       }
>> +                       catch (IndexOutOfBoundsException e)
>> +                       {
>> +                               throw new WicketRuntimeException("Couldn't
>> find component behavior.", e);
>> +                       }
>> +
>> +               }
>> +       }
>> +
>> +       /**
>> +        * Invokes a given interface on a component.
>> +        *
>> +        * @param rcomponent
>> +        *            The component
>> +        *
>> +        * @throws ListenerInvocationNotAllowedException
>> +        *             when listener invocation attempted on a component
>> that does not allow it
>> +        */
>> +       private final void invoke(final IRequestCycle requestCycle,
>> RedirectPolicy policy, boolean ajax, final IRequestableComponent rcomponent)
>> +       {
>> +               // we are in Wicket core land
>> +               final Component component = (Component)rcomponent;
>> +
>> +               if (!component.canCallListenerInterface())
>> +               {
>> +                       // just return so that we have a silent fail and
>> just re-render the
>> +                       // page
>> +                       LOG.info("component not enabled or visible;
>> ignoring call. Component: " + component);
>> +                       throw new ListenerInvocationNotAllowedException(component,
>> null,
>> +                               "Component rejected interface invocation");
>> +               }
>> +
>> +               internalInvoke(requestCycle, policy, ajax, component,
>> component);
>> +       }
>> +
>> +       /**
>> +        * Invokes a given interface on a component's behavior.
>> +        *
>> +        * @param rcomponent
>> +        *            The component
>> +        * @param behavior
>> +        * @throws ListenerInvocationNotAllowedException
>> +        *             when listener invocation attempted on a component
>> that does not allow it
>> +        */
>> +       private final void invoke(final IRequestCycle requestCycle,
>> RedirectPolicy policy, boolean ajax, final IRequestableComponent
>> rcomponent, final Behavior behavior)
>> +       {
>> +               // we are in Wicket core land
>> +               final Component component = (Component)rcomponent;
>> +
>> +               if (!behavior.canCallListenerInterface(component))
>> +               {
>> +                       LOG.warn("behavior not enabled; ignore call.
>> Behavior {} at component {}", behavior,
>> +                               component);
>> +                       throw new ListenerInvocationNotAllowedException(component,
>> behavior,
>> +                               "Behavior rejected interface invocation.
>> ");
>> +               }
>> +
>> +               internalInvoke(requestCycle, policy, ajax, component,
>> behavior);
>> +       }
>> +
>> +       private void internalInvoke(final IRequestCycle requestCycle,
>> RedirectPolicy policy, boolean ajax, final Component component, final
>> Object target)
>> +       {
>> +               // save a reference to the page because the component can
>> be removed
>> +               // during the invocation of the listener and thus lose its
>> parent
>> +               Page page = component.getPage();
>> +
>> +               // initialization is required for stateless pages
>> +               if (!page.isInitialized())
>> +               {
>> +                       page.internalInitialize();
>> +               }
>> +
>> +               IRequestListener requestListener =
>> (IRequestListener)target;
>> +
>> +               if (requestListener.rendersPage() && !ajax)
>> +               {
>> +                       // schedule page render after current request
>> handler is done. this can be
>> +                       // overridden during invocation of listener
>> +                       // method (i.e. by calling
>> RequestCycle#setResponsePage)
>> +                       requestCycle.scheduleRequestHandlerAfterCurrent(new
>> RenderPageRequestHandler(
>> +                               new PageProvider(page), policy));
>> +               }
>> +
>> +               requestListener.onRequest();
>> +       }
>> +
>> +       @Override
>> +       public final boolean isPageInstanceCreated()
>> +       {
>> +               return pageComponentProvider.hasPageInstance();
>> +       }
>> +
>> +       @Override
>> +       public final String getComponentPath()
>> +       {
>> +               return pageComponentProvider.getComponentPath();
>> +       }
>> +
>> +       @Override
>> +       public final Integer getRenderCount()
>> +       {
>> +               return pageComponentProvider.getRenderCount();
>> +       }
>> +
>> +       @Override
>> +       public ListenerLogData getLogData()
>> +       {
>> +               return logData;
>> +       }
>> +}
>>
>> http://git-wip-us.apache.org/repos/asf/wicket/blob/
>> 8342e4ef/wicket-core/src/main/java/org/apache/wicket/core/
>> request/handler/logger/ListenerInterfaceLogData.java
>> ----------------------------------------------------------------------
>> diff --git a/wicket-core/src/main/java/org/apache/wicket/core/
>> request/handler/logger/ListenerInterfaceLogData.java
>> b/wicket-core/src/main/java/org/apache/wicket/core/request/handler/logger/
>> ListenerInterfaceLogData.java
>> deleted file mode 100644
>> index 5ed97a7..0000000
>> --- a/wicket-core/src/main/java/org/apache/wicket/core/
>> request/handler/logger/ListenerInterfaceLogData.java
>> +++ /dev/null
>> @@ -1,214 +0,0 @@
>> -/*
>> - * Licensed to the Apache Software Foundation (ASF) under one or more
>> - * contributor license agreements.  See the NOTICE file distributed with
>> - * this work for additional information regarding copyright ownership.
>> - * The ASF licenses this file to You under the Apache License, Version 2.0
>> - * (the "License"); you may not use this file except in compliance with
>> - * the License.  You may obtain a copy of the License at
>> - *
>> - *      http://www.apache.org/licenses/LICENSE-2.0
>> - *
>> - * Unless required by applicable law or agreed to in writing, software
>> - * distributed under the License is distributed on an "AS IS" BASIS,
>> - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
>> implied.
>> - * See the License for the specific language governing permissions and
>> - * limitations under the License.
>> - */
>> -package org.apache.wicket.core.request.handler.logger;
>> -
>> -import org.apache.wicket.Component;
>> -import org.apache.wicket.behavior.Behavior;
>> -import org.apache.wicket.core.request.handler.IPageAndComponentProvider;
>> -import org.apache.wicket.markup.html.form.Form;
>> -import org.apache.wicket.markup.html.form.IFormSubmitter;
>> -import org.apache.wicket.request.component.IRequestableComponent;
>> -
>> -/**
>> - * Contains logging data for component/listener-interface request
>> handlers.
>> - *
>> - * @author Emond Papegaaij
>> - */
>> -public class ListenerInterfaceLogData extends PageLogData
>> -{
>> -       private static final long serialVersionUID = 1L;
>> -
>> -       private final Class<? extends IRequestableComponent>
>> componentClass;
>> -       private final String componentPath;
>> -       private final Integer behaviorIndex;
>> -       private Class<? extends Behavior> behaviorClass;
>> -       private Class<? extends IRequestableComponent>
>> submittingComponentClass;
>> -       private String submittingComponentPath;
>> -
>> -       /**
>> -        * Construct.
>> -        *
>> -        * @param pageAndComponentProvider
>> -        * @param listenerInterface
>> -        * @param behaviorIndex
>> -        */
>> -       public ListenerInterfaceLogData(IPageAndComponentProvider
>> pageAndComponentProvider, Integer behaviorIndex)
>> -       {
>> -               super(pageAndComponentProvider);
>> -               componentClass = tryToGetComponentClass(
>> pageAndComponentProvider);
>> -               componentPath = tryToGetComponentPath(
>> pageAndComponentProvider);
>> -               this.behaviorIndex = behaviorIndex;
>> -               if (behaviorIndex != null && componentClass != null)
>> -               {
>> -                       try
>> -                       {
>> -                               behaviorClass = pageAndComponentProvider.
>> getComponent()
>> -                                       .getBehaviorById(behaviorIndex)
>> -                                       .getClass();
>> -                       }
>> -                       catch (Exception ignore)
>> -                       {
>> -                               behaviorClass = null;
>> -                       }
>> -               }
>> -               else
>> -               {
>> -                       behaviorClass = null;
>> -               }
>> -
>> -               final Component formSubmitter =
>> tryToGetFormSubmittingComponent(pageAndComponentProvider);
>> -               if (formSubmitter != null)
>> -               {
>> -                       submittingComponentClass =
>> formSubmitter.getClass();
>> -                       submittingComponentPath = formSubmitter.
>> getPageRelativePath();
>> -               }
>> -       }
>> -
>> -       private static Class<? extends IRequestableComponent>
>> tryToGetComponentClass(
>> -               IPageAndComponentProvider pageAndComponentProvider)
>> -       {
>> -               try
>> -               {
>> -                       return pageAndComponentProvider.
>> getComponent().getClass();
>> -               }
>> -               catch (Exception e)
>> -               {
>> -                       // getComponent might fail if the page does not
>> exist (ie session timeout)
>> -                       return null;
>> -               }
>> -       }
>> -
>> -
>> -       private static String tryToGetComponentPath(IPageAndComponentProvider
>> pageAndComponentProvider)
>> -       {
>> -               try
>> -               {
>> -                       return pageAndComponentProvider.
>> getComponentPath();
>> -               }
>> -               catch (Exception e)
>> -               {
>> -                       // getComponentPath might fail if the page does
>> not exist (ie session timeout)
>> -                       return null;
>> -               }
>> -       }
>> -
>> -       private static Component tryToGetFormSubmittingComponent(
>> -               IPageAndComponentProvider pageAndComponentProvider)
>> -       {
>> -               try
>> -               {
>> -                       final IRequestableComponent component =
>> pageAndComponentProvider.getComponent();
>> -                       if (component instanceof Form)
>> -                       {
>> -                               final IFormSubmitter submitter =
>> ((Form<?>)component).findSubmittingButton();
>> -                               return submitter instanceof Component ?
>> (Component)submitter : null;
>> -                       }
>> -                       return null;
>> -               }
>> -               catch (Exception e)
>> -               {
>> -                       // getComponent might fail if the page does not
>> exist (ie session timeout)
>> -                       return null;
>> -               }
>> -       }
>> -
>> -       /**
>> -        * @return componentClass
>> -        */
>> -       public final Class<? extends IRequestableComponent>
>> getComponentClass()
>> -       {
>> -               return componentClass;
>> -       }
>> -
>> -       /**
>> -        * @return componentPath
>> -        */
>> -       public final String getComponentPath()
>> -       {
>> -               return componentPath;
>> -       }
>> -
>> -       /**
>> -        * @return behaviorIndex
>> -        */
>> -       public final Integer getBehaviorIndex()
>> -       {
>> -               return behaviorIndex;
>> -       }
>> -
>> -       /**
>> -        * @return behaviorClass
>> -        */
>> -       public final Class<? extends Behavior> getBehaviorClass()
>> -       {
>> -               return behaviorClass;
>> -       }
>> -
>> -       /**
>> -        * @return submittingComponentClass
>> -        */
>> -       public Class<? extends IRequestableComponent>
>> getSubmittingComponentClass()
>> -       {
>> -               return submittingComponentClass;
>> -       }
>> -
>> -       /**
>> -        * @return submittingComponentPath
>> -        */
>> -       public String getSubmittingComponentPath()
>> -       {
>> -               return submittingComponentPath;
>> -       }
>> -
>> -       @Override
>> -       public String toString()
>> -       {
>> -               StringBuilder sb = new StringBuilder(super.toString());
>> -               sb.setCharAt(sb.length() - 1, ',');
>> -               if (getComponentClass() != null)
>> -               {
>> -                       sb.append("componentClass=");
>> -                       sb.append(getComponentClass().getName());
>> -                       sb.append(',');
>> -               }
>> -               if (getComponentPath() != null)
>> -               {
>> -                       sb.append("componentPath=");
>> -                       sb.append(getComponentPath());
>> -                       sb.append(',');
>> -               }
>> -               sb.append("behaviorIndex=");
>> -               sb.append(getBehaviorIndex());
>> -               if (getBehaviorClass() != null)
>> -               {
>> -                       sb.append(",behaviorClass=");
>> -                       sb.append(getBehaviorClass().getName());
>> -               }
>> -               if (getSubmittingComponentClass() != null)
>> -               {
>> -                       sb.append(",submittingComponentClass=");
>> -                       sb.append(getSubmittingComponentClass().
>> getName());
>> -               }
>> -               if (getSubmittingComponentPath() != null)
>> -               {
>> -                       sb.append(",submittingComponentPath=");
>> -                       sb.append(getSubmittingComponentPath());
>> -               }
>> -               sb.append("}");
>> -               return sb.toString();
>> -       }
>> -}
>>
>> http://git-wip-us.apache.org/repos/asf/wicket/blob/
>> 8342e4ef/wicket-core/src/main/java/org/apache/wicket/core/
>> request/handler/logger/ListenerLogData.java
>> ----------------------------------------------------------------------
>> diff --git a/wicket-core/src/main/java/org/apache/wicket/core/
>> request/handler/logger/ListenerLogData.java b/wicket-core/src/main/java/
>> org/apache/wicket/core/request/handler/logger/ListenerLogData.java
>> new file mode 100644
>> index 0000000..d06fe69
>> --- /dev/null
>> +++ b/wicket-core/src/main/java/org/apache/wicket/core/
>> request/handler/logger/ListenerLogData.java
>> @@ -0,0 +1,214 @@
>> +/*
>> + * Licensed to the Apache Software Foundation (ASF) under one or more
>> + * contributor license agreements.  See the NOTICE file distributed with
>> + * this work for additional information regarding copyright ownership.
>> + * The ASF licenses this file to You under the Apache License, Version 2.0
>> + * (the "License"); you may not use this file except in compliance with
>> + * the License.  You may obtain a copy of the License at
>> + *
>> + *      http://www.apache.org/licenses/LICENSE-2.0
>> + *
>> + * Unless required by applicable law or agreed to in writing, software
>> + * distributed under the License is distributed on an "AS IS" BASIS,
>> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
>> implied.
>> + * See the License for the specific language governing permissions and
>> + * limitations under the License.
>> + */
>> +package org.apache.wicket.core.request.handler.logger;
>> +
>> +import org.apache.wicket.Component;
>> +import org.apache.wicket.behavior.Behavior;
>> +import org.apache.wicket.core.request.handler.IPageAndComponentProvider;
>> +import org.apache.wicket.markup.html.form.Form;
>> +import org.apache.wicket.markup.html.form.IFormSubmitter;
>> +import org.apache.wicket.request.component.IRequestableComponent;
>> +
>> +/**
>> + * Contains logging data for component/listener-interface request
>> handlers.
>> + *
>> + * @author Emond Papegaaij
>> + */
>> +public class ListenerLogData extends PageLogData
>> +{
>> +       private static final long serialVersionUID = 1L;
>> +
>> +       private final Class<? extends IRequestableComponent>
>> componentClass;
>> +       private final String componentPath;
>> +       private final Integer behaviorIndex;
>> +       private Class<? extends Behavior> behaviorClass;
>> +       private Class<? extends IRequestableComponent>
>> submittingComponentClass;
>> +       private String submittingComponentPath;
>> +
>> +       /**
>> +        * Construct.
>> +        *
>> +        * @param pageAndComponentProvider
>> +        * @param listenerInterface
>> +        * @param behaviorIndex
>> +        */
>> +       public ListenerLogData(IPageAndComponentProvider
>> pageAndComponentProvider, Integer behaviorIndex)
>> +       {
>> +               super(pageAndComponentProvider);
>> +               componentClass = tryToGetComponentClass(
>> pageAndComponentProvider);
>> +               componentPath = tryToGetComponentPath(
>> pageAndComponentProvider);
>> +               this.behaviorIndex = behaviorIndex;
>> +               if (behaviorIndex != null && componentClass != null)
>> +               {
>> +                       try
>> +                       {
>> +                               behaviorClass = pageAndComponentProvider.
>> getComponent()
>> +                                       .getBehaviorById(behaviorIndex)
>> +                                       .getClass();
>> +                       }
>> +                       catch (Exception ignore)
>> +                       {
>> +                               behaviorClass = null;
>> +                       }
>> +               }
>> +               else
>> +               {
>> +                       behaviorClass = null;
>> +               }
>> +
>> +               final Component formSubmitter =
>> tryToGetFormSubmittingComponent(pageAndComponentProvider);
>> +               if (formSubmitter != null)
>> +               {
>> +                       submittingComponentClass =
>> formSubmitter.getClass();
>> +                       submittingComponentPath = formSubmitter.
>> getPageRelativePath();
>> +               }
>> +       }
>> +
>> +       private static Class<? extends IRequestableComponent>
>> tryToGetComponentClass(
>> +               IPageAndComponentProvider pageAndComponentProvider)
>> +       {
>> +               try
>> +               {
>> +                       return pageAndComponentProvider.
>> getComponent().getClass();
>> +               }
>> +               catch (Exception e)
>> +               {
>> +                       // getComponent might fail if the page does not
>> exist (ie session timeout)
>> +                       return null;
>> +               }
>> +       }
>> +
>> +
>> +       private static String tryToGetComponentPath(IPageAndComponentProvider
>> pageAndComponentProvider)
>> +       {
>> +               try
>> +               {
>> +                       return pageAndComponentProvider.
>> getComponentPath();
>> +               }
>> +               catch (Exception e)
>> +               {
>> +                       // getComponentPath might fail if the page does
>> not exist (ie session timeout)
>> +                       return null;
>> +               }
>> +       }
>> +
>> +       private static Component tryToGetFormSubmittingComponent(
>> +               IPageAndComponentProvider pageAndComponentProvider)
>> +       {
>> +               try
>> +               {
>> +                       final IRequestableComponent component =
>> pageAndComponentProvider.getComponent();
>> +                       if (component instanceof Form)
>> +                       {
>> +                               final IFormSubmitter submitter =
>> ((Form<?>)component).findSubmittingButton();
>> +                               return submitter instanceof Component ?
>> (Component)submitter : null;
>> +                       }
>> +                       return null;
>> +               }
>> +               catch (Exception e)
>> +               {
>> +                       // getComponent might fail if the page does not
>> exist (ie session timeout)
>> +                       return null;
>> +               }
>> +       }
>> +
>> +       /**
>> +        * @return componentClass
>> +        */
>> +       public final Class<? extends IRequestableComponent>
>> getComponentClass()
>> +       {
>> +               return componentClass;
>> +       }
>> +
>> +       /**
>> +        * @return componentPath
>> +        */
>> +       public final String getComponentPath()
>> +       {
>> +               return componentPath;
>> +       }
>> +
>> +       /**
>> +        * @return behaviorIndex
>> +        */
>> +       public final Integer getBehaviorIndex()
>> +       {
>> +               return behaviorIndex;
>> +       }
>> +
>> +       /**
>> +        * @return behaviorClass
>> +        */
>> +       public final Class<? extends Behavior> getBehaviorClass()
>> +       {
>> +               return behaviorClass;
>> +       }
>> +
>> +       /**
>> +        * @return submittingComponentClass
>> +        */
>> +       public Class<? extends IRequestableComponent>
>> getSubmittingComponentClass()
>> +       {
>> +               return submittingComponentClass;
>> +       }
>> +
>> +       /**
>> +        * @return submittingComponentPath
>> +        */
>> +       public String getSubmittingComponentPath()
>> +       {
>> +               return submittingComponentPath;
>> +       }
>> +
>> +       @Override
>> +       public String toString()
>> +       {
>> +               StringBuilder sb = new StringBuilder(super.toString());
>> +               sb.setCharAt(sb.length() - 1, ',');
>> +               if (getComponentClass() != null)
>> +               {
>> +                       sb.append("componentClass=");
>> +                       sb.append(getComponentClass().getName());
>> +                       sb.append(',');
>> +               }
>> +               if (getComponentPath() != null)
>> +               {
>> +                       sb.append("componentPath=");
>> +                       sb.append(getComponentPath());
>> +                       sb.append(',');
>> +               }
>> +               sb.append("behaviorIndex=");
>> +               sb.append(getBehaviorIndex());
>> +               if (getBehaviorClass() != null)
>> +               {
>> +                       sb.append(",behaviorClass=");
>> +                       sb.append(getBehaviorClass().getName());
>> +               }
>> +               if (getSubmittingComponentClass() != null)
>> +               {
>> +                       sb.append(",submittingComponentClass=");
>> +                       sb.append(getSubmittingComponentClass().
>> getName());
>> +               }
>> +               if (getSubmittingComponentPath() != null)
>> +               {
>> +                       sb.append(",submittingComponentPath=");
>> +                       sb.append(getSubmittingComponentPath());
>> +               }
>> +               sb.append("}");
>> +               return sb.toString();
>> +       }
>> +}
>>
>> http://git-wip-us.apache.org/repos/asf/wicket/blob/
>> 8342e4ef/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/
>> AbstractBookmarkableMapper.java
>> ----------------------------------------------------------------------
>> diff --git a/wicket-core/src/main/java/org/apache/wicket/core/
>> request/mapper/AbstractBookmarkableMapper.java
>> b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/
>> AbstractBookmarkableMapper.java
>> index cb372d8..ecb50a2 100644
>> --- a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/
>> AbstractBookmarkableMapper.java
>> +++ b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/
>> AbstractBookmarkableMapper.java
>> @@ -23,7 +23,7 @@ import org.apache.wicket.IRequestListener;
>>   import org.apache.wicket.core.request.handler.
>> BookmarkableListenerInterfaceRequestHandler;
>>   import org.apache.wicket.core.request.handler.
>> BookmarkablePageRequestHandler;
>>   import org.apache.wicket.core.request.handler.IPageRequestHandler;
>> -import org.apache.wicket.core.request.handler.
>> ListenerInterfaceRequestHandler;
>> +import org.apache.wicket.core.request.handler.ListenerRequestHandler;
>>   import org.apache.wicket.core.request.handler.PageAndComponentProvider;
>>   import org.apache.wicket.core.request.handler.PageProvider;
>>   import org.apache.wicket.core.request.handler.RenderPageRequestHandler;
>> @@ -304,7 +304,7 @@ public abstract class AbstractBookmarkableMapper
>> extends AbstractComponentMapper
>>
>>                  checkExpiration(provider, pageInfo);
>>
>> -               return new ListenerInterfaceRequestHandler(provider,
>> componentInfo.getBehaviorId());
>> +               return new ListenerRequestHandler(provider,
>> componentInfo.getBehaviorId());
>>          }
>>
>>          private void checkExpiration(PageProvider provider, PageInfo
>> pageInfo)
>>
>> http://git-wip-us.apache.org/repos/asf/wicket/blob/
>> 8342e4ef/wicket-core/src/main/java/org/apache/wicket/core/
>> request/mapper/MountedMapper.java
>> ----------------------------------------------------------------------
>> diff --git a/wicket-core/src/main/java/org/apache/wicket/core/
>> request/mapper/MountedMapper.java b/wicket-core/src/main/java/
>> org/apache/wicket/core/request/mapper/MountedMapper.java
>> index 1b6aa28..f9edf11 100644
>> --- a/wicket-core/src/main/java/org/apache/wicket/core/
>> request/mapper/MountedMapper.java
>> +++ b/wicket-core/src/main/java/org/apache/wicket/core/
>> request/mapper/MountedMapper.java
>> @@ -18,7 +18,7 @@ package org.apache.wicket.core.request.mapper;
>>
>>   import java.util.function.Supplier;
>>
>> -import org.apache.wicket.core.request.handler.
>> ListenerInterfaceRequestHandler;
>> +import org.apache.wicket.core.request.handler.ListenerRequestHandler;
>>   import org.apache.wicket.request.IRequestHandler;
>>   import org.apache.wicket.request.Request;
>>   import org.apache.wicket.request.Url;
>> @@ -158,10 +158,10 @@ public class MountedMapper extends
>> AbstractBookmarkableMapper
>>          {
>>                  Url url = super.mapHandler(requestHandler);
>>
>> -               if (url == null && requestHandler instanceof
>> ListenerInterfaceRequestHandler &&
>> +               if (url == null && requestHandler instanceof
>> ListenerRequestHandler &&
>>                          getRecreateMountedPagesAfterExpiry())
>>                  {
>> -                       ListenerInterfaceRequestHandler handler = (
>> ListenerInterfaceRequestHandler)requestHandler;
>> +                       ListenerRequestHandler handler =
>> (ListenerRequestHandler)requestHandler;
>>                          IRequestablePage page = handler.getPage();
>>                          if (checkPageInstance(page))
>>                          {
>>
>> http://git-wip-us.apache.org/repos/asf/wicket/blob/
>> 8342e4ef/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/
>> PageInstanceMapper.java
>> ----------------------------------------------------------------------
>> diff --git a/wicket-core/src/main/java/org/apache/wicket/core/
>> request/mapper/PageInstanceMapper.java b/wicket-core/src/main/java/
>> org/apache/wicket/core/request/mapper/PageInstanceMapper.java
>> index e983131..f90ea87 100644
>> --- a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/
>> PageInstanceMapper.java
>> +++ b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/
>> PageInstanceMapper.java
>> @@ -16,7 +16,7 @@
>>    */
>>   package org.apache.wicket.core.request.mapper;
>>
>> -import org.apache.wicket.core.request.handler.
>> ListenerInterfaceRequestHandler;
>> +import org.apache.wicket.core.request.handler.ListenerRequestHandler;
>>   import org.apache.wicket.core.request.handler.PageAndComponentProvider;
>>   import org.apache.wicket.core.request.handler.PageProvider;
>>   import org.apache.wicket.core.request.handler.RenderPageRequestHandler;
>> @@ -85,7 +85,7 @@ public class PageInstanceMapper extends
>> AbstractComponentMapper
>>
>>                                          provider.setPageSource(
>> getContext());
>>
>> -                                       return new
>> ListenerInterfaceRequestHandler(provider, componentInfo.getBehaviorId());
>> +                                       return new ListenerRequestHandler(provider,
>> componentInfo.getBehaviorId());
>>                                  }
>>                          }
>>                  }
>> @@ -107,9 +107,9 @@ public class PageInstanceMapper extends
>> AbstractComponentMapper
>>                          PageInfo i = new PageInfo(page.getPageId());
>>                          info = new PageComponentInfo(i, null);
>>                  }
>> -               else if (requestHandler instanceof
>> ListenerInterfaceRequestHandler)
>> +               else if (requestHandler instanceof ListenerRequestHandler)
>>                  {
>> -                       ListenerInterfaceRequestHandler handler = (
>> ListenerInterfaceRequestHandler)requestHandler;
>> +                       ListenerRequestHandler handler =
>> (ListenerRequestHandler)requestHandler;
>>                          IRequestablePage page = handler.getPage();
>>                          String componentPath = handler.getComponentPath();
>>
>>
>> http://git-wip-us.apache.org/repos/asf/wicket/blob/
>> 8342e4ef/wicket-core/src/main/java/org/apache/wicket/util/
>> tester/BaseWicketTester.java
>> ----------------------------------------------------------------------
>> diff --git a/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
>> b/wicket-core/src/main/java/org/apache/wicket/util/tester/
>> BaseWicketTester.java
>> index b5a15ec..0b30c92 100644
>> --- a/wicket-core/src/main/java/org/apache/wicket/util/tester/
>> BaseWicketTester.java
>> +++ b/wicket-core/src/main/java/org/apache/wicket/util/tester/
>> BaseWicketTester.java
>> @@ -62,7 +62,7 @@ import org.apache.wicket.ajax.markup.
>> html.form.AjaxSubmitLink;
>>   import org.apache.wicket.behavior.AbstractAjaxBehavior;
>>   import org.apache.wicket.core.request.handler.
>> BookmarkablePageRequestHandler;
>>   import org.apache.wicket.core.request.handler.IPageProvider;
>> -import org.apache.wicket.core.request.handler.
>> ListenerInterfaceRequestHandler;
>> +import org.apache.wicket.core.request.handler.ListenerRequestHandler;
>>   import org.apache.wicket.core.request.handler.PageAndComponentProvider;
>>   import org.apache.wicket.core.request.handler.PageProvider;
>>   import org.apache.wicket.core.request.handler.RenderPageRequestHandler;
>> @@ -1093,7 +1093,7 @@ public class BaseWicketTester
>>
>>                  // there are two ways to do this. RequestCycle could be
>> forced to call the handler
>>                  // directly but constructing and parsing the URL increases
>> the chance of triggering bugs
>> -               IRequestHandler handler = new
>> ListenerInterfaceRequestHandler(new PageAndComponentProvider(
>> +               IRequestHandler handler = new ListenerRequestHandler(new
>> PageAndComponentProvider(
>>                          component.getPage(), component));
>>
>>                  Url url = urlFor(handler);
>> @@ -1119,7 +1119,7 @@ public class BaseWicketTester
>>
>>                  // there are two ways to do this. RequestCycle could be
>> forced to call the handler
>>                  // directly but constructing and parsing the URL increases
>> the chance of triggering bugs
>> -               IRequestHandler handler = new
>> ListenerInterfaceRequestHandler(new PageAndComponentProvider(
>> +               IRequestHandler handler = new ListenerRequestHandler(new
>> PageAndComponentProvider(
>>                          component.getPage(), component));
>>
>>                  processRequest(handler);
>>
>> http://git-wip-us.apache.org/repos/asf/wicket/blob/
>> 8342e4ef/wicket-core/src/test/java/org/apache/wicket/
>> BehaviorRequestTest.java
>> ----------------------------------------------------------------------
>> diff --git a/wicket-core/src/test/java/org/apache/wicket/BehaviorRequestTest.java
>> b/wicket-core/src/test/java/org/apache/wicket/BehaviorRequestTest.java
>> index 909ee23..1e5227c 100644
>> --- a/wicket-core/src/test/java/org/apache/wicket/BehaviorRequestTest.java
>> +++ b/wicket-core/src/test/java/org/apache/wicket/BehaviorRequestTest.java
>> @@ -18,7 +18,7 @@ package org.apache.wicket;
>>
>>   import org.apache.wicket.behavior.Behavior;
>>   import org.apache.wicket.core.request.handler.IPageAndComponentProvider;
>> -import org.apache.wicket.core.request.handler.
>> ListenerInterfaceRequestHandler;
>> +import org.apache.wicket.core.request.handler.ListenerRequestHandler;
>>   import org.apache.wicket.core.request.handler.
>> ListenerInvocationNotAllowedException;
>>   import org.apache.wicket.core.request.handler.PageAndComponentProvider;
>>   import org.apache.wicket.markup.ComponentTag;
>> @@ -83,7 +83,7 @@ public class BehaviorRequestTest extends WicketTestCase
>>                  final int index = page.container.getBehaviorId(
>> behaviorUnderTest);
>>                  final IPageAndComponentProvider provider = new
>> PageAndComponentProvider(page,
>>                          page.container);
>> -               final IRequestHandler handler = new
>> ListenerInterfaceRequestHandler(provider, index);
>> +               final IRequestHandler handler = new ListenerRequestHandler(provider,
>> index);
>>
>>                  return tester.urlFor(handler).toString();
>>          }
>>
>> http://git-wip-us.apache.org/repos/asf/wicket/blob/
>> 8342e4ef/wicket-core/src/test/java/org/apache/wicket/
>> ComponentWithLazyModelCreationTest.java
>> ----------------------------------------------------------------------
>> diff --git a/wicket-core/src/test/java/org/apache/wicket/
>> ComponentWithLazyModelCreationTest.java b/wicket-core/src/test/java/
>> org/apache/wicket/ComponentWithLazyModelCreationTest.java
>> index 59cd19e..9361351 100644
>> --- a/wicket-core/src/test/java/org/apache/wicket/
>> ComponentWithLazyModelCreationTest.java
>> +++ b/wicket-core/src/test/java/org/apache/wicket/
>> ComponentWithLazyModelCreationTest.java
>> @@ -17,7 +17,7 @@
>>   package org.apache.wicket;
>>
>>   import org.apache.wicket.behavior.Behavior;
>> -import org.apache.wicket.core.request.handler.
>> ListenerInterfaceRequestHandler;
>> +import org.apache.wicket.core.request.handler.ListenerRequestHandler;
>>   import org.apache.wicket.core.request.handler.PageAndComponentProvider;
>>   import org.apache.wicket.markup.ComponentTag;
>>   import org.apache.wicket.markup.IMarkupResourceStreamProvider;
>> @@ -120,7 +120,7 @@ public class ComponentWithLazyModelCreationTest
>> extends WicketTestCase
>>                  {
>>                          super.onComponentTag(component, tag);
>>                          int index = component.getBehaviorId(this);
>> -                       IRequestHandler handler = new
>> ListenerInterfaceRequestHandler(
>> +                       IRequestHandler handler = new
>> ListenerRequestHandler(
>>                                  new PageAndComponentProvider(component.getPage(),
>> component), index);
>>                          statefullUrl = component.getRequestCycle().
>> mapUrlFor(handler).toString();
>>                  }
>>
>> http://git-wip-us.apache.org/repos/asf/wicket/blob/
>> 8342e4ef/wicket-core/src/test/java/org/apache/wicket/core/request/handler/
>> ListenerInterfaceRequestHandlerTest.java
>> ----------------------------------------------------------------------
>> diff --git a/wicket-core/src/test/java/org/apache/wicket/core/
>> request/handler/ListenerInterfaceRequestHandlerTest.java
>> b/wicket-core/src/test/java/org/apache/wicket/core/request/handler/
>> ListenerInterfaceRequestHandlerTest.java
>> deleted file mode 100644
>> index d1c0592..0000000
>> --- a/wicket-core/src/test/java/org/apache/wicket/core/request/handler/
>> ListenerInterfaceRequestHandlerTest.java
>> +++ /dev/null
>> @@ -1,208 +0,0 @@
>> -/*
>> - * Licensed to the Apache Software Foundation (ASF) under one or more
>> - * contributor license agreements.  See the NOTICE file distributed with
>> - * this work for additional information regarding copyright ownership.
>> - * The ASF licenses this file to You under the Apache License, Version 2.0
>> - * (the "License"); you may not use this file except in compliance with
>> - * the License.  You may obtain a copy of the License at
>> - *
>> - *      http://www.apache.org/licenses/LICENSE-2.0
>> - *
>> - * Unless required by applicable law or agreed to in writing, software
>> - * distributed under the License is distributed on an "AS IS" BASIS,
>> - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
>> implied.
>> - * See the License for the specific language governing permissions and
>> - * limitations under the License.
>> - */
>> -package org.apache.wicket.core.request.handler;
>> -
>> -import static org.hamcrest.Matchers.is;
>> -
>> -import java.io.IOException;
>> -import java.text.ParseException;
>> -
>> -import org.apache.wicket.MarkupContainer;
>> -import org.apache.wicket.Page;
>> -import org.apache.wicket.Session;
>> -import org.apache.wicket.WicketRuntimeException;
>> -import org.apache.wicket.ajax.AjaxRequestTarget;
>> -import org.apache.wicket.ajax.markup.html.AjaxLink;
>> -import org.apache.wicket.core.request.mapper.MountedMapper;
>> -import org.apache.wicket.markup.IMarkupFragment;
>> -import org.apache.wicket.markup.IMarkupResourceStreamProvider;
>> -import org.apache.wicket.markup.Markup;
>> -import org.apache.wicket.markup.html.WebPage;
>> -import org.apache.wicket.markup.html.link.Link;
>> -import org.apache.wicket.markup.html.link.StatelessLink;
>> -import org.apache.wicket.request.Url;
>> -import org.apache.wicket.request.mapper.parameter.PageParameters;
>> -import org.apache.wicket.resource.DummyPage;
>> -import org.apache.wicket.util.resource.IResourceStream;
>> -import org.apache.wicket.util.resource.ResourceStreamNotFoundException;
>> -import org.apache.wicket.util.resource.StringResourceStream;
>> -import org.apache.wicket.util.tester.WicketTestCase;
>> -import org.junit.Test;
>> -
>> -/**
>> - * Tests for {@link ListenerInterfaceRequestHandler}
>> - */
>> -public class ListenerInterfaceRequestHandlerTest extends WicketTestCase
>> -{
>> -
>> -       /**
>> -        * WICKET-5466
>> -        */
>> -       @Test
>> -       public void removedComponent()
>> -       {
>> -               // non-existing component on fresh page is ignored
>> -               PageAndComponentProvider freshPage = new
>> PageAndComponentProvider(DummyPage.class, null,
>> -                       "foo");
>> -               new ListenerInterfaceRequestHandle
>> r(freshPage).respond(tester
>> -                       .getRequestCycle());
>> -
>> -               // non-existing component on old page fails
>> -               PageAndComponentProvider oldPage = new
>> PageAndComponentProvider(new DummyPage(), "foo");
>> -               try
>> -               {
>> -                       new ListenerInterfaceRequestHandler(oldPage)
>> -                               .respond(tester.getRequestCycle());
>> -                       fail();
>> -               }
>> -               catch (WicketRuntimeException ex)
>> -               {
>> -                       assertEquals("Component 'foo' has been removed
>> from page.", ex.getMessage());
>> -               }
>> -       }
>> -
>> -       /**
>> -        * https://issues.apache.org/jira/browse/WICKET-4116
>> -        *
>> -        * @throws Exception
>> -        */
>> -       @Test
>> -       public void recreateThePageWhenListenereIn
>> terfaceIsExecutedOnExpiredPage() throws Exception
>> -       {
>> -               tester.getApplication().mountPage("ajaxLink",
>> AjaxLinkExpirePage.class);
>> -               AjaxLinkExpirePage page = tester.startPage(
>> AjaxLinkExpirePage.class);
>> -
>> -               int initialPageId = page.getPageId();
>> -
>> -               Url urlToAjaxLink = tester.urlFor(page.link);
>> -               Session session = tester.getSession();
>> -               session.clear();
>> -
>> -               // fire a request to the ajax link on the expired page
>> -               executeAjaxUrlWithLastBaseUrl(urlToAjaxLink);
>> -
>> -               Page lastRenderedPage = tester.getLastRenderedPage();
>> -               int lastRenderedPageId = lastRenderedPage.getPageId();
>> -               assertTrue("A new page must be create ",
>> lastRenderedPageId > initialPageId);
>> -       }
>> -
>> -       private void executeAjaxUrlWithLastBaseUrl(Url url) throws
>> IOException,
>> -               ResourceStreamNotFoundException, ParseException
>> -       {
>> -               tester.getRequest().setUrl(url);
>> -               tester.getRequest().addHeader("Wicket-Ajax-BaseURL",
>> -                       tester.getWicketAjaxBaseUrlEncodedInL
>> astResponse());
>> -               tester.getRequest().addHeader("Wicket-Ajax", "true");
>> -               tester.processRequest();
>> -       }
>> -
>> -       /**
>> -        * Test page for #recreateThePageWhenListenereIn
>> terfaceIsExecutedOnExpiredPage()
>> -        */
>> -       public static class AjaxLinkExpirePage extends WebPage implements
>> IMarkupResourceStreamProvider
>> -       {
>> -               private static final long serialVersionUID = 1L;
>> -
>> -               private AjaxLink<Void> link;
>> -
>> -               /**
>> -                * Constructor.
>> -                */
>> -               public AjaxLinkExpirePage()
>> -               {
>> -                       add(link = new AjaxLink<Void>("test")
>> -                       {
>> -                               private static final long serialVersionUID
>> = 1L;
>> -
>> -                               @Override
>> -                               public void onClick(AjaxRequestTarget
>> target)
>> -                               {
>> -                                       System.err.println("clicked");
>> -                               }
>> -                       });
>> -               }
>> -
>> -               @Override
>> -               public IResourceStream getMarkupResourceStream(MarkupContainer
>> container,
>> -                       Class<?> containerClass)
>> -               {
>> -
>> -                       return new StringResourceStream(
>> -                               "<html><body><a wicket:id='test'>Link</a></
>> body></html>");
>> -               }
>> -
>> -       }
>> -
>> -       /**
>> -        * Testcase for WICKET-4185
>> -        */
>> -       @Test
>> -       public void isPageInstanceCreatedOnClassLinks()
>> -       {
>> -               PageAndComponentProvider provider = new
>> PageAndComponentProvider(Page.class, "link");
>> -               ListenerInterfaceRequestHandler handler = new
>> ListenerInterfaceRequestHandler(provider);
>> -               assertFalse("Handler should not report a page instance is
>> available ",
>> -                       handler.isPageInstanceCreated());
>> -       }
>> -
>> -       @Test
>> -       public void skipListenerIfExpiredPage()
>> -       {
>> -               tester.getApplication().getRootRequestMapperAsCompound()
>> .add(new MountedMapper("/segment", NotExpiredPage.class));
>> -               tester.startPage(NotExpiredPage.class);
>> -               tester.clickLink("statelessLink");
>> -               NotExpiredPage page = (NotExpiredPage)tester.
>> getLastRenderedPage();
>> -               assertThat(page.invoked, is(true));
>> -       }
>> -
>> -       public static class NotExpiredPage extends WebPage
>> -       {
>> -               public boolean invoked;
>> -
>> -               public NotExpiredPage(PageParameters pageParameters)
>> -               {
>> -                       super(pageParameters);
>> -                       add(new StatelessLink<Object>("statelessLink")
>> -                       {
>> -                               public void onClick()
>> -                               {
>> -                                       invoked = true;
>> -                               }
>> -                       });
>> -                       add(new Link<Object>("statefullLink")
>> -                       {
>> -                               public void onClick()
>> -                               {
>> -                               }
>> -                       });
>> -               }
>> -
>> -               @Override
>> -               public IMarkupFragment getMarkup()
>> -               {
>> -                       return Markup.of(
>> -                               "<html><body><a
>> wicket:id=\"statelessLink\"></a><a wicket:id=\"statefullLink\"></
>> a></body></html>");
>> -               }
>> -
>> -               @Override
>> -               protected void onBeforeRender()
>> -               {
>> -                       get("statefullLink").setVisible(false);
>> -                       super.onBeforeRender();
>> -               }
>> -       }
>> -}
>>
>> http://git-wip-us.apache.org/repos/asf/wicket/blob/
>> 8342e4ef/wicket-core/src/test/java/org/apache/wicket/core/request/handler/
>> ListenerRequestHandlerTest.java
>> ----------------------------------------------------------------------
>> diff --git a/wicket-core/src/test/java/org/apache/wicket/core/
>> request/handler/ListenerRequestHandlerTest.java
>> b/wicket-core/src/test/java/org/apache/wicket/core/request/handler/
>> ListenerRequestHandlerTest.java
>> new file mode 100644
>> index 0000000..b212c9c
>> --- /dev/null
>> +++ b/wicket-core/src/test/java/org/apache/wicket/core/request/handler/
>> ListenerRequestHandlerTest.java
>> @@ -0,0 +1,208 @@
>> +/*
>> + * Licensed to the Apache Software Foundation (ASF) under one or more
>> + * contributor license agreements.  See the NOTICE file distributed with
>> + * this work for additional information regarding copyright ownership.
>> + * The ASF licenses this file to You under the Apache License, Version 2.0
>> + * (the "License"); you may not use this file except in compliance with
>> + * the License.  You may obtain a copy of the License at
>> + *
>> + *      http://www.apache.org/licenses/LICENSE-2.0
>> + *
>> + * Unless required by applicable law or agreed to in writing, software
>> + * distributed under the License is distributed on an "AS IS" BASIS,
>> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
>> implied.
>> + * See the License for the specific language governing permissions and
>> + * limitations under the License.
>> + */
>> +package org.apache.wicket.core.request.handler;
>> +
>> +import static org.hamcrest.Matchers.is;
>> +
>> +import java.io.IOException;
>> +import java.text.ParseException;
>> +
>> +import org.apache.wicket.MarkupContainer;
>> +import org.apache.wicket.Page;
>> +import org.apache.wicket.Session;
>> +import org.apache.wicket.WicketRuntimeException;
>> +import org.apache.wicket.ajax.AjaxRequestTarget;
>> +import org.apache.wicket.ajax.markup.html.AjaxLink;
>> +import org.apache.wicket.core.request.mapper.MountedMapper;
>> +import org.apache.wicket.markup.IMarkupFragment;
>> +import org.apache.wicket.markup.IMarkupResourceStreamProvider;
>> +import org.apache.wicket.markup.Markup;
>> +import org.apache.wicket.markup.html.WebPage;
>> +import org.apache.wicket.markup.html.link.Link;
>> +import org.apache.wicket.markup.html.link.StatelessLink;
>> +import org.apache.wicket.request.Url;
>> +import org.apache.wicket.request.mapper.parameter.PageParameters;
>> +import org.apache.wicket.resource.DummyPage;
>> +import org.apache.wicket.util.resource.IResourceStream;
>> +import org.apache.wicket.util.resource.ResourceStreamNotFoundException;
>> +import org.apache.wicket.util.resource.StringResourceStream;
>> +import org.apache.wicket.util.tester.WicketTestCase;
>> +import org.junit.Test;
>> +
>> +/**
>> + * Tests for {@link ListenerRequestHandler}
>> + */
>> +public class ListenerRequestHandlerTest extends WicketTestCase
>> +{
>> +
>> +       /**
>> +        * WICKET-5466
>> +        */
>> +       @Test
>> +       public void removedComponent()
>> +       {
>> +               // non-existing component on fresh page is ignored
>> +               PageAndComponentProvider freshPage = new
>> PageAndComponentProvider(DummyPage.class, null,
>> +                       "foo");
>> +               new ListenerRequestHandler(freshPage).respond(tester
>> +                       .getRequestCycle());
>> +
>> +               // non-existing component on old page fails
>> +               PageAndComponentProvider oldPage = new
>> PageAndComponentProvider(new DummyPage(), "foo");
>> +               try
>> +               {
>> +                       new ListenerRequestHandler(oldPage)
>> +                               .respond(tester.getRequestCycle());
>> +                       fail();
>> +               }
>> +               catch (WicketRuntimeException ex)
>> +               {
>> +                       assertEquals("Component 'foo' has been removed
>> from page.", ex.getMessage());
>> +               }
>> +       }
>> +
>> +       /**
>> +        * https://issues.apache.org/jira/browse/WICKET-4116
>> +        *
>> +        * @throws Exception
>> +        */
>> +       @Test
>> +       public void recreateThePageWhenListenereIn
>> terfaceIsExecutedOnExpiredPage() throws Exception
>> +       {
>> +               tester.getApplication().mountPage("ajaxLink",
>> AjaxLinkExpirePage.class);
>> +               AjaxLinkExpirePage page = tester.startPage(
>> AjaxLinkExpirePage.class);
>> +
>> +               int initialPageId = page.getPageId();
>> +
>> +               Url urlToAjaxLink = tester.urlFor(page.link);
>> +               Session session = tester.getSession();
>> +               session.clear();
>> +
>> +               // fire a request to the ajax link on the expired page
>> +               executeAjaxUrlWithLastBaseUrl(urlToAjaxLink);
>> +
>> +               Page lastRenderedPage = tester.getLastRenderedPage();
>> +               int lastRenderedPageId = lastRenderedPage.getPageId();
>> +               assertTrue("A new page must be create ",
>> lastRenderedPageId > initialPageId);
>> +       }
>> +
>> +       private void executeAjaxUrlWithLastBaseUrl(Url url) throws
>> IOException,
>> +               ResourceStreamNotFoundException, ParseException
>> +       {
>> +               tester.getRequest().setUrl(url);
>> +               tester.getRequest().addHeader("Wicket-Ajax-BaseURL",
>> +                       tester.getWicketAjaxBaseUrlEncodedInL
>> astResponse());
>> +               tester.getRequest().addHeader("Wicket-Ajax", "true");
>> +               tester.processRequest();
>> +       }
>> +
>> +       /**
>> +        * Test page for #recreateThePageWhenListenereIn
>> terfaceIsExecutedOnExpiredPage()
>> +        */
>> +       public static class AjaxLinkExpirePage extends WebPage implements
>> IMarkupResourceStreamProvider
>> +       {
>> +               private static final long serialVersionUID = 1L;
>> +
>> +               private AjaxLink<Void> link;
>> +
>> +               /**
>> +                * Constructor.
>> +                */
>> +               public AjaxLinkExpirePage()
>> +               {
>> +                       add(link = new AjaxLink<Void>("test")
>> +                       {
>> +                               private static final long serialVersionUID
>> = 1L;
>> +
>> +                               @Override
>> +                               public void onClick(AjaxRequestTarget
>> target)
>> +                               {
>> +                                       System.err.println("clicked");
>> +                               }
>> +                       });
>> +               }
>> +
>> +               @Override
>> +               public IResourceStream getMarkupResourceStream(MarkupContainer
>> container,
>> +                       Class<?> containerClass)
>> +               {
>> +
>> +                       return new StringResourceStream(
>> +                               "<html><body><a wicket:id='test'>Link</a></
>> body></html>");
>> +               }
>> +
>> +       }
>> +
>> +       /**
>> +        * Testcase for WICKET-4185
>> +        */
>> +       @Test
>> +       public void isPageInstanceCreatedOnClassLinks()
>> +       {
>> +               PageAndComponentProvider provider = new
>> PageAndComponentProvider(Page.class, "link");
>> +               ListenerRequestHandler handler = new
>> ListenerRequestHandler(provider);
>> +               assertFalse("Handler should not report a page instance is
>> available ",
>> +                       handler.isPageInstanceCreated());
>> +       }
>> +
>> +       @Test
>> +       public void skipListenerIfExpiredPage()
>> +       {
>> +               tester.getApplication().getRootRequestMapperAsCompound()
>> .add(new MountedMapper("/segment", NotExpiredPage.class));
>> +               tester.startPage(NotExpiredPage.class);
>> +               tester.clickLink("statelessLink");
>> +               NotExpiredPage page = (NotExpiredPage)tester.
>> getLastRenderedPage();
>> +               assertThat(page.invoked, is(true));
>> +       }
>> +
>> +       public static class NotExpiredPage extends WebPage
>> +       {
>> +               public boolean invoked;
>> +
>> +               public NotExpiredPage(PageParameters pageParameters)
>> +               {
>> +                       super(pageParameters);
>> +                       add(new StatelessLink<Object>("statelessLink")
>> +                       {
>> +                               public void onClick()
>> +                               {
>> +                                       invoked = true;
>> +                               }
>> +                       });
>> +                       add(new Link<Object>("statefullLink")
>> +                       {
>> +                               public void onClick()
>> +                               {
>> +                               }
>> +                       });
>> +               }
>> +
>> +               @Override
>> +               public IMarkupFragment getMarkup()
>> +               {
>> +                       return Markup.of(
>> +                               "<html><body><a
>> wicket:id=\"statelessLink\"></a><a wicket:id=\"statefullLink\"></
>> a></body></html>");
>> +               }
>> +
>> +               @Override
>> +               protected void onBeforeRender()
>> +               {
>> +                       get("statefullLink").setVisible(false);
>> +                       super.onBeforeRender();
>> +               }
>> +       }
>> +}
>>
>> http://git-wip-us.apache.org/repos/asf/wicket/blob/
>> 8342e4ef/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/
>> BookmarkableMapperTest.java
>> ----------------------------------------------------------------------
>> diff --git a/wicket-core/src/test/java/org/apache/wicket/core/
>> request/mapper/BookmarkableMapperTest.java b/wicket-core/src/test/java/
>> org/apache/wicket/core/request/mapper/BookmarkableMapperTest.java
>> index f4fc1aa..e22210b 100644
>> --- a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/
>> BookmarkableMapperTest.java
>> +++ b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/
>> BookmarkableMapperTest.java
>> @@ -28,7 +28,7 @@ import org.apache.wicket.core.request.handler.
>> BookmarkableListenerInterfaceReque
>>   import org.apache.wicket.core.request.handler.
>> BookmarkablePageRequestHandler;
>>   import org.apache.wicket.core.request.handler.IPageProvider;
>>   import org.apache.wicket.core.request.handler.IPageRequestHandler;
>> -import org.apache.wicket.core.request.handler.
>> ListenerInterfaceRequestHandler;
>> +import org.apache.wicket.core.request.handler.ListenerRequestHandler;
>>   import org.apache.wicket.core.request.handler.PageAndComponentProvider;
>>   import org.apache.wicket.core.request.handler.PageProvider;
>>   import org.apache.wicket.core.request.handler.RenderPageRequestHandler;
>> @@ -177,9 +177,9 @@ public class BookmarkableMapperTest extends
>> AbstractMapperTest
>>                  Url url = Url.parse("wicket/bookmarkable/" +
>> PAGE_CLASS_NAME + "?15--foo-bar");
>>                  IRequestHandler handler = encoder.mapRequest(getRequest(
>> url));
>>
>> -               assertThat(handler, instanceOf(
>> ListenerInterfaceRequestHandler.class));
>> +               assertThat(handler, instanceOf(
>> ListenerRequestHandler.class));
>>
>> -               ListenerInterfaceRequestHandler h = (
>> ListenerInterfaceRequestHandler)handler;
>> +               ListenerRequestHandler h = (ListenerRequestHandler)
>> handler;
>>
>>                  IRequestablePage page = h.getPage();
>>                  checkPage(page, 15);
>> @@ -198,8 +198,8 @@ public class BookmarkableMapperTest extends
>> AbstractMapperTest
>>                          + "/i1/i2?15--foo-bar&a=b&b=c");
>>                  IRequestHandler handler = encoder.mapRequest(getRequest(
>> url));
>>
>> -               assertThat(handler, instanceOf(
>> ListenerInterfaceRequestHandler.class));
>> -               ListenerInterfaceRequestHandler h = (
>> ListenerInterfaceRequestHandler)handler;
>> +               assertThat(handler, instanceOf(
>> ListenerRequestHandler.class));
>> +               ListenerRequestHandler h = (ListenerRequestHandler)
>> handler;
>>
>>                  IRequestablePage page = h.getPage();
>>                  checkPage(page, 15);
>> @@ -222,9 +222,9 @@ public class BookmarkableMapperTest extends
>> AbstractMapperTest
>>                          + "?15-ILinkListener.4-foo-bar");
>>                  IRequestHandler handler = encoder.mapRequest(getRequest(
>> url));
>>
>> -               assertThat(handler, instanceOf(
>> ListenerInterfaceRequestHandler.class));
>> +               assertThat(handler, instanceOf(
>> ListenerRequestHandler.class));
>>
>> -               ListenerInterfaceRequestHandler h = (
>> ListenerInterfaceRequestHandler)handler;
>> +               ListenerRequestHandler h = (ListenerRequestHandler)
>> handler;
>>
>>                  IRequestablePage page = h.getPage();
>>                  checkPage(page, 15);
>> @@ -246,8 +246,8 @@ public class BookmarkableMapperTest extends
>> AbstractMapperTest
>>
>>                  IRequestHandler handler = encoder.mapRequest(getRequest(
>> url));
>>
>> -               assertThat(handler, instanceOf(
>> ListenerInterfaceRequestHandler.class));
>> -               ListenerInterfaceRequestHandler h = (
>> ListenerInterfaceRequestHandler)handler;
>> +               assertThat(handler, instanceOf(
>> ListenerRequestHandler.class));
>> +               ListenerRequestHandler h = (ListenerRequestHandler)
>> handler;
>>
>>                  IRequestablePage page = h.getPage();
>>                  assertEquals(page.getRenderCount(), 5);
>>
>> http://git-wip-us.apache.org/repos/asf/wicket/blob/
>> 8342e4ef/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/
>> CryptoMapperTest.java
>> ----------------------------------------------------------------------
>> diff --git a/wicket-core/src/test/java/org/apache/wicket/core/
>> request/mapper/CryptoMapperTest.java b/wicket-core/src/test/java/
>> org/apache/wicket/core/request/mapper/CryptoMapperTest.java
>> index 98696fd..f87dcc8 100644
>> --- a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/
>> CryptoMapperTest.java
>> +++ b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/
>> CryptoMapperTest.java
>> @@ -22,7 +22,7 @@ import java.util.function.Supplier;
>>
>>   import org.apache.wicket.MockPage;
>>   import org.apache.wicket.core.request.handler.
>> BookmarkableListenerInterfaceRequestHandler;
>> -import org.apache.wicket.core.request.handler.
>> ListenerInterfaceRequestHandler;
>> +import org.apache.wicket.core.request.handler.ListenerRequestHandler;
>>   import org.apache.wicket.core.request.handler.PageAndComponentProvider;
>>   import org.apache.wicket.core.request.handler.PageProvider;
>>   import org.apache.wicket.core.request.handler.RenderPageRequestHandler;
>> @@ -358,7 +358,7 @@ public class CryptoMapperTest extends
>> AbstractMapperTest
>>                  final String componentPath = "link";
>>
>>                  PageAndComponentProvider provider = new
>> PageAndComponentProvider(Page1.class, componentPath);
>> -               IRequestHandler requestHandler = new
>> ListenerInterfaceRequestHandler(provider);
>> +               IRequestHandler requestHandler = new
>> ListenerRequestHandler(provider);
>>
>>                  Url plainUrl = mapper.getDelegateMapper().
>> mapHandler(requestHandler);
>>                  assertTrue(plainUrl.toString().startsWith(MOUNTED_URL));
>> @@ -391,9 +391,9 @@ public class CryptoMapperTest extends
>> AbstractMapperTest
>>
>>                  requestHandler = unwrapRequestHandlerDelegate(
>> requestHandler);
>>
>> -               assertThat(requestHandler, instanceOf(
>> ListenerInterfaceRequestHandler.class));
>> +               assertThat(requestHandler, instanceOf(
>> ListenerRequestHandler.class));
>>
>> -               ListenerInterfaceRequestHandler handler = (
>> ListenerInterfaceRequestHandler) requestHandler;
>> +               ListenerRequestHandler handler = (ListenerRequestHandler)
>> requestHandler;
>>                  assertEquals(componentPath, handler.getComponentPath());
>>                  assertEquals(Page1.class, handler.getPageClass());
>>
>> @@ -407,9 +407,9 @@ public class CryptoMapperTest extends
>> AbstractMapperTest
>>
>>                  requestHandler = unwrapRequestHandlerDelegate(
>> requestHandler);
>>
>> -               assertThat(requestHandler, instanceOf(
>> ListenerInterfaceRequestHandler.class));
>> +               assertThat(requestHandler, instanceOf(
>> ListenerRequestHandler.class));
>>
>> -               handler = (ListenerInterfaceRequestHandler)
>> requestHandler;
>> +               handler = (ListenerRequestHandler) requestHandler;
>>                  assertEquals(componentPath, handler.getComponentPath());
>>                  assertEquals(Page1.class, handler.getPageClass());
>>          }
>> @@ -603,7 +603,7 @@ public class CryptoMapperTest extends
>> AbstractMapperTest
>>                  MockPage page = new MockPage();
>>                  IRequestableComponent c = page.get("foo:bar");
>>                  PageAndComponentProvider provider = new
>> PageAndComponentProvider(page, c);
>> -               IRequestHandler handler = new
>> ListenerInterfaceRequestHandler(provider);
>> +               IRequestHandler handler = new ListenerRequestHandler(
>> provider);
>>
>>                  Url url = mapper.mapHandler(handler);
>>                  url.addQueryParameter("q", "foo");
>>
>> http://git-wip-us.apache.org/repos/asf/wicket/blob/
>> 8342e4ef/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/
>> MountedMapperTest.java
>> ----------------------------------------------------------------------
>> diff --git a/wicket-core/src/test/java/org/apache/wicket/core/
>> request/mapper/MountedMapperTest.java b/wicket-core/src/test/java/
>> org/apache/wicket/core/request/mapper/MountedMapperTest.java
>> index d92cc83..f19d866 100644
>> --- a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/
>> MountedMapperTest.java
>> +++ b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/
>> MountedMapperTest.java
>> @@ -23,7 +23,7 @@ import org.apache.wicket.core.request.handler.
>> BookmarkableListenerInterfaceReque
>>   import org.apache.wicket.core.request.handler.
>> BookmarkablePageRequestHandler;
>>   import org.apache.wicket.core.request.handler.IPageProvider;
>>   import org.apache.wicket.core.request.handler.IPageRequestHandler;
>> -import org.apache.wicket.core.request.handler.
>> ListenerInterfaceRequestHandler;
>> +import org.apache.wicket.core.request.handler.ListenerRequestHandler;
>>   import org.apache.wicket.core.request.handler.PageAndComponentProvider;
>>   import org.apache.wicket.core.request.handler.PageProvider;
>>   import org.apache.wicket.core.request.handler.RenderPageRequestHandler;
>> @@ -210,9 +210,9 @@ public class MountedMapperTest extends
>> AbstractMapperTest
>>                  Url url = Url.parse("some/mount/path?15--foo-bar");
>>                  IRequestHandler handler = encoder.mapRequest(getRequest(
>> url));
>>
>> -               assertThat(handler, instanceOf(
>> ListenerInterfaceRequestHandler.class));
>> +               assertThat(handler, instanceOf(
>> ListenerRequestHandler.class));
>>
>> -               ListenerInterfaceRequestHandler h = (
>> ListenerInterfaceRequestHandler)handler;
>> +               ListenerRequestHandler h = (ListenerRequestHandler)
>> handler;
>>
>>                  IRequestablePage page = h.getPage();
>>                  checkPage(page, 15);
>> @@ -230,8 +230,8 @@ public class MountedMapperTest extends
>> AbstractMapperTest
>>                  Url url = Url.parse("some/mount/path/i1/
>> i2?15--foo-bar&a=b&b=c");
>>                  IRequestHandler handler = encoder.mapRequest(getRequest(
>> url));
>>
>> -               assertThat(handler, instanceOf(
>> ListenerInterfaceRequestHandler.class));
>> -               ListenerInterfaceRequestHandler h = (
>> ListenerInterfaceRequestHandler)handler;
>> +               assertThat(handler, instanceOf(
>> ListenerRequestHandler.class));
>> +               ListenerRequestHandler h = (ListenerRequestHandler)
>> handler;
>>
>>                  IRequestablePage page = h.getPage();
>>                  checkPage(page, 15);
>> @@ -253,9 +253,9 @@ public class MountedMapperTest extends
>> AbstractMapperTest
>>                  Url url = Url.parse("some/mount/path?
>> param1=value1&15-.4-foo-bar");
>>                  IRequestHandler handler = encoder.mapRequest(getRequest(
>> url));
>>
>> -               assertThat(handler, instanceOf(
>> ListenerInterfaceRequestHandler.class));
>> +               assertThat(handler, instanceOf(
>> ListenerRequestHandler.class));
>>
>> -               ListenerInterfaceRequestHandler h = (
>> ListenerInterfaceRequestHandler)handler;
>> +               ListenerRequestHandler h = (ListenerRequestHandler)
>> handler;
>>
>>                  IRequestablePage page = h.getPage();
>>                  checkPage(page, 15);
>> @@ -298,9 +298,9 @@ public class MountedMapperTest extends
>> AbstractMapperTest
>>                  context.setNextPageRenderCount(5);
>>                  IRequestHandler handler = encoder.mapRequest(getRequest(
>> url));
>>
>> -               assertThat(handler, instanceOf(
>> ListenerInterfaceRequestHandler.class));
>> +               assertThat(handler, instanceOf(
>> ListenerRequestHandler.class));
>>
>> -               ListenerInterfaceRequestHandler h = (
>> ListenerInterfaceRequestHandler)handler;
>> +               ListenerRequestHandler h = (ListenerRequestHandler)
>> handler;
>>
>>                  IRequestablePage page = h.getPage();
>>                  assertEquals(5, page.getRenderCount());
>> @@ -329,9 +329,9 @@ public class MountedMapperTest extends
>> AbstractMapperTest
>>                  Url url = Url.parse("some/mount/path/i1/
>> i2?-1.-foo-bar&a=b&b=c");
>>                  IRequestHandler handler = encoder.mapRequest(getRequest(
>> url));
>>
>> -               assertThat(handler, instanceOf(
>> ListenerInterfaceRequestHandler.class));
>> +               assertThat(handler, instanceOf(
>> ListenerRequestHandler.class));
>>
>> -               ListenerInterfaceRequestHandler h = (
>> ListenerInterfaceRequestHandler)handler;
>> +               ListenerRequestHandler h = (ListenerRequestHandler)
>> handler;
>>                  IRequestablePage page = h.getPage();
>>                  checkPage(page, 1);
>>
>> @@ -497,7 +497,7 @@ public class MountedMapperTest extends
>> AbstractMapperTest
>>                  IRequestableComponent c = page.get("foo:bar");
>>
>>                  PageAndComponentProvider provider = new
>> PageAndComponentProvider(page, c);
>> -               IRequestHandler handler = new
>> ListenerInterfaceRequestHandler(provider);
>> +               IRequestHandler handler = new ListenerRequestHandler(
>> provider);
>>
>>                  Url url = encoder.mapHandler(handler);
>>
>> @@ -555,7 +555,7 @@ public class MountedMapperTest extends
>> AbstractMapperTest
>>                  IRequestableComponent c = page.get("foo:bar");
>>
>>                  PageAndComponentProvider provider = new
>> PageAndComponentProvider(page, c);
>> -               IRequestHandler handler = new
>> ListenerInterfaceRequestHandler(provider, 4);
>> +               IRequestHandler handler = new ListenerRequestHandler(provider,
>> 4);
>>
>>                  Url url = encoder.mapHandler(handler);
>>
>>
>> http://git-wip-us.apache.org/repos/asf/wicket/blob/
>> 8342e4ef/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/
>> PackageMapperTest.java
>> ----------------------------------------------------------------------
>> diff --git a/wicket-core/src/test/java/org/apache/wicket/core/
>> request/mapper/PackageMapperTest.java b/wicket-core/src/test/java/
>> org/apache/wicket/core/request/mapper/PackageMapperTest.java
>> index 6a620ad..b0bb221 100644
>> --- a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/
>> PackageMapperTest.java
>> +++ b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/
>> PackageMapperTest.java
>> @@ -25,7 +25,7 @@ import org.apache.wicket.core.request.handler.
>> BookmarkableListenerInterfaceReque
>>   import org.apache.wicket.core.request.handler.
>> BookmarkablePageRequestHandler;
>>   import org.apache.wicket.core.request.handler.IPageProvider;
>>   import org.apache.wicket.core.request.handler.IPageRequestHandler;
>> -import org.apache.wicket.core.request.handler.
>> ListenerInterfaceRequestHandler;
>> +import org.apache.wicket.core.request.handler.ListenerRequestHandler;
>>   import org.apache.wicket.core.request.handler.PageAndComponentProvider;
>>   import org.apache.wicket.core.request.handler.PageProvider;
>>   import org.apache.wicket.core.request.handler.RenderPageRequestHandler;
>> @@ -243,9 +243,9 @@ public class PackageMapperTest extends
>> AbstractMapperTest
>>                  Url url = Url.parse(MOUNT_PATH + '/' + PAGE_CLASS_NAME +
>> "?15--foo-bar");
>>                  IRequestHandler handler = encoder.mapRequest(getRequest(
>> url));
>>
>> -               assertThat(handler, instanceOf(
>> ListenerInterfaceRequestHandler.class));
>> +               assertThat(handler, instanceOf(
>> ListenerRequestHandler.class));
>>
>> -               ListenerInterfaceRequestHandler h = (
>> ListenerInterfaceRequestHandler)handler;
>> +               ListenerRequestHandler h = (ListenerRequestHandler)
>> handler;
>>
>>                  IRequestablePage page = h.getPage();
>>                  checkPage(page, 15);
>> @@ -263,8 +263,8 @@ public class PackageMapperTest extends
>> AbstractMapperTest
>>                  Url url = Url.parse(MOUNT_PATH + '/' + PAGE_CLASS_NAME +
>> "/i1/i2?15--foo-bar&a=b&b=c");
>>                  IRequestHandler handler = encoder.mapRequest(getRequest(
>> url));
>>
>> -               assertThat(handler, instanceOf(
>> ListenerInterfaceRequestHandler.class));
>> -               ListenerInterfaceRequestHandler h = (
>> ListenerInterfaceRequestHandler)handler;
>> +               assertThat(handler, instanceOf(
>> ListenerRequestHandler.class));
>> +               ListenerRequestHandler h = (ListenerRequestHandler)
>> handler;
>>
>>                  IRequestablePage page = h.getPage();
>>                  checkPage(page, 15);
>> @@ -286,9 +286,9 @@ public class PackageMapperTest extends
>> AbstractMapperTest
>>                  Url url = Url.parse(MOUNT_PATH + '/' + PAGE_CLASS_NAME +
>> "?15-.4-foo-bar");
>>                  IRequestHandler handler = encoder.mapRequest(getRequest(
>> url));
>>
>> -               assertThat(handler, instanceOf(
>> ListenerInterfaceRequestHandler.class));
>> +               assertThat(handler, instanceOf(
>> ListenerRequestHandler.class));
>>
>> -               ListenerInterfaceRequestHandler h = (
>> ListenerInterfaceRequestHandler)handler;
>> +               ListenerRequestHandler h = (ListenerRequestHandler)
>> handler;
>>
>>                  IRequestablePage page = h.getPage();
>>                  checkPage(page, 15);
>> @@ -309,8 +309,8 @@ public class PackageMapperTest extends
>> AbstractMapperTest
>>
>>                  IRequestHandler handler = encoder.mapRequest(getRequest(
>> url));
>>
>> -               assertThat(handler, instanceOf(
>> ListenerInterfaceRequestHandler.class));
>> -               ListenerInterfaceRequestHandler h = (
>> ListenerInterfaceRequestHandler)handler;
>> +               assertThat(handler, instanceOf(
>> ListenerRequestHandler.class));
>> +               ListenerRequestHandler h = (ListenerRequestHandler)
>> handler;
>>
>>                  IRequestablePage page = h.getPage();
>>                  assertEquals(page.getRenderCount(), 5);
>>
>> http://git-wip-us.apache.org/repos/asf/wicket/blob/
>> 8342e4ef/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/
>> PageInstanceMapperTest.java
>> ----------------------------------------------------------------------
>> diff --git a/wicket-core/src/test/java/org/apache/wicket/core/
>> request/mapper/PageInstanceMapperTest.java b/wicket-core/src/test/java/
>> org/apache/wicket/core/request/mapper/PageInstanceMapperTest.java
>> index 9a2eaf0..2691070 100644
>> --- a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/
>> PageInstanceMapperTest.java
>> +++ b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/
>> PageInstanceMapperTest.java
>> @@ -24,7 +24,7 @@ import java.util.Locale;
>>   import org.apache.wicket.MockPage;
>>   import org.apache.wicket.core.request.handler.IPageProvider;
>>   import org.apache.wicket.core.request.handler.IPageRequestHandler;
>> -import org.apache.wicket.core.request.handler.
>> ListenerInterfaceRequestHandler;
>> +import org.apache.wicket.core.request.handler.ListenerRequestHandler;
>>   import org.apache.wicket.core.request.handler.PageAndComponentProvider;
>>   import org.apache.wicket.core.request.handler.PageProvider;
>>   import org.apache.wicket.core.request.handler.RenderPageRequestHandler;
>> @@ -90,9 +90,9 @@ public class PageInstanceMapperTest extends
>> AbstractMapperTest
>>                  Url url = Url.parse("wicket/page?4--a-b-c");
>>
>>                  IRequestHandler handler = encoder.mapRequest(getRequest(
>> url));
>> -               assertThat(handler, instanceOf(
>> ListenerInterfaceRequestHandler.class));
>> +               assertThat(handler, instanceOf(
>> ListenerRequestHandler.class));
>>
>> -               ListenerInterfaceRequestHandler h = (
>> ListenerInterfaceRequestHandler)handler;
>> +               ListenerRequestHandler h = (ListenerRequestHandler)
>> handler;
>>                  checkPage(h.getPage(), 4);
>>                  assertEquals(h.getComponent().getPageRelativePath(),
>> "a:b:c");
>>                  assertNull(h.getBehaviorIndex());
>> @@ -131,9 +131,9 @@ public class PageInstanceMapperTest extends
>> AbstractMapperTest
>>                  Url url = Url.parse("wicket/page?4-
>> ILinkListener.5-a-b-c");
>>
>>                  IRequestHandler handler = encoder.mapRequest(getRequest(
>> url));
>> -               assertThat(handler, instanceOf(
>> ListenerInterfaceRequestHandler.class));
>> +               assertThat(handler, instanceOf(
>> ListenerRequestHandler.class));
>>
>> -               ListenerInterfaceRequestHandler h = (
>> ListenerInterfaceRequestHandler)handler;
>> +               ListenerRequestHandler h = (ListenerRequestHandler)
>> handler;
>>                  checkPage(h.getPage(), 4);
>>                  assertEquals(h.getComponent().getPageRelativePath(),
>> "a:b:c");
>>                  assertEquals((Object)5, h.getBehaviorIndex());
>> @@ -150,9 +150,9 @@ public class PageInstanceMapperTest extends
>> AbstractMapperTest
>>                  context.setNextPageRenderCount(6);
>>
>>                  IRequestHandler handler = encoder.mapRequest(getRequest(
>> url));
>> -               assertThat(handler, instanceOf(
>> ListenerInterfaceRequestHandler.class));
>> +               assertThat(handler, instanceOf(
>> ListenerRequestHandler.class));
>>
>> -               ListenerInterfaceRequestHandler h = (
>> ListenerInterfaceRequestHandler)handler;
>> +               ListenerRequestHandler h = (ListenerRequestHandler)
>> handler;
>>                  assertEquals(6, h.getPage().getRenderCount());
>>          }
>>
>> @@ -287,7 +287,7 @@ public class PageInstanceMapperTest extends
>> AbstractMapperTest
>>                  IRequestableComponent c = page.get("a:b:c");
>>
>>                  PageAndComponentProvider provider = new
>> PageAndComponentProvider(page, c);
>> -               IRequestHandler handler = new
>> ListenerInterfaceRequestHandler(provider);
>> +               IRequestHandler handler = new ListenerRequestHandler(
>> provider);
>>
>>                  Url url = encoder.mapHandler(handler);
>>                  assertEquals("wicket/page?15-5.-a-b-c", url.toString());
>>
>> http://git-wip-us.apache.org/repos/asf/wicket/blob/
>> 8342e4ef/wicket-examples/src/main/java/org/apache/wicket/
>> examples/ajax/prototype/Index.java
>> ----------------------------------------------------------------------
>> diff --git a/wicket-examples/src/main/java/org/apache/wicket/
>> examples/ajax/prototype/Index.java b/wicket-examples/src/main/
>> java/org/apache/wicket/examples/ajax/prototype/Index.java
>> index 2795eb5..c62ce4b 100644
>> --- a/wicket-examples/src/main/java/org/apache/wicket/
>> examples/ajax/prototype/Index.java
>> +++ b/wicket-examples/src/main/java/org/apache/wicket/
>> examples/ajax/prototype/Index.java
>> @@ -17,7 +17,7 @@
>>   package org.apache.wicket.examples.ajax.prototype;
>>
>>   import org.apache.wicket.core.request.handler.
>> ComponentRenderingRequestHandler;
>> -import org.apache.wicket.core.request.handler.
>> ListenerInterfaceRequestHandler;
>> +import org.apache.wicket.core.request.handler.ListenerRequestHandler;
>>   import org.apache.wicket.core.request.handler.PageAndComponentProvider;
>>   import org.apache.wicket.examples.WicketExamplePage;
>>   import org.apache.wicket.markup.html.basic.Label;
>> @@ -79,8 +79,7 @@ public class Index extends WicketExamplePage
>>                          @Override
>>                          protected String getOnClickScript(CharSequence url)
>>                          {
>> -                               IRequestHandler handler = new
>> ListenerInterfaceRequestHandler(
>> -                                       new PageAndComponentProvider(getPage(),
>> this));
>> +                               IRequestHandler handler = new
>> ListenerRequestHandler(new PageAndComponentProvider(getPage(), this));
>>                                  Url componentUrl =
>> RequestCycle.get().mapUrlFor(handler);
>>                                  componentUrl.addQueryParameter("anticache",
>> Math.random());
>>                                  return new AppendingStringBuffer("new
>> Ajax.Updater('counter', '").append(
>>
>>


Re: wicket git commit: WICKET-6137 renamed ListenerInterfaceRequestHandler to ListenerRequestHandler

Posted by Martin Grigorov <mg...@apache.org>.
What
about org.apache.wicket.core.request.handler.BookmarkableListenerInterfaceRequestHandler
?

Martin Grigorov
Wicket Training and Consulting
https://twitter.com/mtgrigorov

On Mon, Jan 30, 2017 at 4:51 PM, <sv...@apache.org> wrote:

> Repository: wicket
> Updated Branches:
>   refs/heads/master 16e44ce98 -> 8342e4ef9
>
>
> WICKET-6137 renamed ListenerInterfaceRequestHandler to
> ListenerRequestHandler
>
> there isn't a ..ListenerInterface any more
>
>
> Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
> Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/8342e4ef
> Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/8342e4ef
> Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/8342e4ef
>
> Branch: refs/heads/master
> Commit: 8342e4ef9acd442ddfe7ad78d04838d17c1b9fec
> Parents: 16e44ce
> Author: Sven Meier <sv...@apache.org>
> Authored: Mon Jan 30 16:50:26 2017 +0100
> Committer: Sven Meier <sv...@apache.org>
> Committed: Mon Jan 30 16:50:26 2017 +0100
>
> ----------------------------------------------------------------------
>  .../main/java/org/apache/wicket/Component.java  |   4 +-
>  ...markableListenerInterfaceRequestHandler.java |   2 +-
>  .../ListenerInterfaceRequestHandler.java        | 327 -------------------
>  .../request/handler/ListenerRequestHandler.java | 327 +++++++++++++++++++
>  .../logger/ListenerInterfaceLogData.java        | 214 ------------
>  .../request/handler/logger/ListenerLogData.java | 214 ++++++++++++
>  .../mapper/AbstractBookmarkableMapper.java      |   4 +-
>  .../core/request/mapper/MountedMapper.java      |   6 +-
>  .../core/request/mapper/PageInstanceMapper.java |   8 +-
>  .../wicket/util/tester/BaseWicketTester.java    |   6 +-
>  .../org/apache/wicket/BehaviorRequestTest.java  |   4 +-
>  .../ComponentWithLazyModelCreationTest.java     |   4 +-
>  .../ListenerInterfaceRequestHandlerTest.java    | 208 ------------
>  .../handler/ListenerRequestHandlerTest.java     | 208 ++++++++++++
>  .../request/mapper/BookmarkableMapperTest.java  |  18 +-
>  .../core/request/mapper/CryptoMapperTest.java   |  14 +-
>  .../core/request/mapper/MountedMapperTest.java  |  26 +-
>  .../core/request/mapper/PackageMapperTest.java  |  18 +-
>  .../request/mapper/PageInstanceMapperTest.java  |  16 +-
>  .../wicket/examples/ajax/prototype/Index.java   |   5 +-
>  20 files changed, 816 insertions(+), 817 deletions(-)
> ----------------------------------------------------------------------
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 8342e4ef/wicket-core/src/main/java/org/apache/wicket/Component.java
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/main/java/org/apache/wicket/Component.java
> b/wicket-core/src/main/java/org/apache/wicket/Component.java
> index 97262ed..a6aa54f 100644
> --- a/wicket-core/src/main/java/org/apache/wicket/Component.java
> +++ b/wicket-core/src/main/java/org/apache/wicket/Component.java
> @@ -32,7 +32,7 @@ import org.apache.wicket.authorization.
> UnauthorizedActionException;
>  import org.apache.wicket.authorization.strategies.page.
> SimplePageAuthorizationStrategy;
>  import org.apache.wicket.behavior.Behavior;
>  import org.apache.wicket.core.request.handler.
> BookmarkableListenerInterfaceRequestHandler;
> -import org.apache.wicket.core.request.handler.
> ListenerInterfaceRequestHandler;
> +import org.apache.wicket.core.request.handler.ListenerRequestHandler;
>  import org.apache.wicket.core.request.handler.PageAndComponentProvider;
>  import org.apache.wicket.core.util.lang.WicketObjects;
>  import org.apache.wicket.core.util.string.ComponentStrings;
> @@ -3396,7 +3396,7 @@ public abstract class Component
>                 }
>                 else
>                 {
> -                       return new ListenerInterfaceRequestHandler(provider,
> id);
> +                       return new ListenerRequestHandler(provider, id);
>                 }
>         }
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 8342e4ef/wicket-core/src/main/java/org/apache/wicket/core/request/handler/
> BookmarkableListenerInterfaceRequestHandler.java
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/main/java/org/apache/wicket/core/
> request/handler/BookmarkableListenerInterfaceRequestHandler.java
> b/wicket-core/src/main/java/org/apache/wicket/core/request/handler/
> BookmarkableListenerInterfaceRequestHandler.java
> index b3de191..772e215 100644
> --- a/wicket-core/src/main/java/org/apache/wicket/core/request/handler/
> BookmarkableListenerInterfaceRequestHandler.java
> +++ b/wicket-core/src/main/java/org/apache/wicket/core/request/handler/
> BookmarkableListenerInterfaceRequestHandler.java
> @@ -25,7 +25,7 @@ import org.apache.wicket.util.lang.Args;
>
>  /**
>   * Request handler for bookmarkable pages with an {@link
> IRequestListener}. This handler is only used to
> - * generate URLs. Rendering is always handled by {@link
> ListenerInterfaceRequestHandler}.
> + * generate URLs. Rendering is always handled by {@link
> ListenerRequestHandler}.
>   *
>   * @author Matej Knopp
>   */
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 8342e4ef/wicket-core/src/main/java/org/apache/wicket/core/request/handler/
> ListenerInterfaceRequestHandler.java
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/main/java/org/apache/wicket/core/
> request/handler/ListenerInterfaceRequestHandler.java
> b/wicket-core/src/main/java/org/apache/wicket/core/request/handler/
> ListenerInterfaceRequestHandler.java
> deleted file mode 100644
> index c976a42..0000000
> --- a/wicket-core/src/main/java/org/apache/wicket/core/request/handler/
> ListenerInterfaceRequestHandler.java
> +++ /dev/null
> @@ -1,327 +0,0 @@
> -/*
> - * Licensed to the Apache Software Foundation (ASF) under one or more
> - * contributor license agreements.  See the NOTICE file distributed with
> - * this work for additional information regarding copyright ownership.
> - * The ASF licenses this file to You under the Apache License, Version 2.0
> - * (the "License"); you may not use this file except in compliance with
> - * the License.  You may obtain a copy of the License at
> - *
> - *      http://www.apache.org/licenses/LICENSE-2.0
> - *
> - * Unless required by applicable law or agreed to in writing, software
> - * distributed under the License is distributed on an "AS IS" BASIS,
> - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
> implied.
> - * See the License for the specific language governing permissions and
> - * limitations under the License.
> - */
> -package org.apache.wicket.core.request.handler;
> -
> -import org.apache.wicket.Component;
> -import org.apache.wicket.IRequestListener;
> -import org.apache.wicket.Page;
> -import org.apache.wicket.WicketRuntimeException;
> -import org.apache.wicket.behavior.Behavior;
> -import org.apache.wicket.core.request.handler.RenderPageRequestHandler.
> RedirectPolicy;
> -import org.apache.wicket.core.request.handler.logger.
> ListenerInterfaceLogData;
> -import org.apache.wicket.request.ILoggableRequestHandler;
> -import org.apache.wicket.request.IRequestCycle;
> -import org.apache.wicket.request.component.IRequestableComponent;
> -import org.apache.wicket.request.component.IRequestablePage;
> -import org.apache.wicket.request.http.WebRequest;
> -import org.apache.wicket.request.mapper.parameter.PageParameters;
> -import org.apache.wicket.util.lang.Args;
> -import org.slf4j.Logger;
> -import org.slf4j.LoggerFactory;
> -
> -/**
> - * Request handler that invokes an {@link IRequestListener} on component
> or behavior and renders page afterwards.
> - *
> - * @author Matej Knopp
> - */
> -public class ListenerInterfaceRequestHandler
> -       implements
> -               IPageRequestHandler,
> -               IComponentRequestHandler,
> -               ILoggableRequestHandler
> -{
> -
> -       private static final Logger LOG = LoggerFactory.getLogger(
> ListenerInterfaceRequestHandler.class);
> -
> -       private final IPageAndComponentProvider pageComponentProvider;
> -
> -       private final Integer behaviorId;
> -
> -       private ListenerInterfaceLogData logData;
> -
> -       /**
> -        * Construct.
> -        *
> -        * @param pageComponentProvider
> -        * @param behaviorIndex
> -        */
> -       public ListenerInterfaceRequestHandler(IPageAndComponentProvider
> pageComponentProvider, Integer behaviorIndex)
> -       {
> -               Args.notNull(pageComponentProvider,
> "pageComponentProvider");
> -
> -               this.pageComponentProvider = pageComponentProvider;
> -               behaviorId = behaviorIndex;
> -       }
> -
> -       /**
> -        * Construct.
> -        *
> -        * @param pageComponentProvider
> -        */
> -       public ListenerInterfaceRequestHandler(PageAndComponentProvider
> pageComponentProvider)
> -       {
> -               this(pageComponentProvider, null);
> -       }
> -
> -       public boolean includeRenderCount() {
> -               if (behaviorId == null) {
> -                       return ((IRequestListener)
> getComponent()).rendersPage();
> -               } else {
> -                       return ((IRequestListener)getComponent().
> getBehaviorById(getBehaviorIndex())).rendersPage();
> -               }
> -       }
> -
> -       @Override
> -       public IRequestableComponent getComponent()
> -       {
> -               return pageComponentProvider.getComponent();
> -       }
> -
> -       @Override
> -       public IRequestablePage getPage()
> -       {
> -               return pageComponentProvider.getPageInstance();
> -       }
> -
> -       @Override
> -       public Class<? extends IRequestablePage> getPageClass()
> -       {
> -               return pageComponentProvider.getPageClass();
> -       }
> -
> -       @Override
> -       public Integer getPageId()
> -       {
> -               return pageComponentProvider.getPageId();
> -       }
> -
> -       @Override
> -       public PageParameters getPageParameters()
> -       {
> -               return pageComponentProvider.getPageParameters();
> -       }
> -
> -       @Override
> -       public void detach(IRequestCycle requestCycle)
> -       {
> -               if (logData == null)
> -               {
> -                       logData = new ListenerInterfaceLogData(pageComponentProvider,
> behaviorId);
> -               }
> -               pageComponentProvider.detach();
> -       }
> -
> -       /**
> -        * Index of target behavior or <code>null</code> if component is
> the target.
> -        *
> -        * @return behavior index or <code>null</code>
> -        */
> -       public Integer getBehaviorIndex()
> -       {
> -               return behaviorId;
> -       }
> -
> -       @Override
> -       public void respond(final IRequestCycle requestCycle)
> -       {
> -               final IRequestablePage page = getPage();
> -               final boolean freshPage = pageComponentProvider.
> isPageInstanceFresh();
> -               final boolean isAjax = ((WebRequest)requestCycle.
> getRequest()).isAjax();
> -
> -               IRequestableComponent component;
> -               try
> -               {
> -                       component = getComponent();
> -               }
> -               catch (ComponentNotFoundException e)
> -               {
> -                       // either the page is stateless and the component
> we are looking for is not added in the
> -                       // constructor
> -                       // or the page is stateful+stale and a new
> instances was created by pageprovider
> -                       // we denote this by setting component to null
> -                       component = null;
> -               }
> -
> -               if ((component == null && !freshPage) || (component !=
> null && component.getPage() != page))
> -               {
> -                       throw new ComponentNotFoundException("Component
> '" + getComponentPath()
> -                                       + "' has been removed from page.");
> -               }
> -
> -               if (page instanceof Page)
> -               {
> -                       // initialize the page to be able to check whether
> it is stateless
> -                       ((Page)page).internalInitialize();
> -               }
> -
> -               RedirectPolicy policy = page.isPageStateless()
> -                       ? RedirectPolicy.NEVER_REDIRECT
> -                       : RedirectPolicy.AUTO_REDIRECT;
> -
> -               boolean blockIfExpired = component != null && !component.
> canCallListenerInterfaceAfterExpiry();
> -
> -               boolean lateComponent = component == null && freshPage;
> -
> -               if ((pageComponentProvider.wasExpired() &&
> blockIfExpired) || lateComponent)
> -               {
> -                       // A request listener is invoked on an expired
> page or the component couldn't be
> -                       // determined. The best we can do is to re-paint
> the newly constructed page.
> -                       // Reference: WICKET-4454, WICKET-6288
> -
> -                       if (LOG.isDebugEnabled())
> -                       {
> -                               LOG.debug(
> -                                       "An IRequestListener was called
> but its page/component({}) couldn't be resolved. "
> -                                               + "Scheduling re-create of
> the page and ignoring the listener interface...",
> -                                       getComponentPath());
> -                       }
> -
> -                       if (isAjax)
> -                       {
> -                               policy = RedirectPolicy.ALWAYS_REDIRECT;
> -                       }
> -
> -                       requestCycle.scheduleRequestHandlerAfterCurrent(new
> RenderPageRequestHandler(
> -                               new PageProvider(page), policy));
> -                       return;
> -               }
> -
> -               invokeListener(requestCycle, policy, isAjax);
> -       }
> -
> -       private void invokeListener(IRequestCycle requestCycle,
> RedirectPolicy policy, boolean ajax)
> -       {
> -               if (getBehaviorIndex() == null)
> -               {
> -                       invoke(requestCycle, policy, ajax, getComponent());
> -               }
> -               else
> -               {
> -                       try
> -                       {
> -                               Behavior behavior = getComponent().
> getBehaviorById(behaviorId);
> -                               invoke(requestCycle, policy, ajax,
> getComponent(), behavior);
> -                       }
> -                       catch (IndexOutOfBoundsException e)
> -                       {
> -                               throw new WicketRuntimeException("Couldn't
> find component behavior.", e);
> -                       }
> -
> -               }
> -       }
> -
> -       /**
> -        * Invokes a given interface on a component.
> -        *
> -        * @param rcomponent
> -        *            The component
> -        *
> -        * @throws ListenerInvocationNotAllowedException
> -        *             when listener invocation attempted on a component
> that does not allow it
> -        */
> -       private final void invoke(final IRequestCycle requestCycle,
> RedirectPolicy policy, boolean ajax, final IRequestableComponent rcomponent)
> -       {
> -               // we are in Wicket core land
> -               final Component component = (Component)rcomponent;
> -
> -               if (!component.canCallListenerInterface())
> -               {
> -                       // just return so that we have a silent fail and
> just re-render the
> -                       // page
> -                       LOG.info("component not enabled or visible;
> ignoring call. Component: " + component);
> -                       throw new ListenerInvocationNotAllowedException(component,
> null,
> -                               "Component rejected interface invocation");
> -               }
> -
> -               internalInvoke(requestCycle, policy, ajax, component,
> component);
> -       }
> -
> -       /**
> -        * Invokes a given interface on a component's behavior.
> -        *
> -        * @param rcomponent
> -        *            The component
> -        * @param behavior
> -        * @throws ListenerInvocationNotAllowedException
> -        *             when listener invocation attempted on a component
> that does not allow it
> -        */
> -       private final void invoke(final IRequestCycle requestCycle,
> RedirectPolicy policy, boolean ajax, final IRequestableComponent
> rcomponent, final Behavior behavior)
> -       {
> -               // we are in Wicket core land
> -               final Component component = (Component)rcomponent;
> -
> -               if (!behavior.canCallListenerInterface(component))
> -               {
> -                       LOG.warn("behavior not enabled; ignore call.
> Behavior {} at component {}", behavior,
> -                               component);
> -                       throw new ListenerInvocationNotAllowedException(component,
> behavior,
> -                               "Behavior rejected interface invocation.
> ");
> -               }
> -
> -               internalInvoke(requestCycle, policy, ajax, component,
> behavior);
> -       }
> -
> -       private void internalInvoke(final IRequestCycle requestCycle,
> RedirectPolicy policy, boolean ajax, final Component component, final
> Object target)
> -       {
> -               // save a reference to the page because the component can
> be removed
> -               // during the invocation of the listener and thus lose its
> parent
> -               Page page = component.getPage();
> -
> -               // initialization is required for stateless pages
> -               if (!page.isInitialized())
> -               {
> -                       page.internalInitialize();
> -               }
> -
> -               IRequestListener requestListener =
> (IRequestListener)target;
> -
> -               if (requestListener.rendersPage() && !ajax)
> -               {
> -                       // schedule page render after current request
> handler is done. this can be
> -                       // overridden during invocation of listener
> -                       // method (i.e. by calling
> RequestCycle#setResponsePage)
> -                       requestCycle.scheduleRequestHandlerAfterCurrent(new
> RenderPageRequestHandler(
> -                               new PageProvider(page), policy));
> -               }
> -
> -               requestListener.onRequest();
> -       }
> -
> -       @Override
> -       public final boolean isPageInstanceCreated()
> -       {
> -               return pageComponentProvider.hasPageInstance();
> -       }
> -
> -       @Override
> -       public final String getComponentPath()
> -       {
> -               return pageComponentProvider.getComponentPath();
> -       }
> -
> -       @Override
> -       public final Integer getRenderCount()
> -       {
> -               return pageComponentProvider.getRenderCount();
> -       }
> -
> -       @Override
> -       public ListenerInterfaceLogData getLogData()
> -       {
> -               return logData;
> -       }
> -}
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 8342e4ef/wicket-core/src/main/java/org/apache/wicket/core/request/handler/
> ListenerRequestHandler.java
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/main/java/org/apache/wicket/core/
> request/handler/ListenerRequestHandler.java b/wicket-core/src/main/java/
> org/apache/wicket/core/request/handler/ListenerRequestHandler.java
> new file mode 100644
> index 0000000..3f131e3
> --- /dev/null
> +++ b/wicket-core/src/main/java/org/apache/wicket/core/request/handler/
> ListenerRequestHandler.java
> @@ -0,0 +1,327 @@
> +/*
> + * Licensed to the Apache Software Foundation (ASF) under one or more
> + * contributor license agreements.  See the NOTICE file distributed with
> + * this work for additional information regarding copyright ownership.
> + * The ASF licenses this file to You under the Apache License, Version 2.0
> + * (the "License"); you may not use this file except in compliance with
> + * the License.  You may obtain a copy of the License at
> + *
> + *      http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing, software
> + * distributed under the License is distributed on an "AS IS" BASIS,
> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
> implied.
> + * See the License for the specific language governing permissions and
> + * limitations under the License.
> + */
> +package org.apache.wicket.core.request.handler;
> +
> +import org.apache.wicket.Component;
> +import org.apache.wicket.IRequestListener;
> +import org.apache.wicket.Page;
> +import org.apache.wicket.WicketRuntimeException;
> +import org.apache.wicket.behavior.Behavior;
> +import org.apache.wicket.core.request.handler.RenderPageRequestHandler.
> RedirectPolicy;
> +import org.apache.wicket.core.request.handler.logger.ListenerLogData;
> +import org.apache.wicket.request.ILoggableRequestHandler;
> +import org.apache.wicket.request.IRequestCycle;
> +import org.apache.wicket.request.component.IRequestableComponent;
> +import org.apache.wicket.request.component.IRequestablePage;
> +import org.apache.wicket.request.http.WebRequest;
> +import org.apache.wicket.request.mapper.parameter.PageParameters;
> +import org.apache.wicket.util.lang.Args;
> +import org.slf4j.Logger;
> +import org.slf4j.LoggerFactory;
> +
> +/**
> + * Request handler that invokes an {@link IRequestListener} on component
> or behavior and renders page afterwards.
> + *
> + * @author Matej Knopp
> + */
> +public class ListenerRequestHandler
> +       implements
> +               IPageRequestHandler,
> +               IComponentRequestHandler,
> +               ILoggableRequestHandler
> +{
> +
> +       private static final Logger LOG = LoggerFactory.getLogger(
> ListenerRequestHandler.class);
> +
> +       private final IPageAndComponentProvider pageComponentProvider;
> +
> +       private final Integer behaviorId;
> +
> +       private ListenerLogData logData;
> +
> +       /**
> +        * Construct.
> +        *
> +        * @param pageComponentProvider
> +        * @param behaviorIndex
> +        */
> +       public ListenerRequestHandler(IPageAndComponentProvider
> pageComponentProvider, Integer behaviorIndex)
> +       {
> +               Args.notNull(pageComponentProvider,
> "pageComponentProvider");
> +
> +               this.pageComponentProvider = pageComponentProvider;
> +               behaviorId = behaviorIndex;
> +       }
> +
> +       /**
> +        * Construct.
> +        *
> +        * @param pageComponentProvider
> +        */
> +       public ListenerRequestHandler(PageAndComponentProvider
> pageComponentProvider)
> +       {
> +               this(pageComponentProvider, null);
> +       }
> +
> +       public boolean includeRenderCount() {
> +               if (behaviorId == null) {
> +                       return ((IRequestListener)
> getComponent()).rendersPage();
> +               } else {
> +                       return ((IRequestListener)getComponent().
> getBehaviorById(getBehaviorIndex())).rendersPage();
> +               }
> +       }
> +
> +       @Override
> +       public IRequestableComponent getComponent()
> +       {
> +               return pageComponentProvider.getComponent();
> +       }
> +
> +       @Override
> +       public IRequestablePage getPage()
> +       {
> +               return pageComponentProvider.getPageInstance();
> +       }
> +
> +       @Override
> +       public Class<? extends IRequestablePage> getPageClass()
> +       {
> +               return pageComponentProvider.getPageClass();
> +       }
> +
> +       @Override
> +       public Integer getPageId()
> +       {
> +               return pageComponentProvider.getPageId();
> +       }
> +
> +       @Override
> +       public PageParameters getPageParameters()
> +       {
> +               return pageComponentProvider.getPageParameters();
> +       }
> +
> +       @Override
> +       public void detach(IRequestCycle requestCycle)
> +       {
> +               if (logData == null)
> +               {
> +                       logData = new ListenerLogData(pageComponentProvider,
> behaviorId);
> +               }
> +               pageComponentProvider.detach();
> +       }
> +
> +       /**
> +        * Index of target behavior or <code>null</code> if component is
> the target.
> +        *
> +        * @return behavior index or <code>null</code>
> +        */
> +       public Integer getBehaviorIndex()
> +       {
> +               return behaviorId;
> +       }
> +
> +       @Override
> +       public void respond(final IRequestCycle requestCycle)
> +       {
> +               final IRequestablePage page = getPage();
> +               final boolean freshPage = pageComponentProvider.
> isPageInstanceFresh();
> +               final boolean isAjax = ((WebRequest)requestCycle.
> getRequest()).isAjax();
> +
> +               IRequestableComponent component;
> +               try
> +               {
> +                       component = getComponent();
> +               }
> +               catch (ComponentNotFoundException e)
> +               {
> +                       // either the page is stateless and the component
> we are looking for is not added in the
> +                       // constructor
> +                       // or the page is stateful+stale and a new
> instances was created by pageprovider
> +                       // we denote this by setting component to null
> +                       component = null;
> +               }
> +
> +               if ((component == null && !freshPage) || (component !=
> null && component.getPage() != page))
> +               {
> +                       throw new ComponentNotFoundException("Component
> '" + getComponentPath()
> +                                       + "' has been removed from page.");
> +               }
> +
> +               if (page instanceof Page)
> +               {
> +                       // initialize the page to be able to check whether
> it is stateless
> +                       ((Page)page).internalInitialize();
> +               }
> +
> +               RedirectPolicy policy = page.isPageStateless()
> +                       ? RedirectPolicy.NEVER_REDIRECT
> +                       : RedirectPolicy.AUTO_REDIRECT;
> +
> +               boolean blockIfExpired = component != null && !component.
> canCallListenerInterfaceAfterExpiry();
> +
> +               boolean lateComponent = component == null && freshPage;
> +
> +               if ((pageComponentProvider.wasExpired() &&
> blockIfExpired) || lateComponent)
> +               {
> +                       // A request listener is invoked on an expired
> page or the component couldn't be
> +                       // determined. The best we can do is to re-paint
> the newly constructed page.
> +                       // Reference: WICKET-4454, WICKET-6288
> +
> +                       if (LOG.isDebugEnabled())
> +                       {
> +                               LOG.debug(
> +                                       "An IRequestListener was called
> but its page/component({}) couldn't be resolved. "
> +                                               + "Scheduling re-create of
> the page and ignoring the listener interface...",
> +                                       getComponentPath());
> +                       }
> +
> +                       if (isAjax)
> +                       {
> +                               policy = RedirectPolicy.ALWAYS_REDIRECT;
> +                       }
> +
> +                       requestCycle.scheduleRequestHandlerAfterCurrent(new
> RenderPageRequestHandler(
> +                               new PageProvider(page), policy));
> +                       return;
> +               }
> +
> +               invokeListener(requestCycle, policy, isAjax);
> +       }
> +
> +       private void invokeListener(IRequestCycle requestCycle,
> RedirectPolicy policy, boolean ajax)
> +       {
> +               if (getBehaviorIndex() == null)
> +               {
> +                       invoke(requestCycle, policy, ajax, getComponent());
> +               }
> +               else
> +               {
> +                       try
> +                       {
> +                               Behavior behavior = getComponent().
> getBehaviorById(behaviorId);
> +                               invoke(requestCycle, policy, ajax,
> getComponent(), behavior);
> +                       }
> +                       catch (IndexOutOfBoundsException e)
> +                       {
> +                               throw new WicketRuntimeException("Couldn't
> find component behavior.", e);
> +                       }
> +
> +               }
> +       }
> +
> +       /**
> +        * Invokes a given interface on a component.
> +        *
> +        * @param rcomponent
> +        *            The component
> +        *
> +        * @throws ListenerInvocationNotAllowedException
> +        *             when listener invocation attempted on a component
> that does not allow it
> +        */
> +       private final void invoke(final IRequestCycle requestCycle,
> RedirectPolicy policy, boolean ajax, final IRequestableComponent rcomponent)
> +       {
> +               // we are in Wicket core land
> +               final Component component = (Component)rcomponent;
> +
> +               if (!component.canCallListenerInterface())
> +               {
> +                       // just return so that we have a silent fail and
> just re-render the
> +                       // page
> +                       LOG.info("component not enabled or visible;
> ignoring call. Component: " + component);
> +                       throw new ListenerInvocationNotAllowedException(component,
> null,
> +                               "Component rejected interface invocation");
> +               }
> +
> +               internalInvoke(requestCycle, policy, ajax, component,
> component);
> +       }
> +
> +       /**
> +        * Invokes a given interface on a component's behavior.
> +        *
> +        * @param rcomponent
> +        *            The component
> +        * @param behavior
> +        * @throws ListenerInvocationNotAllowedException
> +        *             when listener invocation attempted on a component
> that does not allow it
> +        */
> +       private final void invoke(final IRequestCycle requestCycle,
> RedirectPolicy policy, boolean ajax, final IRequestableComponent
> rcomponent, final Behavior behavior)
> +       {
> +               // we are in Wicket core land
> +               final Component component = (Component)rcomponent;
> +
> +               if (!behavior.canCallListenerInterface(component))
> +               {
> +                       LOG.warn("behavior not enabled; ignore call.
> Behavior {} at component {}", behavior,
> +                               component);
> +                       throw new ListenerInvocationNotAllowedException(component,
> behavior,
> +                               "Behavior rejected interface invocation.
> ");
> +               }
> +
> +               internalInvoke(requestCycle, policy, ajax, component,
> behavior);
> +       }
> +
> +       private void internalInvoke(final IRequestCycle requestCycle,
> RedirectPolicy policy, boolean ajax, final Component component, final
> Object target)
> +       {
> +               // save a reference to the page because the component can
> be removed
> +               // during the invocation of the listener and thus lose its
> parent
> +               Page page = component.getPage();
> +
> +               // initialization is required for stateless pages
> +               if (!page.isInitialized())
> +               {
> +                       page.internalInitialize();
> +               }
> +
> +               IRequestListener requestListener =
> (IRequestListener)target;
> +
> +               if (requestListener.rendersPage() && !ajax)
> +               {
> +                       // schedule page render after current request
> handler is done. this can be
> +                       // overridden during invocation of listener
> +                       // method (i.e. by calling
> RequestCycle#setResponsePage)
> +                       requestCycle.scheduleRequestHandlerAfterCurrent(new
> RenderPageRequestHandler(
> +                               new PageProvider(page), policy));
> +               }
> +
> +               requestListener.onRequest();
> +       }
> +
> +       @Override
> +       public final boolean isPageInstanceCreated()
> +       {
> +               return pageComponentProvider.hasPageInstance();
> +       }
> +
> +       @Override
> +       public final String getComponentPath()
> +       {
> +               return pageComponentProvider.getComponentPath();
> +       }
> +
> +       @Override
> +       public final Integer getRenderCount()
> +       {
> +               return pageComponentProvider.getRenderCount();
> +       }
> +
> +       @Override
> +       public ListenerLogData getLogData()
> +       {
> +               return logData;
> +       }
> +}
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 8342e4ef/wicket-core/src/main/java/org/apache/wicket/core/
> request/handler/logger/ListenerInterfaceLogData.java
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/main/java/org/apache/wicket/core/
> request/handler/logger/ListenerInterfaceLogData.java
> b/wicket-core/src/main/java/org/apache/wicket/core/request/handler/logger/
> ListenerInterfaceLogData.java
> deleted file mode 100644
> index 5ed97a7..0000000
> --- a/wicket-core/src/main/java/org/apache/wicket/core/
> request/handler/logger/ListenerInterfaceLogData.java
> +++ /dev/null
> @@ -1,214 +0,0 @@
> -/*
> - * Licensed to the Apache Software Foundation (ASF) under one or more
> - * contributor license agreements.  See the NOTICE file distributed with
> - * this work for additional information regarding copyright ownership.
> - * The ASF licenses this file to You under the Apache License, Version 2.0
> - * (the "License"); you may not use this file except in compliance with
> - * the License.  You may obtain a copy of the License at
> - *
> - *      http://www.apache.org/licenses/LICENSE-2.0
> - *
> - * Unless required by applicable law or agreed to in writing, software
> - * distributed under the License is distributed on an "AS IS" BASIS,
> - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
> implied.
> - * See the License for the specific language governing permissions and
> - * limitations under the License.
> - */
> -package org.apache.wicket.core.request.handler.logger;
> -
> -import org.apache.wicket.Component;
> -import org.apache.wicket.behavior.Behavior;
> -import org.apache.wicket.core.request.handler.IPageAndComponentProvider;
> -import org.apache.wicket.markup.html.form.Form;
> -import org.apache.wicket.markup.html.form.IFormSubmitter;
> -import org.apache.wicket.request.component.IRequestableComponent;
> -
> -/**
> - * Contains logging data for component/listener-interface request
> handlers.
> - *
> - * @author Emond Papegaaij
> - */
> -public class ListenerInterfaceLogData extends PageLogData
> -{
> -       private static final long serialVersionUID = 1L;
> -
> -       private final Class<? extends IRequestableComponent>
> componentClass;
> -       private final String componentPath;
> -       private final Integer behaviorIndex;
> -       private Class<? extends Behavior> behaviorClass;
> -       private Class<? extends IRequestableComponent>
> submittingComponentClass;
> -       private String submittingComponentPath;
> -
> -       /**
> -        * Construct.
> -        *
> -        * @param pageAndComponentProvider
> -        * @param listenerInterface
> -        * @param behaviorIndex
> -        */
> -       public ListenerInterfaceLogData(IPageAndComponentProvider
> pageAndComponentProvider, Integer behaviorIndex)
> -       {
> -               super(pageAndComponentProvider);
> -               componentClass = tryToGetComponentClass(
> pageAndComponentProvider);
> -               componentPath = tryToGetComponentPath(
> pageAndComponentProvider);
> -               this.behaviorIndex = behaviorIndex;
> -               if (behaviorIndex != null && componentClass != null)
> -               {
> -                       try
> -                       {
> -                               behaviorClass = pageAndComponentProvider.
> getComponent()
> -                                       .getBehaviorById(behaviorIndex)
> -                                       .getClass();
> -                       }
> -                       catch (Exception ignore)
> -                       {
> -                               behaviorClass = null;
> -                       }
> -               }
> -               else
> -               {
> -                       behaviorClass = null;
> -               }
> -
> -               final Component formSubmitter =
> tryToGetFormSubmittingComponent(pageAndComponentProvider);
> -               if (formSubmitter != null)
> -               {
> -                       submittingComponentClass =
> formSubmitter.getClass();
> -                       submittingComponentPath = formSubmitter.
> getPageRelativePath();
> -               }
> -       }
> -
> -       private static Class<? extends IRequestableComponent>
> tryToGetComponentClass(
> -               IPageAndComponentProvider pageAndComponentProvider)
> -       {
> -               try
> -               {
> -                       return pageAndComponentProvider.
> getComponent().getClass();
> -               }
> -               catch (Exception e)
> -               {
> -                       // getComponent might fail if the page does not
> exist (ie session timeout)
> -                       return null;
> -               }
> -       }
> -
> -
> -       private static String tryToGetComponentPath(IPageAndComponentProvider
> pageAndComponentProvider)
> -       {
> -               try
> -               {
> -                       return pageAndComponentProvider.
> getComponentPath();
> -               }
> -               catch (Exception e)
> -               {
> -                       // getComponentPath might fail if the page does
> not exist (ie session timeout)
> -                       return null;
> -               }
> -       }
> -
> -       private static Component tryToGetFormSubmittingComponent(
> -               IPageAndComponentProvider pageAndComponentProvider)
> -       {
> -               try
> -               {
> -                       final IRequestableComponent component =
> pageAndComponentProvider.getComponent();
> -                       if (component instanceof Form)
> -                       {
> -                               final IFormSubmitter submitter =
> ((Form<?>)component).findSubmittingButton();
> -                               return submitter instanceof Component ?
> (Component)submitter : null;
> -                       }
> -                       return null;
> -               }
> -               catch (Exception e)
> -               {
> -                       // getComponent might fail if the page does not
> exist (ie session timeout)
> -                       return null;
> -               }
> -       }
> -
> -       /**
> -        * @return componentClass
> -        */
> -       public final Class<? extends IRequestableComponent>
> getComponentClass()
> -       {
> -               return componentClass;
> -       }
> -
> -       /**
> -        * @return componentPath
> -        */
> -       public final String getComponentPath()
> -       {
> -               return componentPath;
> -       }
> -
> -       /**
> -        * @return behaviorIndex
> -        */
> -       public final Integer getBehaviorIndex()
> -       {
> -               return behaviorIndex;
> -       }
> -
> -       /**
> -        * @return behaviorClass
> -        */
> -       public final Class<? extends Behavior> getBehaviorClass()
> -       {
> -               return behaviorClass;
> -       }
> -
> -       /**
> -        * @return submittingComponentClass
> -        */
> -       public Class<? extends IRequestableComponent>
> getSubmittingComponentClass()
> -       {
> -               return submittingComponentClass;
> -       }
> -
> -       /**
> -        * @return submittingComponentPath
> -        */
> -       public String getSubmittingComponentPath()
> -       {
> -               return submittingComponentPath;
> -       }
> -
> -       @Override
> -       public String toString()
> -       {
> -               StringBuilder sb = new StringBuilder(super.toString());
> -               sb.setCharAt(sb.length() - 1, ',');
> -               if (getComponentClass() != null)
> -               {
> -                       sb.append("componentClass=");
> -                       sb.append(getComponentClass().getName());
> -                       sb.append(',');
> -               }
> -               if (getComponentPath() != null)
> -               {
> -                       sb.append("componentPath=");
> -                       sb.append(getComponentPath());
> -                       sb.append(',');
> -               }
> -               sb.append("behaviorIndex=");
> -               sb.append(getBehaviorIndex());
> -               if (getBehaviorClass() != null)
> -               {
> -                       sb.append(",behaviorClass=");
> -                       sb.append(getBehaviorClass().getName());
> -               }
> -               if (getSubmittingComponentClass() != null)
> -               {
> -                       sb.append(",submittingComponentClass=");
> -                       sb.append(getSubmittingComponentClass().
> getName());
> -               }
> -               if (getSubmittingComponentPath() != null)
> -               {
> -                       sb.append(",submittingComponentPath=");
> -                       sb.append(getSubmittingComponentPath());
> -               }
> -               sb.append("}");
> -               return sb.toString();
> -       }
> -}
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 8342e4ef/wicket-core/src/main/java/org/apache/wicket/core/
> request/handler/logger/ListenerLogData.java
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/main/java/org/apache/wicket/core/
> request/handler/logger/ListenerLogData.java b/wicket-core/src/main/java/
> org/apache/wicket/core/request/handler/logger/ListenerLogData.java
> new file mode 100644
> index 0000000..d06fe69
> --- /dev/null
> +++ b/wicket-core/src/main/java/org/apache/wicket/core/
> request/handler/logger/ListenerLogData.java
> @@ -0,0 +1,214 @@
> +/*
> + * Licensed to the Apache Software Foundation (ASF) under one or more
> + * contributor license agreements.  See the NOTICE file distributed with
> + * this work for additional information regarding copyright ownership.
> + * The ASF licenses this file to You under the Apache License, Version 2.0
> + * (the "License"); you may not use this file except in compliance with
> + * the License.  You may obtain a copy of the License at
> + *
> + *      http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing, software
> + * distributed under the License is distributed on an "AS IS" BASIS,
> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
> implied.
> + * See the License for the specific language governing permissions and
> + * limitations under the License.
> + */
> +package org.apache.wicket.core.request.handler.logger;
> +
> +import org.apache.wicket.Component;
> +import org.apache.wicket.behavior.Behavior;
> +import org.apache.wicket.core.request.handler.IPageAndComponentProvider;
> +import org.apache.wicket.markup.html.form.Form;
> +import org.apache.wicket.markup.html.form.IFormSubmitter;
> +import org.apache.wicket.request.component.IRequestableComponent;
> +
> +/**
> + * Contains logging data for component/listener-interface request
> handlers.
> + *
> + * @author Emond Papegaaij
> + */
> +public class ListenerLogData extends PageLogData
> +{
> +       private static final long serialVersionUID = 1L;
> +
> +       private final Class<? extends IRequestableComponent>
> componentClass;
> +       private final String componentPath;
> +       private final Integer behaviorIndex;
> +       private Class<? extends Behavior> behaviorClass;
> +       private Class<? extends IRequestableComponent>
> submittingComponentClass;
> +       private String submittingComponentPath;
> +
> +       /**
> +        * Construct.
> +        *
> +        * @param pageAndComponentProvider
> +        * @param listenerInterface
> +        * @param behaviorIndex
> +        */
> +       public ListenerLogData(IPageAndComponentProvider
> pageAndComponentProvider, Integer behaviorIndex)
> +       {
> +               super(pageAndComponentProvider);
> +               componentClass = tryToGetComponentClass(
> pageAndComponentProvider);
> +               componentPath = tryToGetComponentPath(
> pageAndComponentProvider);
> +               this.behaviorIndex = behaviorIndex;
> +               if (behaviorIndex != null && componentClass != null)
> +               {
> +                       try
> +                       {
> +                               behaviorClass = pageAndComponentProvider.
> getComponent()
> +                                       .getBehaviorById(behaviorIndex)
> +                                       .getClass();
> +                       }
> +                       catch (Exception ignore)
> +                       {
> +                               behaviorClass = null;
> +                       }
> +               }
> +               else
> +               {
> +                       behaviorClass = null;
> +               }
> +
> +               final Component formSubmitter =
> tryToGetFormSubmittingComponent(pageAndComponentProvider);
> +               if (formSubmitter != null)
> +               {
> +                       submittingComponentClass =
> formSubmitter.getClass();
> +                       submittingComponentPath = formSubmitter.
> getPageRelativePath();
> +               }
> +       }
> +
> +       private static Class<? extends IRequestableComponent>
> tryToGetComponentClass(
> +               IPageAndComponentProvider pageAndComponentProvider)
> +       {
> +               try
> +               {
> +                       return pageAndComponentProvider.
> getComponent().getClass();
> +               }
> +               catch (Exception e)
> +               {
> +                       // getComponent might fail if the page does not
> exist (ie session timeout)
> +                       return null;
> +               }
> +       }
> +
> +
> +       private static String tryToGetComponentPath(IPageAndComponentProvider
> pageAndComponentProvider)
> +       {
> +               try
> +               {
> +                       return pageAndComponentProvider.
> getComponentPath();
> +               }
> +               catch (Exception e)
> +               {
> +                       // getComponentPath might fail if the page does
> not exist (ie session timeout)
> +                       return null;
> +               }
> +       }
> +
> +       private static Component tryToGetFormSubmittingComponent(
> +               IPageAndComponentProvider pageAndComponentProvider)
> +       {
> +               try
> +               {
> +                       final IRequestableComponent component =
> pageAndComponentProvider.getComponent();
> +                       if (component instanceof Form)
> +                       {
> +                               final IFormSubmitter submitter =
> ((Form<?>)component).findSubmittingButton();
> +                               return submitter instanceof Component ?
> (Component)submitter : null;
> +                       }
> +                       return null;
> +               }
> +               catch (Exception e)
> +               {
> +                       // getComponent might fail if the page does not
> exist (ie session timeout)
> +                       return null;
> +               }
> +       }
> +
> +       /**
> +        * @return componentClass
> +        */
> +       public final Class<? extends IRequestableComponent>
> getComponentClass()
> +       {
> +               return componentClass;
> +       }
> +
> +       /**
> +        * @return componentPath
> +        */
> +       public final String getComponentPath()
> +       {
> +               return componentPath;
> +       }
> +
> +       /**
> +        * @return behaviorIndex
> +        */
> +       public final Integer getBehaviorIndex()
> +       {
> +               return behaviorIndex;
> +       }
> +
> +       /**
> +        * @return behaviorClass
> +        */
> +       public final Class<? extends Behavior> getBehaviorClass()
> +       {
> +               return behaviorClass;
> +       }
> +
> +       /**
> +        * @return submittingComponentClass
> +        */
> +       public Class<? extends IRequestableComponent>
> getSubmittingComponentClass()
> +       {
> +               return submittingComponentClass;
> +       }
> +
> +       /**
> +        * @return submittingComponentPath
> +        */
> +       public String getSubmittingComponentPath()
> +       {
> +               return submittingComponentPath;
> +       }
> +
> +       @Override
> +       public String toString()
> +       {
> +               StringBuilder sb = new StringBuilder(super.toString());
> +               sb.setCharAt(sb.length() - 1, ',');
> +               if (getComponentClass() != null)
> +               {
> +                       sb.append("componentClass=");
> +                       sb.append(getComponentClass().getName());
> +                       sb.append(',');
> +               }
> +               if (getComponentPath() != null)
> +               {
> +                       sb.append("componentPath=");
> +                       sb.append(getComponentPath());
> +                       sb.append(',');
> +               }
> +               sb.append("behaviorIndex=");
> +               sb.append(getBehaviorIndex());
> +               if (getBehaviorClass() != null)
> +               {
> +                       sb.append(",behaviorClass=");
> +                       sb.append(getBehaviorClass().getName());
> +               }
> +               if (getSubmittingComponentClass() != null)
> +               {
> +                       sb.append(",submittingComponentClass=");
> +                       sb.append(getSubmittingComponentClass().
> getName());
> +               }
> +               if (getSubmittingComponentPath() != null)
> +               {
> +                       sb.append(",submittingComponentPath=");
> +                       sb.append(getSubmittingComponentPath());
> +               }
> +               sb.append("}");
> +               return sb.toString();
> +       }
> +}
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 8342e4ef/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/
> AbstractBookmarkableMapper.java
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/main/java/org/apache/wicket/core/
> request/mapper/AbstractBookmarkableMapper.java
> b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/
> AbstractBookmarkableMapper.java
> index cb372d8..ecb50a2 100644
> --- a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/
> AbstractBookmarkableMapper.java
> +++ b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/
> AbstractBookmarkableMapper.java
> @@ -23,7 +23,7 @@ import org.apache.wicket.IRequestListener;
>  import org.apache.wicket.core.request.handler.
> BookmarkableListenerInterfaceRequestHandler;
>  import org.apache.wicket.core.request.handler.
> BookmarkablePageRequestHandler;
>  import org.apache.wicket.core.request.handler.IPageRequestHandler;
> -import org.apache.wicket.core.request.handler.
> ListenerInterfaceRequestHandler;
> +import org.apache.wicket.core.request.handler.ListenerRequestHandler;
>  import org.apache.wicket.core.request.handler.PageAndComponentProvider;
>  import org.apache.wicket.core.request.handler.PageProvider;
>  import org.apache.wicket.core.request.handler.RenderPageRequestHandler;
> @@ -304,7 +304,7 @@ public abstract class AbstractBookmarkableMapper
> extends AbstractComponentMapper
>
>                 checkExpiration(provider, pageInfo);
>
> -               return new ListenerInterfaceRequestHandler(provider,
> componentInfo.getBehaviorId());
> +               return new ListenerRequestHandler(provider,
> componentInfo.getBehaviorId());
>         }
>
>         private void checkExpiration(PageProvider provider, PageInfo
> pageInfo)
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 8342e4ef/wicket-core/src/main/java/org/apache/wicket/core/
> request/mapper/MountedMapper.java
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/main/java/org/apache/wicket/core/
> request/mapper/MountedMapper.java b/wicket-core/src/main/java/
> org/apache/wicket/core/request/mapper/MountedMapper.java
> index 1b6aa28..f9edf11 100644
> --- a/wicket-core/src/main/java/org/apache/wicket/core/
> request/mapper/MountedMapper.java
> +++ b/wicket-core/src/main/java/org/apache/wicket/core/
> request/mapper/MountedMapper.java
> @@ -18,7 +18,7 @@ package org.apache.wicket.core.request.mapper;
>
>  import java.util.function.Supplier;
>
> -import org.apache.wicket.core.request.handler.
> ListenerInterfaceRequestHandler;
> +import org.apache.wicket.core.request.handler.ListenerRequestHandler;
>  import org.apache.wicket.request.IRequestHandler;
>  import org.apache.wicket.request.Request;
>  import org.apache.wicket.request.Url;
> @@ -158,10 +158,10 @@ public class MountedMapper extends
> AbstractBookmarkableMapper
>         {
>                 Url url = super.mapHandler(requestHandler);
>
> -               if (url == null && requestHandler instanceof
> ListenerInterfaceRequestHandler &&
> +               if (url == null && requestHandler instanceof
> ListenerRequestHandler &&
>                         getRecreateMountedPagesAfterExpiry())
>                 {
> -                       ListenerInterfaceRequestHandler handler = (
> ListenerInterfaceRequestHandler)requestHandler;
> +                       ListenerRequestHandler handler =
> (ListenerRequestHandler)requestHandler;
>                         IRequestablePage page = handler.getPage();
>                         if (checkPageInstance(page))
>                         {
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 8342e4ef/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/
> PageInstanceMapper.java
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/main/java/org/apache/wicket/core/
> request/mapper/PageInstanceMapper.java b/wicket-core/src/main/java/
> org/apache/wicket/core/request/mapper/PageInstanceMapper.java
> index e983131..f90ea87 100644
> --- a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/
> PageInstanceMapper.java
> +++ b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/
> PageInstanceMapper.java
> @@ -16,7 +16,7 @@
>   */
>  package org.apache.wicket.core.request.mapper;
>
> -import org.apache.wicket.core.request.handler.
> ListenerInterfaceRequestHandler;
> +import org.apache.wicket.core.request.handler.ListenerRequestHandler;
>  import org.apache.wicket.core.request.handler.PageAndComponentProvider;
>  import org.apache.wicket.core.request.handler.PageProvider;
>  import org.apache.wicket.core.request.handler.RenderPageRequestHandler;
> @@ -85,7 +85,7 @@ public class PageInstanceMapper extends
> AbstractComponentMapper
>
>                                         provider.setPageSource(
> getContext());
>
> -                                       return new
> ListenerInterfaceRequestHandler(provider, componentInfo.getBehaviorId());
> +                                       return new ListenerRequestHandler(provider,
> componentInfo.getBehaviorId());
>                                 }
>                         }
>                 }
> @@ -107,9 +107,9 @@ public class PageInstanceMapper extends
> AbstractComponentMapper
>                         PageInfo i = new PageInfo(page.getPageId());
>                         info = new PageComponentInfo(i, null);
>                 }
> -               else if (requestHandler instanceof
> ListenerInterfaceRequestHandler)
> +               else if (requestHandler instanceof ListenerRequestHandler)
>                 {
> -                       ListenerInterfaceRequestHandler handler = (
> ListenerInterfaceRequestHandler)requestHandler;
> +                       ListenerRequestHandler handler =
> (ListenerRequestHandler)requestHandler;
>                         IRequestablePage page = handler.getPage();
>                         String componentPath = handler.getComponentPath();
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 8342e4ef/wicket-core/src/main/java/org/apache/wicket/util/
> tester/BaseWicketTester.java
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
> b/wicket-core/src/main/java/org/apache/wicket/util/tester/
> BaseWicketTester.java
> index b5a15ec..0b30c92 100644
> --- a/wicket-core/src/main/java/org/apache/wicket/util/tester/
> BaseWicketTester.java
> +++ b/wicket-core/src/main/java/org/apache/wicket/util/tester/
> BaseWicketTester.java
> @@ -62,7 +62,7 @@ import org.apache.wicket.ajax.markup.
> html.form.AjaxSubmitLink;
>  import org.apache.wicket.behavior.AbstractAjaxBehavior;
>  import org.apache.wicket.core.request.handler.
> BookmarkablePageRequestHandler;
>  import org.apache.wicket.core.request.handler.IPageProvider;
> -import org.apache.wicket.core.request.handler.
> ListenerInterfaceRequestHandler;
> +import org.apache.wicket.core.request.handler.ListenerRequestHandler;
>  import org.apache.wicket.core.request.handler.PageAndComponentProvider;
>  import org.apache.wicket.core.request.handler.PageProvider;
>  import org.apache.wicket.core.request.handler.RenderPageRequestHandler;
> @@ -1093,7 +1093,7 @@ public class BaseWicketTester
>
>                 // there are two ways to do this. RequestCycle could be
> forced to call the handler
>                 // directly but constructing and parsing the URL increases
> the chance of triggering bugs
> -               IRequestHandler handler = new
> ListenerInterfaceRequestHandler(new PageAndComponentProvider(
> +               IRequestHandler handler = new ListenerRequestHandler(new
> PageAndComponentProvider(
>                         component.getPage(), component));
>
>                 Url url = urlFor(handler);
> @@ -1119,7 +1119,7 @@ public class BaseWicketTester
>
>                 // there are two ways to do this. RequestCycle could be
> forced to call the handler
>                 // directly but constructing and parsing the URL increases
> the chance of triggering bugs
> -               IRequestHandler handler = new
> ListenerInterfaceRequestHandler(new PageAndComponentProvider(
> +               IRequestHandler handler = new ListenerRequestHandler(new
> PageAndComponentProvider(
>                         component.getPage(), component));
>
>                 processRequest(handler);
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 8342e4ef/wicket-core/src/test/java/org/apache/wicket/
> BehaviorRequestTest.java
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/test/java/org/apache/wicket/BehaviorRequestTest.java
> b/wicket-core/src/test/java/org/apache/wicket/BehaviorRequestTest.java
> index 909ee23..1e5227c 100644
> --- a/wicket-core/src/test/java/org/apache/wicket/BehaviorRequestTest.java
> +++ b/wicket-core/src/test/java/org/apache/wicket/BehaviorRequestTest.java
> @@ -18,7 +18,7 @@ package org.apache.wicket;
>
>  import org.apache.wicket.behavior.Behavior;
>  import org.apache.wicket.core.request.handler.IPageAndComponentProvider;
> -import org.apache.wicket.core.request.handler.
> ListenerInterfaceRequestHandler;
> +import org.apache.wicket.core.request.handler.ListenerRequestHandler;
>  import org.apache.wicket.core.request.handler.
> ListenerInvocationNotAllowedException;
>  import org.apache.wicket.core.request.handler.PageAndComponentProvider;
>  import org.apache.wicket.markup.ComponentTag;
> @@ -83,7 +83,7 @@ public class BehaviorRequestTest extends WicketTestCase
>                 final int index = page.container.getBehaviorId(
> behaviorUnderTest);
>                 final IPageAndComponentProvider provider = new
> PageAndComponentProvider(page,
>                         page.container);
> -               final IRequestHandler handler = new
> ListenerInterfaceRequestHandler(provider, index);
> +               final IRequestHandler handler = new ListenerRequestHandler(provider,
> index);
>
>                 return tester.urlFor(handler).toString();
>         }
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 8342e4ef/wicket-core/src/test/java/org/apache/wicket/
> ComponentWithLazyModelCreationTest.java
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/test/java/org/apache/wicket/
> ComponentWithLazyModelCreationTest.java b/wicket-core/src/test/java/
> org/apache/wicket/ComponentWithLazyModelCreationTest.java
> index 59cd19e..9361351 100644
> --- a/wicket-core/src/test/java/org/apache/wicket/
> ComponentWithLazyModelCreationTest.java
> +++ b/wicket-core/src/test/java/org/apache/wicket/
> ComponentWithLazyModelCreationTest.java
> @@ -17,7 +17,7 @@
>  package org.apache.wicket;
>
>  import org.apache.wicket.behavior.Behavior;
> -import org.apache.wicket.core.request.handler.
> ListenerInterfaceRequestHandler;
> +import org.apache.wicket.core.request.handler.ListenerRequestHandler;
>  import org.apache.wicket.core.request.handler.PageAndComponentProvider;
>  import org.apache.wicket.markup.ComponentTag;
>  import org.apache.wicket.markup.IMarkupResourceStreamProvider;
> @@ -120,7 +120,7 @@ public class ComponentWithLazyModelCreationTest
> extends WicketTestCase
>                 {
>                         super.onComponentTag(component, tag);
>                         int index = component.getBehaviorId(this);
> -                       IRequestHandler handler = new
> ListenerInterfaceRequestHandler(
> +                       IRequestHandler handler = new
> ListenerRequestHandler(
>                                 new PageAndComponentProvider(component.getPage(),
> component), index);
>                         statefullUrl = component.getRequestCycle().
> mapUrlFor(handler).toString();
>                 }
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 8342e4ef/wicket-core/src/test/java/org/apache/wicket/core/request/handler/
> ListenerInterfaceRequestHandlerTest.java
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/test/java/org/apache/wicket/core/
> request/handler/ListenerInterfaceRequestHandlerTest.java
> b/wicket-core/src/test/java/org/apache/wicket/core/request/handler/
> ListenerInterfaceRequestHandlerTest.java
> deleted file mode 100644
> index d1c0592..0000000
> --- a/wicket-core/src/test/java/org/apache/wicket/core/request/handler/
> ListenerInterfaceRequestHandlerTest.java
> +++ /dev/null
> @@ -1,208 +0,0 @@
> -/*
> - * Licensed to the Apache Software Foundation (ASF) under one or more
> - * contributor license agreements.  See the NOTICE file distributed with
> - * this work for additional information regarding copyright ownership.
> - * The ASF licenses this file to You under the Apache License, Version 2.0
> - * (the "License"); you may not use this file except in compliance with
> - * the License.  You may obtain a copy of the License at
> - *
> - *      http://www.apache.org/licenses/LICENSE-2.0
> - *
> - * Unless required by applicable law or agreed to in writing, software
> - * distributed under the License is distributed on an "AS IS" BASIS,
> - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
> implied.
> - * See the License for the specific language governing permissions and
> - * limitations under the License.
> - */
> -package org.apache.wicket.core.request.handler;
> -
> -import static org.hamcrest.Matchers.is;
> -
> -import java.io.IOException;
> -import java.text.ParseException;
> -
> -import org.apache.wicket.MarkupContainer;
> -import org.apache.wicket.Page;
> -import org.apache.wicket.Session;
> -import org.apache.wicket.WicketRuntimeException;
> -import org.apache.wicket.ajax.AjaxRequestTarget;
> -import org.apache.wicket.ajax.markup.html.AjaxLink;
> -import org.apache.wicket.core.request.mapper.MountedMapper;
> -import org.apache.wicket.markup.IMarkupFragment;
> -import org.apache.wicket.markup.IMarkupResourceStreamProvider;
> -import org.apache.wicket.markup.Markup;
> -import org.apache.wicket.markup.html.WebPage;
> -import org.apache.wicket.markup.html.link.Link;
> -import org.apache.wicket.markup.html.link.StatelessLink;
> -import org.apache.wicket.request.Url;
> -import org.apache.wicket.request.mapper.parameter.PageParameters;
> -import org.apache.wicket.resource.DummyPage;
> -import org.apache.wicket.util.resource.IResourceStream;
> -import org.apache.wicket.util.resource.ResourceStreamNotFoundException;
> -import org.apache.wicket.util.resource.StringResourceStream;
> -import org.apache.wicket.util.tester.WicketTestCase;
> -import org.junit.Test;
> -
> -/**
> - * Tests for {@link ListenerInterfaceRequestHandler}
> - */
> -public class ListenerInterfaceRequestHandlerTest extends WicketTestCase
> -{
> -
> -       /**
> -        * WICKET-5466
> -        */
> -       @Test
> -       public void removedComponent()
> -       {
> -               // non-existing component on fresh page is ignored
> -               PageAndComponentProvider freshPage = new
> PageAndComponentProvider(DummyPage.class, null,
> -                       "foo");
> -               new ListenerInterfaceRequestHandle
> r(freshPage).respond(tester
> -                       .getRequestCycle());
> -
> -               // non-existing component on old page fails
> -               PageAndComponentProvider oldPage = new
> PageAndComponentProvider(new DummyPage(), "foo");
> -               try
> -               {
> -                       new ListenerInterfaceRequestHandler(oldPage)
> -                               .respond(tester.getRequestCycle());
> -                       fail();
> -               }
> -               catch (WicketRuntimeException ex)
> -               {
> -                       assertEquals("Component 'foo' has been removed
> from page.", ex.getMessage());
> -               }
> -       }
> -
> -       /**
> -        * https://issues.apache.org/jira/browse/WICKET-4116
> -        *
> -        * @throws Exception
> -        */
> -       @Test
> -       public void recreateThePageWhenListenereIn
> terfaceIsExecutedOnExpiredPage() throws Exception
> -       {
> -               tester.getApplication().mountPage("ajaxLink",
> AjaxLinkExpirePage.class);
> -               AjaxLinkExpirePage page = tester.startPage(
> AjaxLinkExpirePage.class);
> -
> -               int initialPageId = page.getPageId();
> -
> -               Url urlToAjaxLink = tester.urlFor(page.link);
> -               Session session = tester.getSession();
> -               session.clear();
> -
> -               // fire a request to the ajax link on the expired page
> -               executeAjaxUrlWithLastBaseUrl(urlToAjaxLink);
> -
> -               Page lastRenderedPage = tester.getLastRenderedPage();
> -               int lastRenderedPageId = lastRenderedPage.getPageId();
> -               assertTrue("A new page must be create ",
> lastRenderedPageId > initialPageId);
> -       }
> -
> -       private void executeAjaxUrlWithLastBaseUrl(Url url) throws
> IOException,
> -               ResourceStreamNotFoundException, ParseException
> -       {
> -               tester.getRequest().setUrl(url);
> -               tester.getRequest().addHeader("Wicket-Ajax-BaseURL",
> -                       tester.getWicketAjaxBaseUrlEncodedInL
> astResponse());
> -               tester.getRequest().addHeader("Wicket-Ajax", "true");
> -               tester.processRequest();
> -       }
> -
> -       /**
> -        * Test page for #recreateThePageWhenListenereIn
> terfaceIsExecutedOnExpiredPage()
> -        */
> -       public static class AjaxLinkExpirePage extends WebPage implements
> IMarkupResourceStreamProvider
> -       {
> -               private static final long serialVersionUID = 1L;
> -
> -               private AjaxLink<Void> link;
> -
> -               /**
> -                * Constructor.
> -                */
> -               public AjaxLinkExpirePage()
> -               {
> -                       add(link = new AjaxLink<Void>("test")
> -                       {
> -                               private static final long serialVersionUID
> = 1L;
> -
> -                               @Override
> -                               public void onClick(AjaxRequestTarget
> target)
> -                               {
> -                                       System.err.println("clicked");
> -                               }
> -                       });
> -               }
> -
> -               @Override
> -               public IResourceStream getMarkupResourceStream(MarkupContainer
> container,
> -                       Class<?> containerClass)
> -               {
> -
> -                       return new StringResourceStream(
> -                               "<html><body><a wicket:id='test'>Link</a></
> body></html>");
> -               }
> -
> -       }
> -
> -       /**
> -        * Testcase for WICKET-4185
> -        */
> -       @Test
> -       public void isPageInstanceCreatedOnClassLinks()
> -       {
> -               PageAndComponentProvider provider = new
> PageAndComponentProvider(Page.class, "link");
> -               ListenerInterfaceRequestHandler handler = new
> ListenerInterfaceRequestHandler(provider);
> -               assertFalse("Handler should not report a page instance is
> available ",
> -                       handler.isPageInstanceCreated());
> -       }
> -
> -       @Test
> -       public void skipListenerIfExpiredPage()
> -       {
> -               tester.getApplication().getRootRequestMapperAsCompound()
> .add(new MountedMapper("/segment", NotExpiredPage.class));
> -               tester.startPage(NotExpiredPage.class);
> -               tester.clickLink("statelessLink");
> -               NotExpiredPage page = (NotExpiredPage)tester.
> getLastRenderedPage();
> -               assertThat(page.invoked, is(true));
> -       }
> -
> -       public static class NotExpiredPage extends WebPage
> -       {
> -               public boolean invoked;
> -
> -               public NotExpiredPage(PageParameters pageParameters)
> -               {
> -                       super(pageParameters);
> -                       add(new StatelessLink<Object>("statelessLink")
> -                       {
> -                               public void onClick()
> -                               {
> -                                       invoked = true;
> -                               }
> -                       });
> -                       add(new Link<Object>("statefullLink")
> -                       {
> -                               public void onClick()
> -                               {
> -                               }
> -                       });
> -               }
> -
> -               @Override
> -               public IMarkupFragment getMarkup()
> -               {
> -                       return Markup.of(
> -                               "<html><body><a
> wicket:id=\"statelessLink\"></a><a wicket:id=\"statefullLink\"></
> a></body></html>");
> -               }
> -
> -               @Override
> -               protected void onBeforeRender()
> -               {
> -                       get("statefullLink").setVisible(false);
> -                       super.onBeforeRender();
> -               }
> -       }
> -}
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 8342e4ef/wicket-core/src/test/java/org/apache/wicket/core/request/handler/
> ListenerRequestHandlerTest.java
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/test/java/org/apache/wicket/core/
> request/handler/ListenerRequestHandlerTest.java
> b/wicket-core/src/test/java/org/apache/wicket/core/request/handler/
> ListenerRequestHandlerTest.java
> new file mode 100644
> index 0000000..b212c9c
> --- /dev/null
> +++ b/wicket-core/src/test/java/org/apache/wicket/core/request/handler/
> ListenerRequestHandlerTest.java
> @@ -0,0 +1,208 @@
> +/*
> + * Licensed to the Apache Software Foundation (ASF) under one or more
> + * contributor license agreements.  See the NOTICE file distributed with
> + * this work for additional information regarding copyright ownership.
> + * The ASF licenses this file to You under the Apache License, Version 2.0
> + * (the "License"); you may not use this file except in compliance with
> + * the License.  You may obtain a copy of the License at
> + *
> + *      http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing, software
> + * distributed under the License is distributed on an "AS IS" BASIS,
> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
> implied.
> + * See the License for the specific language governing permissions and
> + * limitations under the License.
> + */
> +package org.apache.wicket.core.request.handler;
> +
> +import static org.hamcrest.Matchers.is;
> +
> +import java.io.IOException;
> +import java.text.ParseException;
> +
> +import org.apache.wicket.MarkupContainer;
> +import org.apache.wicket.Page;
> +import org.apache.wicket.Session;
> +import org.apache.wicket.WicketRuntimeException;
> +import org.apache.wicket.ajax.AjaxRequestTarget;
> +import org.apache.wicket.ajax.markup.html.AjaxLink;
> +import org.apache.wicket.core.request.mapper.MountedMapper;
> +import org.apache.wicket.markup.IMarkupFragment;
> +import org.apache.wicket.markup.IMarkupResourceStreamProvider;
> +import org.apache.wicket.markup.Markup;
> +import org.apache.wicket.markup.html.WebPage;
> +import org.apache.wicket.markup.html.link.Link;
> +import org.apache.wicket.markup.html.link.StatelessLink;
> +import org.apache.wicket.request.Url;
> +import org.apache.wicket.request.mapper.parameter.PageParameters;
> +import org.apache.wicket.resource.DummyPage;
> +import org.apache.wicket.util.resource.IResourceStream;
> +import org.apache.wicket.util.resource.ResourceStreamNotFoundException;
> +import org.apache.wicket.util.resource.StringResourceStream;
> +import org.apache.wicket.util.tester.WicketTestCase;
> +import org.junit.Test;
> +
> +/**
> + * Tests for {@link ListenerRequestHandler}
> + */
> +public class ListenerRequestHandlerTest extends WicketTestCase
> +{
> +
> +       /**
> +        * WICKET-5466
> +        */
> +       @Test
> +       public void removedComponent()
> +       {
> +               // non-existing component on fresh page is ignored
> +               PageAndComponentProvider freshPage = new
> PageAndComponentProvider(DummyPage.class, null,
> +                       "foo");
> +               new ListenerRequestHandler(freshPage).respond(tester
> +                       .getRequestCycle());
> +
> +               // non-existing component on old page fails
> +               PageAndComponentProvider oldPage = new
> PageAndComponentProvider(new DummyPage(), "foo");
> +               try
> +               {
> +                       new ListenerRequestHandler(oldPage)
> +                               .respond(tester.getRequestCycle());
> +                       fail();
> +               }
> +               catch (WicketRuntimeException ex)
> +               {
> +                       assertEquals("Component 'foo' has been removed
> from page.", ex.getMessage());
> +               }
> +       }
> +
> +       /**
> +        * https://issues.apache.org/jira/browse/WICKET-4116
> +        *
> +        * @throws Exception
> +        */
> +       @Test
> +       public void recreateThePageWhenListenereIn
> terfaceIsExecutedOnExpiredPage() throws Exception
> +       {
> +               tester.getApplication().mountPage("ajaxLink",
> AjaxLinkExpirePage.class);
> +               AjaxLinkExpirePage page = tester.startPage(
> AjaxLinkExpirePage.class);
> +
> +               int initialPageId = page.getPageId();
> +
> +               Url urlToAjaxLink = tester.urlFor(page.link);
> +               Session session = tester.getSession();
> +               session.clear();
> +
> +               // fire a request to the ajax link on the expired page
> +               executeAjaxUrlWithLastBaseUrl(urlToAjaxLink);
> +
> +               Page lastRenderedPage = tester.getLastRenderedPage();
> +               int lastRenderedPageId = lastRenderedPage.getPageId();
> +               assertTrue("A new page must be create ",
> lastRenderedPageId > initialPageId);
> +       }
> +
> +       private void executeAjaxUrlWithLastBaseUrl(Url url) throws
> IOException,
> +               ResourceStreamNotFoundException, ParseException
> +       {
> +               tester.getRequest().setUrl(url);
> +               tester.getRequest().addHeader("Wicket-Ajax-BaseURL",
> +                       tester.getWicketAjaxBaseUrlEncodedInL
> astResponse());
> +               tester.getRequest().addHeader("Wicket-Ajax", "true");
> +               tester.processRequest();
> +       }
> +
> +       /**
> +        * Test page for #recreateThePageWhenListenereIn
> terfaceIsExecutedOnExpiredPage()
> +        */
> +       public static class AjaxLinkExpirePage extends WebPage implements
> IMarkupResourceStreamProvider
> +       {
> +               private static final long serialVersionUID = 1L;
> +
> +               private AjaxLink<Void> link;
> +
> +               /**
> +                * Constructor.
> +                */
> +               public AjaxLinkExpirePage()
> +               {
> +                       add(link = new AjaxLink<Void>("test")
> +                       {
> +                               private static final long serialVersionUID
> = 1L;
> +
> +                               @Override
> +                               public void onClick(AjaxRequestTarget
> target)
> +                               {
> +                                       System.err.println("clicked");
> +                               }
> +                       });
> +               }
> +
> +               @Override
> +               public IResourceStream getMarkupResourceStream(MarkupContainer
> container,
> +                       Class<?> containerClass)
> +               {
> +
> +                       return new StringResourceStream(
> +                               "<html><body><a wicket:id='test'>Link</a></
> body></html>");
> +               }
> +
> +       }
> +
> +       /**
> +        * Testcase for WICKET-4185
> +        */
> +       @Test
> +       public void isPageInstanceCreatedOnClassLinks()
> +       {
> +               PageAndComponentProvider provider = new
> PageAndComponentProvider(Page.class, "link");
> +               ListenerRequestHandler handler = new
> ListenerRequestHandler(provider);
> +               assertFalse("Handler should not report a page instance is
> available ",
> +                       handler.isPageInstanceCreated());
> +       }
> +
> +       @Test
> +       public void skipListenerIfExpiredPage()
> +       {
> +               tester.getApplication().getRootRequestMapperAsCompound()
> .add(new MountedMapper("/segment", NotExpiredPage.class));
> +               tester.startPage(NotExpiredPage.class);
> +               tester.clickLink("statelessLink");
> +               NotExpiredPage page = (NotExpiredPage)tester.
> getLastRenderedPage();
> +               assertThat(page.invoked, is(true));
> +       }
> +
> +       public static class NotExpiredPage extends WebPage
> +       {
> +               public boolean invoked;
> +
> +               public NotExpiredPage(PageParameters pageParameters)
> +               {
> +                       super(pageParameters);
> +                       add(new StatelessLink<Object>("statelessLink")
> +                       {
> +                               public void onClick()
> +                               {
> +                                       invoked = true;
> +                               }
> +                       });
> +                       add(new Link<Object>("statefullLink")
> +                       {
> +                               public void onClick()
> +                               {
> +                               }
> +                       });
> +               }
> +
> +               @Override
> +               public IMarkupFragment getMarkup()
> +               {
> +                       return Markup.of(
> +                               "<html><body><a
> wicket:id=\"statelessLink\"></a><a wicket:id=\"statefullLink\"></
> a></body></html>");
> +               }
> +
> +               @Override
> +               protected void onBeforeRender()
> +               {
> +                       get("statefullLink").setVisible(false);
> +                       super.onBeforeRender();
> +               }
> +       }
> +}
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 8342e4ef/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/
> BookmarkableMapperTest.java
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/test/java/org/apache/wicket/core/
> request/mapper/BookmarkableMapperTest.java b/wicket-core/src/test/java/
> org/apache/wicket/core/request/mapper/BookmarkableMapperTest.java
> index f4fc1aa..e22210b 100644
> --- a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/
> BookmarkableMapperTest.java
> +++ b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/
> BookmarkableMapperTest.java
> @@ -28,7 +28,7 @@ import org.apache.wicket.core.request.handler.
> BookmarkableListenerInterfaceReque
>  import org.apache.wicket.core.request.handler.
> BookmarkablePageRequestHandler;
>  import org.apache.wicket.core.request.handler.IPageProvider;
>  import org.apache.wicket.core.request.handler.IPageRequestHandler;
> -import org.apache.wicket.core.request.handler.
> ListenerInterfaceRequestHandler;
> +import org.apache.wicket.core.request.handler.ListenerRequestHandler;
>  import org.apache.wicket.core.request.handler.PageAndComponentProvider;
>  import org.apache.wicket.core.request.handler.PageProvider;
>  import org.apache.wicket.core.request.handler.RenderPageRequestHandler;
> @@ -177,9 +177,9 @@ public class BookmarkableMapperTest extends
> AbstractMapperTest
>                 Url url = Url.parse("wicket/bookmarkable/" +
> PAGE_CLASS_NAME + "?15--foo-bar");
>                 IRequestHandler handler = encoder.mapRequest(getRequest(
> url));
>
> -               assertThat(handler, instanceOf(
> ListenerInterfaceRequestHandler.class));
> +               assertThat(handler, instanceOf(
> ListenerRequestHandler.class));
>
> -               ListenerInterfaceRequestHandler h = (
> ListenerInterfaceRequestHandler)handler;
> +               ListenerRequestHandler h = (ListenerRequestHandler)
> handler;
>
>                 IRequestablePage page = h.getPage();
>                 checkPage(page, 15);
> @@ -198,8 +198,8 @@ public class BookmarkableMapperTest extends
> AbstractMapperTest
>                         + "/i1/i2?15--foo-bar&a=b&b=c");
>                 IRequestHandler handler = encoder.mapRequest(getRequest(
> url));
>
> -               assertThat(handler, instanceOf(
> ListenerInterfaceRequestHandler.class));
> -               ListenerInterfaceRequestHandler h = (
> ListenerInterfaceRequestHandler)handler;
> +               assertThat(handler, instanceOf(
> ListenerRequestHandler.class));
> +               ListenerRequestHandler h = (ListenerRequestHandler)
> handler;
>
>                 IRequestablePage page = h.getPage();
>                 checkPage(page, 15);
> @@ -222,9 +222,9 @@ public class BookmarkableMapperTest extends
> AbstractMapperTest
>                         + "?15-ILinkListener.4-foo-bar");
>                 IRequestHandler handler = encoder.mapRequest(getRequest(
> url));
>
> -               assertThat(handler, instanceOf(
> ListenerInterfaceRequestHandler.class));
> +               assertThat(handler, instanceOf(
> ListenerRequestHandler.class));
>
> -               ListenerInterfaceRequestHandler h = (
> ListenerInterfaceRequestHandler)handler;
> +               ListenerRequestHandler h = (ListenerRequestHandler)
> handler;
>
>                 IRequestablePage page = h.getPage();
>                 checkPage(page, 15);
> @@ -246,8 +246,8 @@ public class BookmarkableMapperTest extends
> AbstractMapperTest
>
>                 IRequestHandler handler = encoder.mapRequest(getRequest(
> url));
>
> -               assertThat(handler, instanceOf(
> ListenerInterfaceRequestHandler.class));
> -               ListenerInterfaceRequestHandler h = (
> ListenerInterfaceRequestHandler)handler;
> +               assertThat(handler, instanceOf(
> ListenerRequestHandler.class));
> +               ListenerRequestHandler h = (ListenerRequestHandler)
> handler;
>
>                 IRequestablePage page = h.getPage();
>                 assertEquals(page.getRenderCount(), 5);
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 8342e4ef/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/
> CryptoMapperTest.java
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/test/java/org/apache/wicket/core/
> request/mapper/CryptoMapperTest.java b/wicket-core/src/test/java/
> org/apache/wicket/core/request/mapper/CryptoMapperTest.java
> index 98696fd..f87dcc8 100644
> --- a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/
> CryptoMapperTest.java
> +++ b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/
> CryptoMapperTest.java
> @@ -22,7 +22,7 @@ import java.util.function.Supplier;
>
>  import org.apache.wicket.MockPage;
>  import org.apache.wicket.core.request.handler.
> BookmarkableListenerInterfaceRequestHandler;
> -import org.apache.wicket.core.request.handler.
> ListenerInterfaceRequestHandler;
> +import org.apache.wicket.core.request.handler.ListenerRequestHandler;
>  import org.apache.wicket.core.request.handler.PageAndComponentProvider;
>  import org.apache.wicket.core.request.handler.PageProvider;
>  import org.apache.wicket.core.request.handler.RenderPageRequestHandler;
> @@ -358,7 +358,7 @@ public class CryptoMapperTest extends
> AbstractMapperTest
>                 final String componentPath = "link";
>
>                 PageAndComponentProvider provider = new
> PageAndComponentProvider(Page1.class, componentPath);
> -               IRequestHandler requestHandler = new
> ListenerInterfaceRequestHandler(provider);
> +               IRequestHandler requestHandler = new
> ListenerRequestHandler(provider);
>
>                 Url plainUrl = mapper.getDelegateMapper().
> mapHandler(requestHandler);
>                 assertTrue(plainUrl.toString().startsWith(MOUNTED_URL));
> @@ -391,9 +391,9 @@ public class CryptoMapperTest extends
> AbstractMapperTest
>
>                 requestHandler = unwrapRequestHandlerDelegate(
> requestHandler);
>
> -               assertThat(requestHandler, instanceOf(
> ListenerInterfaceRequestHandler.class));
> +               assertThat(requestHandler, instanceOf(
> ListenerRequestHandler.class));
>
> -               ListenerInterfaceRequestHandler handler = (
> ListenerInterfaceRequestHandler) requestHandler;
> +               ListenerRequestHandler handler = (ListenerRequestHandler)
> requestHandler;
>                 assertEquals(componentPath, handler.getComponentPath());
>                 assertEquals(Page1.class, handler.getPageClass());
>
> @@ -407,9 +407,9 @@ public class CryptoMapperTest extends
> AbstractMapperTest
>
>                 requestHandler = unwrapRequestHandlerDelegate(
> requestHandler);
>
> -               assertThat(requestHandler, instanceOf(
> ListenerInterfaceRequestHandler.class));
> +               assertThat(requestHandler, instanceOf(
> ListenerRequestHandler.class));
>
> -               handler = (ListenerInterfaceRequestHandler)
> requestHandler;
> +               handler = (ListenerRequestHandler) requestHandler;
>                 assertEquals(componentPath, handler.getComponentPath());
>                 assertEquals(Page1.class, handler.getPageClass());
>         }
> @@ -603,7 +603,7 @@ public class CryptoMapperTest extends
> AbstractMapperTest
>                 MockPage page = new MockPage();
>                 IRequestableComponent c = page.get("foo:bar");
>                 PageAndComponentProvider provider = new
> PageAndComponentProvider(page, c);
> -               IRequestHandler handler = new
> ListenerInterfaceRequestHandler(provider);
> +               IRequestHandler handler = new ListenerRequestHandler(
> provider);
>
>                 Url url = mapper.mapHandler(handler);
>                 url.addQueryParameter("q", "foo");
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 8342e4ef/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/
> MountedMapperTest.java
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/test/java/org/apache/wicket/core/
> request/mapper/MountedMapperTest.java b/wicket-core/src/test/java/
> org/apache/wicket/core/request/mapper/MountedMapperTest.java
> index d92cc83..f19d866 100644
> --- a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/
> MountedMapperTest.java
> +++ b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/
> MountedMapperTest.java
> @@ -23,7 +23,7 @@ import org.apache.wicket.core.request.handler.
> BookmarkableListenerInterfaceReque
>  import org.apache.wicket.core.request.handler.
> BookmarkablePageRequestHandler;
>  import org.apache.wicket.core.request.handler.IPageProvider;
>  import org.apache.wicket.core.request.handler.IPageRequestHandler;
> -import org.apache.wicket.core.request.handler.
> ListenerInterfaceRequestHandler;
> +import org.apache.wicket.core.request.handler.ListenerRequestHandler;
>  import org.apache.wicket.core.request.handler.PageAndComponentProvider;
>  import org.apache.wicket.core.request.handler.PageProvider;
>  import org.apache.wicket.core.request.handler.RenderPageRequestHandler;
> @@ -210,9 +210,9 @@ public class MountedMapperTest extends
> AbstractMapperTest
>                 Url url = Url.parse("some/mount/path?15--foo-bar");
>                 IRequestHandler handler = encoder.mapRequest(getRequest(
> url));
>
> -               assertThat(handler, instanceOf(
> ListenerInterfaceRequestHandler.class));
> +               assertThat(handler, instanceOf(
> ListenerRequestHandler.class));
>
> -               ListenerInterfaceRequestHandler h = (
> ListenerInterfaceRequestHandler)handler;
> +               ListenerRequestHandler h = (ListenerRequestHandler)
> handler;
>
>                 IRequestablePage page = h.getPage();
>                 checkPage(page, 15);
> @@ -230,8 +230,8 @@ public class MountedMapperTest extends
> AbstractMapperTest
>                 Url url = Url.parse("some/mount/path/i1/
> i2?15--foo-bar&a=b&b=c");
>                 IRequestHandler handler = encoder.mapRequest(getRequest(
> url));
>
> -               assertThat(handler, instanceOf(
> ListenerInterfaceRequestHandler.class));
> -               ListenerInterfaceRequestHandler h = (
> ListenerInterfaceRequestHandler)handler;
> +               assertThat(handler, instanceOf(
> ListenerRequestHandler.class));
> +               ListenerRequestHandler h = (ListenerRequestHandler)
> handler;
>
>                 IRequestablePage page = h.getPage();
>                 checkPage(page, 15);
> @@ -253,9 +253,9 @@ public class MountedMapperTest extends
> AbstractMapperTest
>                 Url url = Url.parse("some/mount/path?
> param1=value1&15-.4-foo-bar");
>                 IRequestHandler handler = encoder.mapRequest(getRequest(
> url));
>
> -               assertThat(handler, instanceOf(
> ListenerInterfaceRequestHandler.class));
> +               assertThat(handler, instanceOf(
> ListenerRequestHandler.class));
>
> -               ListenerInterfaceRequestHandler h = (
> ListenerInterfaceRequestHandler)handler;
> +               ListenerRequestHandler h = (ListenerRequestHandler)
> handler;
>
>                 IRequestablePage page = h.getPage();
>                 checkPage(page, 15);
> @@ -298,9 +298,9 @@ public class MountedMapperTest extends
> AbstractMapperTest
>                 context.setNextPageRenderCount(5);
>                 IRequestHandler handler = encoder.mapRequest(getRequest(
> url));
>
> -               assertThat(handler, instanceOf(
> ListenerInterfaceRequestHandler.class));
> +               assertThat(handler, instanceOf(
> ListenerRequestHandler.class));
>
> -               ListenerInterfaceRequestHandler h = (
> ListenerInterfaceRequestHandler)handler;
> +               ListenerRequestHandler h = (ListenerRequestHandler)
> handler;
>
>                 IRequestablePage page = h.getPage();
>                 assertEquals(5, page.getRenderCount());
> @@ -329,9 +329,9 @@ public class MountedMapperTest extends
> AbstractMapperTest
>                 Url url = Url.parse("some/mount/path/i1/
> i2?-1.-foo-bar&a=b&b=c");
>                 IRequestHandler handler = encoder.mapRequest(getRequest(
> url));
>
> -               assertThat(handler, instanceOf(
> ListenerInterfaceRequestHandler.class));
> +               assertThat(handler, instanceOf(
> ListenerRequestHandler.class));
>
> -               ListenerInterfaceRequestHandler h = (
> ListenerInterfaceRequestHandler)handler;
> +               ListenerRequestHandler h = (ListenerRequestHandler)
> handler;
>                 IRequestablePage page = h.getPage();
>                 checkPage(page, 1);
>
> @@ -497,7 +497,7 @@ public class MountedMapperTest extends
> AbstractMapperTest
>                 IRequestableComponent c = page.get("foo:bar");
>
>                 PageAndComponentProvider provider = new
> PageAndComponentProvider(page, c);
> -               IRequestHandler handler = new
> ListenerInterfaceRequestHandler(provider);
> +               IRequestHandler handler = new ListenerRequestHandler(
> provider);
>
>                 Url url = encoder.mapHandler(handler);
>
> @@ -555,7 +555,7 @@ public class MountedMapperTest extends
> AbstractMapperTest
>                 IRequestableComponent c = page.get("foo:bar");
>
>                 PageAndComponentProvider provider = new
> PageAndComponentProvider(page, c);
> -               IRequestHandler handler = new
> ListenerInterfaceRequestHandler(provider, 4);
> +               IRequestHandler handler = new ListenerRequestHandler(provider,
> 4);
>
>                 Url url = encoder.mapHandler(handler);
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 8342e4ef/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/
> PackageMapperTest.java
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/test/java/org/apache/wicket/core/
> request/mapper/PackageMapperTest.java b/wicket-core/src/test/java/
> org/apache/wicket/core/request/mapper/PackageMapperTest.java
> index 6a620ad..b0bb221 100644
> --- a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/
> PackageMapperTest.java
> +++ b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/
> PackageMapperTest.java
> @@ -25,7 +25,7 @@ import org.apache.wicket.core.request.handler.
> BookmarkableListenerInterfaceReque
>  import org.apache.wicket.core.request.handler.
> BookmarkablePageRequestHandler;
>  import org.apache.wicket.core.request.handler.IPageProvider;
>  import org.apache.wicket.core.request.handler.IPageRequestHandler;
> -import org.apache.wicket.core.request.handler.
> ListenerInterfaceRequestHandler;
> +import org.apache.wicket.core.request.handler.ListenerRequestHandler;
>  import org.apache.wicket.core.request.handler.PageAndComponentProvider;
>  import org.apache.wicket.core.request.handler.PageProvider;
>  import org.apache.wicket.core.request.handler.RenderPageRequestHandler;
> @@ -243,9 +243,9 @@ public class PackageMapperTest extends
> AbstractMapperTest
>                 Url url = Url.parse(MOUNT_PATH + '/' + PAGE_CLASS_NAME +
> "?15--foo-bar");
>                 IRequestHandler handler = encoder.mapRequest(getRequest(
> url));
>
> -               assertThat(handler, instanceOf(
> ListenerInterfaceRequestHandler.class));
> +               assertThat(handler, instanceOf(
> ListenerRequestHandler.class));
>
> -               ListenerInterfaceRequestHandler h = (
> ListenerInterfaceRequestHandler)handler;
> +               ListenerRequestHandler h = (ListenerRequestHandler)
> handler;
>
>                 IRequestablePage page = h.getPage();
>                 checkPage(page, 15);
> @@ -263,8 +263,8 @@ public class PackageMapperTest extends
> AbstractMapperTest
>                 Url url = Url.parse(MOUNT_PATH + '/' + PAGE_CLASS_NAME +
> "/i1/i2?15--foo-bar&a=b&b=c");
>                 IRequestHandler handler = encoder.mapRequest(getRequest(
> url));
>
> -               assertThat(handler, instanceOf(
> ListenerInterfaceRequestHandler.class));
> -               ListenerInterfaceRequestHandler h = (
> ListenerInterfaceRequestHandler)handler;
> +               assertThat(handler, instanceOf(
> ListenerRequestHandler.class));
> +               ListenerRequestHandler h = (ListenerRequestHandler)
> handler;
>
>                 IRequestablePage page = h.getPage();
>                 checkPage(page, 15);
> @@ -286,9 +286,9 @@ public class PackageMapperTest extends
> AbstractMapperTest
>                 Url url = Url.parse(MOUNT_PATH + '/' + PAGE_CLASS_NAME +
> "?15-.4-foo-bar");
>                 IRequestHandler handler = encoder.mapRequest(getRequest(
> url));
>
> -               assertThat(handler, instanceOf(
> ListenerInterfaceRequestHandler.class));
> +               assertThat(handler, instanceOf(
> ListenerRequestHandler.class));
>
> -               ListenerInterfaceRequestHandler h = (
> ListenerInterfaceRequestHandler)handler;
> +               ListenerRequestHandler h = (ListenerRequestHandler)
> handler;
>
>                 IRequestablePage page = h.getPage();
>                 checkPage(page, 15);
> @@ -309,8 +309,8 @@ public class PackageMapperTest extends
> AbstractMapperTest
>
>                 IRequestHandler handler = encoder.mapRequest(getRequest(
> url));
>
> -               assertThat(handler, instanceOf(
> ListenerInterfaceRequestHandler.class));
> -               ListenerInterfaceRequestHandler h = (
> ListenerInterfaceRequestHandler)handler;
> +               assertThat(handler, instanceOf(
> ListenerRequestHandler.class));
> +               ListenerRequestHandler h = (ListenerRequestHandler)
> handler;
>
>                 IRequestablePage page = h.getPage();
>                 assertEquals(page.getRenderCount(), 5);
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 8342e4ef/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/
> PageInstanceMapperTest.java
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/test/java/org/apache/wicket/core/
> request/mapper/PageInstanceMapperTest.java b/wicket-core/src/test/java/
> org/apache/wicket/core/request/mapper/PageInstanceMapperTest.java
> index 9a2eaf0..2691070 100644
> --- a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/
> PageInstanceMapperTest.java
> +++ b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/
> PageInstanceMapperTest.java
> @@ -24,7 +24,7 @@ import java.util.Locale;
>  import org.apache.wicket.MockPage;
>  import org.apache.wicket.core.request.handler.IPageProvider;
>  import org.apache.wicket.core.request.handler.IPageRequestHandler;
> -import org.apache.wicket.core.request.handler.
> ListenerInterfaceRequestHandler;
> +import org.apache.wicket.core.request.handler.ListenerRequestHandler;
>  import org.apache.wicket.core.request.handler.PageAndComponentProvider;
>  import org.apache.wicket.core.request.handler.PageProvider;
>  import org.apache.wicket.core.request.handler.RenderPageRequestHandler;
> @@ -90,9 +90,9 @@ public class PageInstanceMapperTest extends
> AbstractMapperTest
>                 Url url = Url.parse("wicket/page?4--a-b-c");
>
>                 IRequestHandler handler = encoder.mapRequest(getRequest(
> url));
> -               assertThat(handler, instanceOf(
> ListenerInterfaceRequestHandler.class));
> +               assertThat(handler, instanceOf(
> ListenerRequestHandler.class));
>
> -               ListenerInterfaceRequestHandler h = (
> ListenerInterfaceRequestHandler)handler;
> +               ListenerRequestHandler h = (ListenerRequestHandler)
> handler;
>                 checkPage(h.getPage(), 4);
>                 assertEquals(h.getComponent().getPageRelativePath(),
> "a:b:c");
>                 assertNull(h.getBehaviorIndex());
> @@ -131,9 +131,9 @@ public class PageInstanceMapperTest extends
> AbstractMapperTest
>                 Url url = Url.parse("wicket/page?4-
> ILinkListener.5-a-b-c");
>
>                 IRequestHandler handler = encoder.mapRequest(getRequest(
> url));
> -               assertThat(handler, instanceOf(
> ListenerInterfaceRequestHandler.class));
> +               assertThat(handler, instanceOf(
> ListenerRequestHandler.class));
>
> -               ListenerInterfaceRequestHandler h = (
> ListenerInterfaceRequestHandler)handler;
> +               ListenerRequestHandler h = (ListenerRequestHandler)
> handler;
>                 checkPage(h.getPage(), 4);
>                 assertEquals(h.getComponent().getPageRelativePath(),
> "a:b:c");
>                 assertEquals((Object)5, h.getBehaviorIndex());
> @@ -150,9 +150,9 @@ public class PageInstanceMapperTest extends
> AbstractMapperTest
>                 context.setNextPageRenderCount(6);
>
>                 IRequestHandler handler = encoder.mapRequest(getRequest(
> url));
> -               assertThat(handler, instanceOf(
> ListenerInterfaceRequestHandler.class));
> +               assertThat(handler, instanceOf(
> ListenerRequestHandler.class));
>
> -               ListenerInterfaceRequestHandler h = (
> ListenerInterfaceRequestHandler)handler;
> +               ListenerRequestHandler h = (ListenerRequestHandler)
> handler;
>                 assertEquals(6, h.getPage().getRenderCount());
>         }
>
> @@ -287,7 +287,7 @@ public class PageInstanceMapperTest extends
> AbstractMapperTest
>                 IRequestableComponent c = page.get("a:b:c");
>
>                 PageAndComponentProvider provider = new
> PageAndComponentProvider(page, c);
> -               IRequestHandler handler = new
> ListenerInterfaceRequestHandler(provider);
> +               IRequestHandler handler = new ListenerRequestHandler(
> provider);
>
>                 Url url = encoder.mapHandler(handler);
>                 assertEquals("wicket/page?15-5.-a-b-c", url.toString());
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/
> 8342e4ef/wicket-examples/src/main/java/org/apache/wicket/
> examples/ajax/prototype/Index.java
> ----------------------------------------------------------------------
> diff --git a/wicket-examples/src/main/java/org/apache/wicket/
> examples/ajax/prototype/Index.java b/wicket-examples/src/main/
> java/org/apache/wicket/examples/ajax/prototype/Index.java
> index 2795eb5..c62ce4b 100644
> --- a/wicket-examples/src/main/java/org/apache/wicket/
> examples/ajax/prototype/Index.java
> +++ b/wicket-examples/src/main/java/org/apache/wicket/
> examples/ajax/prototype/Index.java
> @@ -17,7 +17,7 @@
>  package org.apache.wicket.examples.ajax.prototype;
>
>  import org.apache.wicket.core.request.handler.
> ComponentRenderingRequestHandler;
> -import org.apache.wicket.core.request.handler.
> ListenerInterfaceRequestHandler;
> +import org.apache.wicket.core.request.handler.ListenerRequestHandler;
>  import org.apache.wicket.core.request.handler.PageAndComponentProvider;
>  import org.apache.wicket.examples.WicketExamplePage;
>  import org.apache.wicket.markup.html.basic.Label;
> @@ -79,8 +79,7 @@ public class Index extends WicketExamplePage
>                         @Override
>                         protected String getOnClickScript(CharSequence url)
>                         {
> -                               IRequestHandler handler = new
> ListenerInterfaceRequestHandler(
> -                                       new PageAndComponentProvider(getPage(),
> this));
> +                               IRequestHandler handler = new
> ListenerRequestHandler(new PageAndComponentProvider(getPage(), this));
>                                 Url componentUrl =
> RequestCycle.get().mapUrlFor(handler);
>                                 componentUrl.addQueryParameter("anticache",
> Math.random());
>                                 return new AppendingStringBuffer("new
> Ajax.Updater('counter', '").append(
>
>