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 2016/03/23 13:06:14 UTC

[1/3] wicket git commit: always just call #onRequest() instead of individual interface methods

Repository: wicket
Updated Branches:
  refs/heads/request_listener_simplification [created] b8f9a87aa


always just call #onRequest() instead of individual interface methods


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

Branch: refs/heads/request_listener_simplification
Commit: 0a7a0dab634536b909c63ec11132de5c9102d6f5
Parents: 99df8cf
Author: Sven Meier <sv...@apache.org>
Authored: Sat Mar 19 09:47:35 2016 +0100
Committer: Sven Meier <sv...@apache.org>
Committed: Sat Mar 19 19:57:58 2016 +0100

----------------------------------------------------------------------
 .../org/apache/wicket/IRequestListener.java     |  5 ++
 .../org/apache/wicket/IResourceListener.java    |  5 --
 .../apache/wicket/RequestListenerInterface.java | 74 ++------------------
 .../wicket/behavior/IBehaviorListener.java      |  4 --
 .../logger/ListenerInterfaceLogData.java        | 12 ----
 .../wicket/markup/html/form/CheckBox.java       |  2 +-
 .../wicket/markup/html/form/CheckGroup.java     |  2 +-
 .../wicket/markup/html/form/DropDownChoice.java |  2 +-
 .../apache/wicket/markup/html/form/Form.java    |  2 +-
 .../markup/html/form/IFormSubmitListener.java   |  4 --
 .../markup/html/form/IOnChangeListener.java     |  5 --
 .../wicket/markup/html/form/ImageButton.java    |  2 +-
 .../wicket/markup/html/form/RadioChoice.java    |  2 +-
 .../wicket/markup/html/form/RadioGroup.java     |  2 +-
 .../apache/wicket/markup/html/image/Image.java  |  2 +-
 .../wicket/markup/html/link/ILinkListener.java  |  5 --
 .../wicket/markup/html/link/InlineFrame.java    |  2 +-
 .../apache/wicket/markup/html/link/Link.java    |  2 +-
 .../wicket/markup/html/link/ResourceLink.java   |  5 +-
 .../test/java/org/apache/wicket/RemoveTest.java |  2 +-
 .../html/form/upload/FileUploadErrorTest.java   |  3 +-
 21 files changed, 25 insertions(+), 119 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/0a7a0dab/wicket-core/src/main/java/org/apache/wicket/IRequestListener.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/IRequestListener.java b/wicket-core/src/main/java/org/apache/wicket/IRequestListener.java
index 84a5d12..350717f 100644
--- a/wicket-core/src/main/java/org/apache/wicket/IRequestListener.java
+++ b/wicket-core/src/main/java/org/apache/wicket/IRequestListener.java
@@ -33,4 +33,9 @@ import org.apache.wicket.util.io.IClusterable;
  */
 public interface IRequestListener extends IClusterable
 {
+	
+	/**
+	 * Called when a request to a behavior is received.
+	 */
+	void onRequest();
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/0a7a0dab/wicket-core/src/main/java/org/apache/wicket/IResourceListener.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/IResourceListener.java b/wicket-core/src/main/java/org/apache/wicket/IResourceListener.java
index 1ecb543..983594c 100644
--- a/wicket-core/src/main/java/org/apache/wicket/IResourceListener.java
+++ b/wicket-core/src/main/java/org/apache/wicket/IResourceListener.java
@@ -36,9 +36,4 @@ public interface IResourceListener extends IRequestListener
 	/** Resource listener interface object */
 	RequestListenerInterface INTERFACE = new RequestListenerInterface(
 		IResourceListener.class).setIncludeRenderCount(false).setRenderPageAfterInvocation(false);
-
-	/**
-	 * Called when a resource is requested.
-	 */
-	void onResourceRequested();
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/0a7a0dab/wicket-core/src/main/java/org/apache/wicket/RequestListenerInterface.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/RequestListenerInterface.java b/wicket-core/src/main/java/org/apache/wicket/RequestListenerInterface.java
index 0eeac52..82ee03d 100644
--- a/wicket-core/src/main/java/org/apache/wicket/RequestListenerInterface.java
+++ b/wicket-core/src/main/java/org/apache/wicket/RequestListenerInterface.java
@@ -59,9 +59,6 @@ public class RequestListenerInterface
 		return interfaces.get(interfaceName);
 	}
 
-	/** The listener interface method */
-	private Method method;
-
 	/** The name of this listener interface */
 	private final String name;
 
@@ -97,29 +94,6 @@ public class RequestListenerInterface
 				" must extend IRequestListener");
 		}
 
-		// Get interface methods
-		final Method[] methods = listenerInterfaceClass.getMethods();
-
-		// If there is only one method
-		if (methods.length == 1)
-		{
-			// and that method takes no parameters
-			if (methods[0].getParameterTypes().length == 0)
-			{
-				method = methods[0];
-			}
-			else
-			{
-				throw new IllegalArgumentException("Method " + methods[0] + " in interface " +
-					listenerInterfaceClass + " cannot take any arguments");
-			}
-		}
-		else
-		{
-			throw new IllegalArgumentException("Interface " + listenerInterfaceClass +
-				" can have only one method");
-		}
-
 		// Save short class name
 		name = Classes.simpleName(listenerInterfaceClass);
 
@@ -175,14 +149,6 @@ public class RequestListenerInterface
 	}
 
 	/**
-	 * @return The method for this request listener interface
-	 */
-	public final Method getMethod()
-	{
-		return method;
-	}
-
-	/**
 	 * @return The name of this request listener interface
 	 */
 	public final String getName()
@@ -204,7 +170,7 @@ public class RequestListenerInterface
 		// we are in Wicket core land
 		final Component component = (Component)rcomponent;
 
-		if (!component.canCallListenerInterface(method))
+		if (!component.canCallListenerInterface(null))
 		{
 			// just return so that we have a silent fail and just re-render the
 			// page
@@ -230,7 +196,7 @@ public class RequestListenerInterface
 		// we are in Wicket core land
 		final Component component = (Component)rcomponent;
 
-		if (!behavior.canCallListenerInterface(component, method))
+		if (!behavior.canCallListenerInterface(component, null))
 		{
 			log.warn("behavior not enabled; ignore call. Behavior {} at component {}", behavior,
 				component);
@@ -253,28 +219,7 @@ public class RequestListenerInterface
 			page.internalInitialize();
 		}
 
-		try
-		{
-			method.invoke(target);
-		}
-		catch (InvocationTargetException e)
-		{
-			if (e.getTargetException() instanceof ReplaceHandlerException ||
-				e.getTargetException() instanceof AuthorizationException ||
-				e.getTargetException() instanceof WicketRuntimeException)
-			{
-				throw (RuntimeException)e.getTargetException();
-			}
-			throw new WicketRuntimeException("Method " + method.getName() + " of " +
-				method.getDeclaringClass() + " targeted at " + target + " on component " +
-				component + " threw an exception", e);
-		}
-		catch (Exception e)
-		{
-			throw new WicketRuntimeException("Method " + method.getName() + " of " +
-				method.getDeclaringClass() + " targeted at " + target + " on component " +
-				component + " threw an exception", e);
-		}
+		((IRequestListener)target).onRequest();
 	}
 
 	/**
@@ -292,7 +237,7 @@ public class RequestListenerInterface
 	@Override
 	public String toString()
 	{
-		return "[RequestListenerInterface name=" + name + ", method=" + method + "]";
+		return "[RequestListenerInterface name=" + name + "]";
 	}
 
 
@@ -313,16 +258,7 @@ public class RequestListenerInterface
 		// Check that a different interface method with the same name has not
 		// already been registered
 		final RequestListenerInterface existingInterface = RequestListenerInterface.forName(requestListenerInterface.getName());
-		if (existingInterface != null)
-		{
-			if (existingInterface.getMethod().equals(requestListenerInterface.getMethod()) == false)
-			{
-				throw new IllegalStateException("Cannot register listener interface " +
-				requestListenerInterface +
-				" because it conflicts with the already registered interface " + existingInterface);
-			}
-		}
-		else
+		if (existingInterface == null)
 		{
 			// Save this interface method by the non-qualified class name
 			interfaces.put(requestListenerInterface.getName(), requestListenerInterface);

http://git-wip-us.apache.org/repos/asf/wicket/blob/0a7a0dab/wicket-core/src/main/java/org/apache/wicket/behavior/IBehaviorListener.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/behavior/IBehaviorListener.java b/wicket-core/src/main/java/org/apache/wicket/behavior/IBehaviorListener.java
index 3375e81..8b029d0 100644
--- a/wicket-core/src/main/java/org/apache/wicket/behavior/IBehaviorListener.java
+++ b/wicket-core/src/main/java/org/apache/wicket/behavior/IBehaviorListener.java
@@ -33,8 +33,4 @@ public interface IBehaviorListener extends IRequestListener
 	RequestListenerInterface INTERFACE = new RequestListenerInterface(
 		IBehaviorListener.class);
 
-	/**
-	 * Called when a request to a behavior is received.
-	 */
-	void onRequest();
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/0a7a0dab/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
index 8e73163..4a5ad40 100644
--- 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
@@ -39,7 +39,6 @@ public class ListenerInterfaceLogData extends PageLogData
 	private final Integer behaviorIndex;
 	private Class<? extends Behavior> behaviorClass;
 	private final String interfaceName;
-	private final String interfaceMethod;
 	private Class<? extends IRequestableComponent> submittingComponentClass;
 	private String submittingComponentPath;
 
@@ -75,7 +74,6 @@ public class ListenerInterfaceLogData extends PageLogData
 			behaviorClass = null;
 		}
 		interfaceName = listenerInterface.getName();
-		interfaceMethod = listenerInterface.getMethod().getName();
 		if (listenerInterface.getListenerInterfaceClass().equals(IFormSubmitListener.class))
 		{
 			final Component formSubmitter = tryToGetFormSubmittingComponent(pageAndComponentProvider);
@@ -176,14 +174,6 @@ public class ListenerInterfaceLogData extends PageLogData
 	}
 
 	/**
-	 * @return interfaceMethod
-	 */
-	public final String getInterfaceMethod()
-	{
-		return interfaceMethod;
-	}
-
-	/**
 	 * @return submittingComponentClass
 	 */
 	public Class<? extends IRequestableComponent> getSubmittingComponentClass()
@@ -225,8 +215,6 @@ public class ListenerInterfaceLogData extends PageLogData
 		}
 		sb.append(",interfaceName=");
 		sb.append(getInterfaceName());
-		sb.append(",interfaceMethod=");
-		sb.append(getInterfaceMethod());
 		if (getSubmittingComponentClass() != null)
 		{
 			sb.append(",submittingComponentClass=");

http://git-wip-us.apache.org/repos/asf/wicket/blob/0a7a0dab/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckBox.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckBox.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckBox.java
index 64d298f..180f191 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckBox.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckBox.java
@@ -78,7 +78,7 @@ public class CheckBox extends FormComponent<Boolean> implements IOnChangeListene
 	 * @see org.apache.wicket.markup.html.form.IOnChangeListener#onSelectionChanged()
 	 */
 	@Override
-	public void onSelectionChanged()
+	public void onRequest()
 	{
 		convertInput();
 		updateModel();

http://git-wip-us.apache.org/repos/asf/wicket/blob/0a7a0dab/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckGroup.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckGroup.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckGroup.java
index d7b6bf5..1e6d804 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckGroup.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckGroup.java
@@ -204,7 +204,7 @@ public class CheckGroup<T> extends FormComponent<Collection<T>> implements IOnCh
 	 * Called when a selection changes.
 	 */
 	@Override
-	public final void onSelectionChanged()
+	public final void onRequest()
 	{
 		convertInput();
 		updateModel();

http://git-wip-us.apache.org/repos/asf/wicket/blob/0a7a0dab/wicket-core/src/main/java/org/apache/wicket/markup/html/form/DropDownChoice.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/DropDownChoice.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/DropDownChoice.java
index bab85c5..ca03dfd 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/DropDownChoice.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/DropDownChoice.java
@@ -206,7 +206,7 @@ public class DropDownChoice<T> extends AbstractSingleSelectChoice<T> implements
 	 * Called when a selection changes.
 	 */
 	@Override
-	public final void onSelectionChanged()
+	public final void onRequest()
 	{
 		convertInput();
 		updateModel();

http://git-wip-us.apache.org/repos/asf/wicket/blob/0a7a0dab/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java
index fd9279d..efa7137 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java
@@ -682,7 +682,7 @@ public class Form<T> extends WebMarkupContainer
 	 * @see #onFormSubmitted(IFormSubmitter)
 	 */
 	@Override
-	public final void onFormSubmitted()
+	public final void onRequest()
 	{
 		// check methods match
 		if (getRequest().getContainerRequest() instanceof HttpServletRequest)

http://git-wip-us.apache.org/repos/asf/wicket/blob/0a7a0dab/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IFormSubmitListener.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IFormSubmitListener.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IFormSubmitListener.java
index 0564760..3dfff96 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IFormSubmitListener.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IFormSubmitListener.java
@@ -30,8 +30,4 @@ public interface IFormSubmitListener extends IRequestListener
 	RequestListenerInterface INTERFACE = new RequestListenerInterface(
 		IFormSubmitListener.class);
 
-	/**
-	 * Called when a form is submitted
-	 */
-	void onFormSubmitted();
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/0a7a0dab/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IOnChangeListener.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IOnChangeListener.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IOnChangeListener.java
index ef9673f..964c531 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IOnChangeListener.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IOnChangeListener.java
@@ -32,9 +32,4 @@ public interface IOnChangeListener extends IRequestListener
 	/** Listener interface */
 	RequestListenerInterface INTERFACE = new RequestListenerInterface(
 		IOnChangeListener.class);
-
-	/**
-	 * Called when a new option is selected.
-	 */
-	void onSelectionChanged();
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/0a7a0dab/wicket-core/src/main/java/org/apache/wicket/markup/html/form/ImageButton.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/ImageButton.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/ImageButton.java
index 707f667..978d138 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/ImageButton.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/ImageButton.java
@@ -131,7 +131,7 @@ public class ImageButton extends Button implements IResourceListener
 	 * @see org.apache.wicket.IResourceListener#onResourceRequested()
 	 */
 	@Override
-	public void onResourceRequested()
+	public void onRequest()
 	{
 		localizedImageResource.onResourceRequested(null);
 	}

http://git-wip-us.apache.org/repos/asf/wicket/blob/0a7a0dab/wicket-core/src/main/java/org/apache/wicket/markup/html/form/RadioChoice.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/RadioChoice.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/RadioChoice.java
index a2d3551..e8af55e 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/RadioChoice.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/RadioChoice.java
@@ -248,7 +248,7 @@ public class RadioChoice<T> extends AbstractSingleSelectChoice<T> implements IOn
 	 * @see org.apache.wicket.markup.html.form.IOnChangeListener#onSelectionChanged()
 	 */
 	@Override
-	public void onSelectionChanged()
+	public void onRequest()
 	{
 		convertInput();
 		updateModel();

http://git-wip-us.apache.org/repos/asf/wicket/blob/0a7a0dab/wicket-core/src/main/java/org/apache/wicket/markup/html/form/RadioGroup.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/RadioGroup.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/RadioGroup.java
index 38361e2..e4f142e 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/RadioGroup.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/RadioGroup.java
@@ -167,7 +167,7 @@ public class RadioGroup<T> extends FormComponent<T> implements IOnChangeListener
 	 * Called when a selection changes.
 	 */
 	@Override
-	public final void onSelectionChanged()
+	public final void onRequest()
 	{
 		convertInput();
 		updateModel();

http://git-wip-us.apache.org/repos/asf/wicket/blob/0a7a0dab/wicket-core/src/main/java/org/apache/wicket/markup/html/image/Image.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/image/Image.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/image/Image.java
index 19f4f7a..1b9622c 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/image/Image.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/image/Image.java
@@ -214,7 +214,7 @@ public class Image extends WebComponent implements IResourceListener
 	 * @see org.apache.wicket.IResourceListener#onResourceRequested()
 	 */
 	@Override
-	public void onResourceRequested()
+	public void onRequest()
 	{
 		localizedImageResource.onResourceRequested(null);
 		for (LocalizedImageResource localizedImageResource : localizedImageResources)

http://git-wip-us.apache.org/repos/asf/wicket/blob/0a7a0dab/wicket-core/src/main/java/org/apache/wicket/markup/html/link/ILinkListener.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/ILinkListener.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/ILinkListener.java
index 0d2f7a4..c2d37f1 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/ILinkListener.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/ILinkListener.java
@@ -29,9 +29,4 @@ public interface ILinkListener extends IRequestListener
 	/** Listener interface */
 	RequestListenerInterface INTERFACE = new RequestListenerInterface(
 		ILinkListener.class);
-
-	/**
-	 * Called when a link is clicked.
-	 */
-	void onLinkClicked();
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/0a7a0dab/wicket-core/src/main/java/org/apache/wicket/markup/html/link/InlineFrame.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/InlineFrame.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/InlineFrame.java
index a2e58c7..566bdae 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/InlineFrame.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/InlineFrame.java
@@ -150,7 +150,7 @@ public class InlineFrame extends WebMarkupContainer implements ILinkListener
 	 * @see org.apache.wicket.markup.html.link.ILinkListener#onLinkClicked()
 	 */
 	@Override
-	public final void onLinkClicked()
+	public final void onRequest()
 	{
 		setResponsePage(pageProvider.getPageInstance());
 	}

http://git-wip-us.apache.org/repos/asf/wicket/blob/0a7a0dab/wicket-core/src/main/java/org/apache/wicket/markup/html/link/Link.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/Link.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/Link.java
index 6259618..b5263fe 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/Link.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/Link.java
@@ -191,7 +191,7 @@ public abstract class Link<T> extends AbstractLink implements ILinkListener, IGe
 	 * @see ILinkListener
 	 */
 	@Override
-	public final void onLinkClicked()
+	public void onRequest()
 	{
 		// Invoke subclass handler
 		onClick();

http://git-wip-us.apache.org/repos/asf/wicket/blob/0a7a0dab/wicket-core/src/main/java/org/apache/wicket/markup/html/link/ResourceLink.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/ResourceLink.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/ResourceLink.java
index 220bc05..b8bbff4 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/ResourceLink.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/ResourceLink.java
@@ -107,13 +107,14 @@ public class ResourceLink<T> extends Link<T> implements IResourceListener
 	 * @see org.apache.wicket.IResourceListener#onResourceRequested()
 	 */
 	@Override
-	public final void onResourceRequested()
+	public final void onRequest()
 	{
 
 		Attributes a = new Attributes(RequestCycle.get().getRequest(), RequestCycle.get()
 			.getResponse(), null);
 		resource.respond(a);
-		onLinkClicked();
+		
+		super.onRequest();
 	}
 
 	/**

http://git-wip-us.apache.org/repos/asf/wicket/blob/0a7a0dab/wicket-core/src/test/java/org/apache/wicket/RemoveTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/RemoveTest.java b/wicket-core/src/test/java/org/apache/wicket/RemoveTest.java
index 7dda0a2..6ab6364 100644
--- a/wicket-core/src/test/java/org/apache/wicket/RemoveTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/RemoveTest.java
@@ -61,7 +61,7 @@ public class RemoveTest extends WicketTestCase
 			tester.clickLink(PATH);
 			fail("Missing Exception");
 		}
-		catch (WicketRuntimeException wre)
+		catch (IllegalStateException wre)
 		{
 			// do nothing.
 			// This exception was expected.

http://git-wip-us.apache.org/repos/asf/wicket/blob/0a7a0dab/wicket-core/src/test/java/org/apache/wicket/markup/html/form/upload/FileUploadErrorTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/upload/FileUploadErrorTest.java b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/upload/FileUploadErrorTest.java
index 61f9f33..a3d47c7 100644
--- a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/upload/FileUploadErrorTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/upload/FileUploadErrorTest.java
@@ -125,9 +125,8 @@ public class FileUploadErrorTest extends WicketTestCase
 			formTester.submit();
 			fail("Value not succesfully submitted.");
 		}
-		catch (WicketRuntimeException rex)
+		catch (RuntimeException ex)
 		{
-			Throwable ex = rex.getCause().getCause();
 			assertEquals("Special value: " + FileUploadError.THIS_VALUE_SHOULD_THROW_EXCEPTION,
 				ex.getMessage());
 		}


Re: [1/3] wicket git commit: always just call #onRequest() instead of individual interface methods

Posted by Sven Meier <sv...@meiers.net>.
Hi Martin,

many thanks for your feedback.

>I think org.apache.wicket.Component#canCallListenerInterface() should not
>receive a Method as parameter anymore, since it could be just one method

the method was called with null in some places previously. Yes, it does fit to remove the parameter now.

>Same for Behavior.

Dito.

> I think we should preserve #onSelectionChanged()
> #onSelectionChanged() is more meaningful and overridden in many apps.
> ...
> Here #onSelectionChanged() is final!
> Does it make sense to keep its current body in #onRequest() (again final)
> and then call overridable #onSelectionChanged() ?

Actually #onSelectionChanged() was marked final in 3 of 5 cases, #onSelectionChanged(Boolean) was the actual method to override.
So I think it's ok to drop the parameter-less method.

I'll continue working on the test.

Regards
Sven


Re: [1/3] wicket git commit: always just call #onRequest() instead of individual interface methods

Posted by Martin Grigorov <mg...@apache.org>.
Hi Sven,


On Wed, Mar 23, 2016 at 1:06 PM, <sv...@apache.org> wrote:

> Repository: wicket
> Updated Branches:
>   refs/heads/request_listener_simplification [created] b8f9a87aa
>
>
> always just call #onRequest() instead of individual interface methods
>
>
> Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
> Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/0a7a0dab
> Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/0a7a0dab
> Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/0a7a0dab
>
> Branch: refs/heads/request_listener_simplification
> Commit: 0a7a0dab634536b909c63ec11132de5c9102d6f5
> Parents: 99df8cf
> Author: Sven Meier <sv...@apache.org>
> Authored: Sat Mar 19 09:47:35 2016 +0100
> Committer: Sven Meier <sv...@apache.org>
> Committed: Sat Mar 19 19:57:58 2016 +0100
>
> ----------------------------------------------------------------------
>  .../org/apache/wicket/IRequestListener.java     |  5 ++
>  .../org/apache/wicket/IResourceListener.java    |  5 --
>  .../apache/wicket/RequestListenerInterface.java | 74 ++------------------
>  .../wicket/behavior/IBehaviorListener.java      |  4 --
>  .../logger/ListenerInterfaceLogData.java        | 12 ----
>  .../wicket/markup/html/form/CheckBox.java       |  2 +-
>  .../wicket/markup/html/form/CheckGroup.java     |  2 +-
>  .../wicket/markup/html/form/DropDownChoice.java |  2 +-
>  .../apache/wicket/markup/html/form/Form.java    |  2 +-
>  .../markup/html/form/IFormSubmitListener.java   |  4 --
>  .../markup/html/form/IOnChangeListener.java     |  5 --
>  .../wicket/markup/html/form/ImageButton.java    |  2 +-
>  .../wicket/markup/html/form/RadioChoice.java    |  2 +-
>  .../wicket/markup/html/form/RadioGroup.java     |  2 +-
>  .../apache/wicket/markup/html/image/Image.java  |  2 +-
>  .../wicket/markup/html/link/ILinkListener.java  |  5 --
>  .../wicket/markup/html/link/InlineFrame.java    |  2 +-
>  .../apache/wicket/markup/html/link/Link.java    |  2 +-
>  .../wicket/markup/html/link/ResourceLink.java   |  5 +-
>  .../test/java/org/apache/wicket/RemoveTest.java |  2 +-
>  .../html/form/upload/FileUploadErrorTest.java   |  3 +-
>  21 files changed, 25 insertions(+), 119 deletions(-)
> ----------------------------------------------------------------------
>
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/0a7a0dab/wicket-core/src/main/java/org/apache/wicket/IRequestListener.java
> ----------------------------------------------------------------------
> diff --git
> a/wicket-core/src/main/java/org/apache/wicket/IRequestListener.java
> b/wicket-core/src/main/java/org/apache/wicket/IRequestListener.java
> index 84a5d12..350717f 100644
> --- a/wicket-core/src/main/java/org/apache/wicket/IRequestListener.java
> +++ b/wicket-core/src/main/java/org/apache/wicket/IRequestListener.java
> @@ -33,4 +33,9 @@ import org.apache.wicket.util.io.IClusterable;
>   */
>  public interface IRequestListener extends IClusterable
>  {
> +
> +       /**
> +        * Called when a request to a behavior is received.
> +        */
> +       void onRequest();
>  }
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/0a7a0dab/wicket-core/src/main/java/org/apache/wicket/IResourceListener.java
> ----------------------------------------------------------------------
> diff --git
> a/wicket-core/src/main/java/org/apache/wicket/IResourceListener.java
> b/wicket-core/src/main/java/org/apache/wicket/IResourceListener.java
> index 1ecb543..983594c 100644
> --- a/wicket-core/src/main/java/org/apache/wicket/IResourceListener.java
> +++ b/wicket-core/src/main/java/org/apache/wicket/IResourceListener.java
> @@ -36,9 +36,4 @@ public interface IResourceListener extends
> IRequestListener
>         /** Resource listener interface object */
>         RequestListenerInterface INTERFACE = new RequestListenerInterface(
>
> IResourceListener.class).setIncludeRenderCount(false).setRenderPageAfterInvocation(false);
> -
> -       /**
> -        * Called when a resource is requested.
> -        */
> -       void onResourceRequested();
>  }
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/0a7a0dab/wicket-core/src/main/java/org/apache/wicket/RequestListenerInterface.java
> ----------------------------------------------------------------------
> diff --git
> a/wicket-core/src/main/java/org/apache/wicket/RequestListenerInterface.java
> b/wicket-core/src/main/java/org/apache/wicket/RequestListenerInterface.java
> index 0eeac52..82ee03d 100644
> ---
> a/wicket-core/src/main/java/org/apache/wicket/RequestListenerInterface.java
> +++
> b/wicket-core/src/main/java/org/apache/wicket/RequestListenerInterface.java
> @@ -59,9 +59,6 @@ public class RequestListenerInterface
>                 return interfaces.get(interfaceName);
>         }
>
> -       /** The listener interface method */
> -       private Method method;
> -
>         /** The name of this listener interface */
>         private final String name;
>
> @@ -97,29 +94,6 @@ public class RequestListenerInterface
>                                 " must extend IRequestListener");
>                 }
>
> -               // Get interface methods
> -               final Method[] methods =
> listenerInterfaceClass.getMethods();
> -
> -               // If there is only one method
> -               if (methods.length == 1)
> -               {
> -                       // and that method takes no parameters
> -                       if (methods[0].getParameterTypes().length == 0)
> -                       {
> -                               method = methods[0];
> -                       }
> -                       else
> -                       {
> -                               throw new IllegalArgumentException("Method
> " + methods[0] + " in interface " +
> -                                       listenerInterfaceClass + " cannot
> take any arguments");
> -                       }
> -               }
> -               else
> -               {
> -                       throw new IllegalArgumentException("Interface " +
> listenerInterfaceClass +
> -                               " can have only one method");
> -               }
> -
>                 // Save short class name
>                 name = Classes.simpleName(listenerInterfaceClass);
>
> @@ -175,14 +149,6 @@ public class RequestListenerInterface
>         }
>
>         /**
> -        * @return The method for this request listener interface
> -        */
> -       public final Method getMethod()
> -       {
> -               return method;
> -       }
> -
> -       /**
>          * @return The name of this request listener interface
>          */
>         public final String getName()
> @@ -204,7 +170,7 @@ public class RequestListenerInterface
>                 // we are in Wicket core land
>                 final Component component = (Component)rcomponent;
>
> -               if (!component.canCallListenerInterface(method))
> +               if (!component.canCallListenerInterface(null))
>

I think org.apache.wicket.Component#canCallListenerInterface() should not
receive a Method as parameter anymore, since it could be just one method -
#onRequest()


>                 {
>                         // just return so that we have a silent fail and
> just re-render the
>                         // page
> @@ -230,7 +196,7 @@ public class RequestListenerInterface
>                 // we are in Wicket core land
>                 final Component component = (Component)rcomponent;
>
> -               if (!behavior.canCallListenerInterface(component, method))
> +               if (!behavior.canCallListenerInterface(component, null))
>

Same for Behavior.


>                 {
>                         log.warn("behavior not enabled; ignore call.
> Behavior {} at component {}", behavior,
>                                 component);
> @@ -253,28 +219,7 @@ public class RequestListenerInterface
>                         page.internalInitialize();
>                 }
>
> -               try
> -               {
> -                       method.invoke(target);
> -               }
> -               catch (InvocationTargetException e)
> -               {
> -                       if (e.getTargetException() instanceof
> ReplaceHandlerException ||
> -                               e.getTargetException() instanceof
> AuthorizationException ||
> -                               e.getTargetException() instanceof
> WicketRuntimeException)
> -                       {
> -                               throw
> (RuntimeException)e.getTargetException();
> -                       }
> -                       throw new WicketRuntimeException("Method " +
> method.getName() + " of " +
> -                               method.getDeclaringClass() + " targeted at
> " + target + " on component " +
> -                               component + " threw an exception", e);
> -               }
> -               catch (Exception e)
> -               {
> -                       throw new WicketRuntimeException("Method " +
> method.getName() + " of " +
> -                               method.getDeclaringClass() + " targeted at
> " + target + " on component " +
> -                               component + " threw an exception", e);
> -               }
> +               ((IRequestListener)target).onRequest();
>         }
>
>         /**
> @@ -292,7 +237,7 @@ public class RequestListenerInterface
>         @Override
>         public String toString()
>         {
> -               return "[RequestListenerInterface name=" + name + ",
> method=" + method + "]";
> +               return "[RequestListenerInterface name=" + name + "]";
>         }
>
>
> @@ -313,16 +258,7 @@ public class RequestListenerInterface
>                 // Check that a different interface method with the same
> name has not
>                 // already been registered
>                 final RequestListenerInterface existingInterface =
> RequestListenerInterface.forName(requestListenerInterface.getName());
> -               if (existingInterface != null)
> -               {
> -                       if
> (existingInterface.getMethod().equals(requestListenerInterface.getMethod())
> == false)
> -                       {
> -                               throw new IllegalStateException("Cannot
> register listener interface " +
> -                               requestListenerInterface +
> -                               " because it conflicts with the already
> registered interface " + existingInterface);
> -                       }
> -               }
> -               else
> +               if (existingInterface == null)
>                 {
>                         // Save this interface method by the non-qualified
> class name
>                         interfaces.put(requestListenerInterface.getName(),
> requestListenerInterface);
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/0a7a0dab/wicket-core/src/main/java/org/apache/wicket/behavior/IBehaviorListener.java
> ----------------------------------------------------------------------
> diff --git
> a/wicket-core/src/main/java/org/apache/wicket/behavior/IBehaviorListener.java
> b/wicket-core/src/main/java/org/apache/wicket/behavior/IBehaviorListener.java
> index 3375e81..8b029d0 100644
> ---
> a/wicket-core/src/main/java/org/apache/wicket/behavior/IBehaviorListener.java
> +++
> b/wicket-core/src/main/java/org/apache/wicket/behavior/IBehaviorListener.java
> @@ -33,8 +33,4 @@ public interface IBehaviorListener extends
> IRequestListener
>         RequestListenerInterface INTERFACE = new RequestListenerInterface(
>                 IBehaviorListener.class);
>
> -       /**
> -        * Called when a request to a behavior is received.
> -        */
> -       void onRequest();
>  }
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/0a7a0dab/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
> index 8e73163..4a5ad40 100644
> ---
> 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
> @@ -39,7 +39,6 @@ public class ListenerInterfaceLogData extends PageLogData
>         private final Integer behaviorIndex;
>         private Class<? extends Behavior> behaviorClass;
>         private final String interfaceName;
> -       private final String interfaceMethod;
>         private Class<? extends IRequestableComponent>
> submittingComponentClass;
>         private String submittingComponentPath;
>
> @@ -75,7 +74,6 @@ public class ListenerInterfaceLogData extends PageLogData
>                         behaviorClass = null;
>                 }
>                 interfaceName = listenerInterface.getName();
> -               interfaceMethod = listenerInterface.getMethod().getName();
>                 if
> (listenerInterface.getListenerInterfaceClass().equals(IFormSubmitListener.class))
>                 {
>                         final Component formSubmitter =
> tryToGetFormSubmittingComponent(pageAndComponentProvider);
> @@ -176,14 +174,6 @@ public class ListenerInterfaceLogData extends
> PageLogData
>         }
>
>         /**
> -        * @return interfaceMethod
> -        */
> -       public final String getInterfaceMethod()
> -       {
> -               return interfaceMethod;
> -       }
> -
> -       /**
>          * @return submittingComponentClass
>          */
>         public Class<? extends IRequestableComponent>
> getSubmittingComponentClass()
> @@ -225,8 +215,6 @@ public class ListenerInterfaceLogData extends
> PageLogData
>                 }
>                 sb.append(",interfaceName=");
>                 sb.append(getInterfaceName());
> -               sb.append(",interfaceMethod=");
> -               sb.append(getInterfaceMethod());
>                 if (getSubmittingComponentClass() != null)
>                 {
>                         sb.append(",submittingComponentClass=");
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/0a7a0dab/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckBox.java
> ----------------------------------------------------------------------
> diff --git
> a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckBox.java
> b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckBox.java
> index 64d298f..180f191 100644
> ---
> a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckBox.java
> +++
> b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckBox.java
> @@ -78,7 +78,7 @@ public class CheckBox extends FormComponent<Boolean>
> implements IOnChangeListene
>          * @see
> org.apache.wicket.markup.html.form.IOnChangeListener#onSelectionChanged()
>          */
>         @Override
> -       public void onSelectionChanged()
> +       public void onRequest()
>

I think we should preserve #onSelectionChanged() here.
#onSelectionChanged() is more meaningful and overridden in many apps.
#onRequest() should be final and just delegate to #onSelectionChanged().


>         {
>                 convertInput();
>                 updateModel();
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/0a7a0dab/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckGroup.java
> ----------------------------------------------------------------------
> diff --git
> a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckGroup.java
> b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckGroup.java
> index d7b6bf5..1e6d804 100644
> ---
> a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckGroup.java
> +++
> b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckGroup.java
> @@ -204,7 +204,7 @@ public class CheckGroup<T> extends
> FormComponent<Collection<T>> implements IOnCh
>          * Called when a selection changes.
>          */
>         @Override
> -       public final void onSelectionChanged()
> +       public final void onRequest()
>

Here #onSelectionChanged() is final!
Does it make sense to keep its current body in #onRequest() (again final)
and then call overridable #onSelectionChanged() ?


>         {
>                 convertInput();
>                 updateModel();
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/0a7a0dab/wicket-core/src/main/java/org/apache/wicket/markup/html/form/DropDownChoice.java
> ----------------------------------------------------------------------
> diff --git
> a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/DropDownChoice.java
> b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/DropDownChoice.java
> index bab85c5..ca03dfd 100644
> ---
> a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/DropDownChoice.java
> +++
> b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/DropDownChoice.java
> @@ -206,7 +206,7 @@ public class DropDownChoice<T> extends
> AbstractSingleSelectChoice<T> implements
>          * Called when a selection changes.
>          */
>         @Override
> -       public final void onSelectionChanged()
> +       public final void onRequest()
>

Same here.


>         {
>                 convertInput();
>                 updateModel();
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/0a7a0dab/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java
> ----------------------------------------------------------------------
> diff --git
> a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java
> b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java
> index fd9279d..efa7137 100644
> ---
> a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java
> +++
> b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java
> @@ -682,7 +682,7 @@ public class Form<T> extends WebMarkupContainer
>          * @see #onFormSubmitted(IFormSubmitter)
>          */
>         @Override
> -       public final void onFormSubmitted()
> +       public final void onRequest()
>         {
>                 // check methods match
>                 if (getRequest().getContainerRequest() instanceof
> HttpServletRequest)
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/0a7a0dab/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IFormSubmitListener.java
> ----------------------------------------------------------------------
> diff --git
> a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IFormSubmitListener.java
> b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IFormSubmitListener.java
> index 0564760..3dfff96 100644
> ---
> a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IFormSubmitListener.java
> +++
> b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IFormSubmitListener.java
> @@ -30,8 +30,4 @@ public interface IFormSubmitListener extends
> IRequestListener
>         RequestListenerInterface INTERFACE = new RequestListenerInterface(
>                 IFormSubmitListener.class);
>
> -       /**
> -        * Called when a form is submitted
> -        */
> -       void onFormSubmitted();
>  }
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/0a7a0dab/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IOnChangeListener.java
> ----------------------------------------------------------------------
> diff --git
> a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IOnChangeListener.java
> b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IOnChangeListener.java
> index ef9673f..964c531 100644
> ---
> a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IOnChangeListener.java
> +++
> b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IOnChangeListener.java
> @@ -32,9 +32,4 @@ public interface IOnChangeListener extends
> IRequestListener
>         /** Listener interface */
>         RequestListenerInterface INTERFACE = new RequestListenerInterface(
>                 IOnChangeListener.class);
> -
> -       /**
> -        * Called when a new option is selected.
> -        */
> -       void onSelectionChanged();
>  }
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/0a7a0dab/wicket-core/src/main/java/org/apache/wicket/markup/html/form/ImageButton.java
> ----------------------------------------------------------------------
> diff --git
> a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/ImageButton.java
> b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/ImageButton.java
> index 707f667..978d138 100644
> ---
> a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/ImageButton.java
> +++
> b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/ImageButton.java
> @@ -131,7 +131,7 @@ public class ImageButton extends Button implements
> IResourceListener
>          * @see org.apache.wicket.IResourceListener#onResourceRequested()
>          */
>         @Override
> -       public void onResourceRequested()
> +       public void onRequest()
>         {
>                 localizedImageResource.onResourceRequested(null);
>         }
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/0a7a0dab/wicket-core/src/main/java/org/apache/wicket/markup/html/form/RadioChoice.java
> ----------------------------------------------------------------------
> diff --git
> a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/RadioChoice.java
> b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/RadioChoice.java
> index a2d3551..e8af55e 100644
> ---
> a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/RadioChoice.java
> +++
> b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/RadioChoice.java
> @@ -248,7 +248,7 @@ public class RadioChoice<T> extends
> AbstractSingleSelectChoice<T> implements IOn
>          * @see
> org.apache.wicket.markup.html.form.IOnChangeListener#onSelectionChanged()
>          */
>         @Override
> -       public void onSelectionChanged()
> +       public void onRequest()
>         {
>                 convertInput();
>                 updateModel();
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/0a7a0dab/wicket-core/src/main/java/org/apache/wicket/markup/html/form/RadioGroup.java
> ----------------------------------------------------------------------
> diff --git
> a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/RadioGroup.java
> b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/RadioGroup.java
> index 38361e2..e4f142e 100644
> ---
> a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/RadioGroup.java
> +++
> b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/RadioGroup.java
> @@ -167,7 +167,7 @@ public class RadioGroup<T> extends FormComponent<T>
> implements IOnChangeListener
>          * Called when a selection changes.
>          */
>         @Override
> -       public final void onSelectionChanged()
> +       public final void onRequest()
>         {
>                 convertInput();
>                 updateModel();
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/0a7a0dab/wicket-core/src/main/java/org/apache/wicket/markup/html/image/Image.java
> ----------------------------------------------------------------------
> diff --git
> a/wicket-core/src/main/java/org/apache/wicket/markup/html/image/Image.java
> b/wicket-core/src/main/java/org/apache/wicket/markup/html/image/Image.java
> index 19f4f7a..1b9622c 100644
> ---
> a/wicket-core/src/main/java/org/apache/wicket/markup/html/image/Image.java
> +++
> b/wicket-core/src/main/java/org/apache/wicket/markup/html/image/Image.java
> @@ -214,7 +214,7 @@ public class Image extends WebComponent implements
> IResourceListener
>          * @see org.apache.wicket.IResourceListener#onResourceRequested()
>          */
>         @Override
> -       public void onResourceRequested()
> +       public void onRequest()
>         {
>                 localizedImageResource.onResourceRequested(null);
>                 for (LocalizedImageResource localizedImageResource :
> localizedImageResources)
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/0a7a0dab/wicket-core/src/main/java/org/apache/wicket/markup/html/link/ILinkListener.java
> ----------------------------------------------------------------------
> diff --git
> a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/ILinkListener.java
> b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/ILinkListener.java
> index 0d2f7a4..c2d37f1 100644
> ---
> a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/ILinkListener.java
> +++
> b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/ILinkListener.java
> @@ -29,9 +29,4 @@ public interface ILinkListener extends IRequestListener
>         /** Listener interface */
>         RequestListenerInterface INTERFACE = new RequestListenerInterface(
>                 ILinkListener.class);
> -
> -       /**
> -        * Called when a link is clicked.
> -        */
> -       void onLinkClicked();
>  }
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/0a7a0dab/wicket-core/src/main/java/org/apache/wicket/markup/html/link/InlineFrame.java
> ----------------------------------------------------------------------
> diff --git
> a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/InlineFrame.java
> b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/InlineFrame.java
> index a2e58c7..566bdae 100644
> ---
> a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/InlineFrame.java
> +++
> b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/InlineFrame.java
> @@ -150,7 +150,7 @@ public class InlineFrame extends WebMarkupContainer
> implements ILinkListener
>          * @see
> org.apache.wicket.markup.html.link.ILinkListener#onLinkClicked()
>          */
>         @Override
> -       public final void onLinkClicked()
> +       public final void onRequest()
>         {
>                 setResponsePage(pageProvider.getPageInstance());
>         }
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/0a7a0dab/wicket-core/src/main/java/org/apache/wicket/markup/html/link/Link.java
> ----------------------------------------------------------------------
> diff --git
> a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/Link.java
> b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/Link.java
> index 6259618..b5263fe 100644
> ---
> a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/Link.java
> +++
> b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/Link.java
> @@ -191,7 +191,7 @@ public abstract class Link<T> extends AbstractLink
> implements ILinkListener, IGe
>          * @see ILinkListener
>          */
>         @Override
> -       public final void onLinkClicked()
> +       public void onRequest()
>         {
>                 // Invoke subclass handler
>                 onClick();
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/0a7a0dab/wicket-core/src/main/java/org/apache/wicket/markup/html/link/ResourceLink.java
> ----------------------------------------------------------------------
> diff --git
> a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/ResourceLink.java
> b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/ResourceLink.java
> index 220bc05..b8bbff4 100644
> ---
> a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/ResourceLink.java
> +++
> b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/ResourceLink.java
> @@ -107,13 +107,14 @@ public class ResourceLink<T> extends Link<T>
> implements IResourceListener
>          * @see org.apache.wicket.IResourceListener#onResourceRequested()
>          */
>         @Override
> -       public final void onResourceRequested()
> +       public final void onRequest()
>         {
>
>                 Attributes a = new
> Attributes(RequestCycle.get().getRequest(), RequestCycle.get()
>                         .getResponse(), null);
>                 resource.respond(a);
> -               onLinkClicked();
> +
> +               super.onRequest();
>         }
>
>         /**
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/0a7a0dab/wicket-core/src/test/java/org/apache/wicket/RemoveTest.java
> ----------------------------------------------------------------------
> diff --git a/wicket-core/src/test/java/org/apache/wicket/RemoveTest.java
> b/wicket-core/src/test/java/org/apache/wicket/RemoveTest.java
> index 7dda0a2..6ab6364 100644
> --- a/wicket-core/src/test/java/org/apache/wicket/RemoveTest.java
> +++ b/wicket-core/src/test/java/org/apache/wicket/RemoveTest.java
> @@ -61,7 +61,7 @@ public class RemoveTest extends WicketTestCase
>                         tester.clickLink(PATH);
>                         fail("Missing Exception");
>                 }
> -               catch (WicketRuntimeException wre)
> +               catch (IllegalStateException wre)
>                 {
>                         // do nothing.
>                         // This exception was expected.
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/0a7a0dab/wicket-core/src/test/java/org/apache/wicket/markup/html/form/upload/FileUploadErrorTest.java
> ----------------------------------------------------------------------
> diff --git
> a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/upload/FileUploadErrorTest.java
> b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/upload/FileUploadErrorTest.java
> index 61f9f33..a3d47c7 100644
> ---
> a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/upload/FileUploadErrorTest.java
> +++
> b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/upload/FileUploadErrorTest.java
> @@ -125,9 +125,8 @@ public class FileUploadErrorTest extends WicketTestCase
>                         formTester.submit();
>                         fail("Value not succesfully submitted.");
>                 }
> -               catch (WicketRuntimeException rex)
> +               catch (RuntimeException ex)
>                 {
> -                       Throwable ex = rex.getCause().getCause();
>                         assertEquals("Special value: " +
> FileUploadError.THIS_VALUE_SHOULD_THROW_EXCEPTION,
>                                 ex.getMessage());
>                 }
>
>

[3/3] wicket git commit: remove RequestListenerInterface

Posted by sv...@apache.org.
remove RequestListenerInterface


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

Branch: refs/heads/request_listener_simplification
Commit: b8f9a87aae0e74e552458775c34206f419e25af0
Parents: 0a7a0da
Author: Sven Meier <sv...@apache.org>
Authored: Sat Mar 19 19:57:00 2016 +0100
Committer: Sven Meier <sv...@apache.org>
Committed: Wed Mar 23 09:20:38 2016 +0100

----------------------------------------------------------------------
 .../main/java/org/apache/wicket/Component.java  |  22 +-
 .../org/apache/wicket/DefaultMapperContext.java |  12 -
 .../org/apache/wicket/IRequestListener.java     |   2 +
 .../org/apache/wicket/IResourceListener.java    |  39 ---
 .../java/org/apache/wicket/Initializer.java     |  13 -
 .../apache/wicket/RequestListenerInterface.java | 280 -------------------
 .../wicket/behavior/AbstractAjaxBehavior.java   |  16 +-
 .../org/apache/wicket/behavior/Behavior.java    |   3 +-
 .../wicket/behavior/IBehaviorListener.java      |  36 ---
 ...markableListenerInterfaceRequestHandler.java |  31 +-
 .../ListenerInterfaceRequestHandler.java        | 140 +++++++---
 .../ListenerInvocationNotAllowedException.java  |  10 +-
 .../logger/ListenerInterfaceLogData.java        |  29 +-
 .../mapper/AbstractBookmarkableMapper.java      |  39 +--
 .../request/mapper/AbstractComponentMapper.java |  27 --
 .../core/request/mapper/IMapperContext.java     |  17 --
 .../core/request/mapper/MountedMapper.java      |  11 +-
 .../core/request/mapper/PageInstanceMapper.java |  14 +-
 .../apache/wicket/markup/html/form/Check.java   |   2 +-
 .../wicket/markup/html/form/CheckBox.java       |  11 +-
 .../wicket/markup/html/form/CheckGroup.java     |   9 +-
 .../wicket/markup/html/form/DropDownChoice.java |  11 +-
 .../apache/wicket/markup/html/form/Form.java    |  11 +-
 .../markup/html/form/IFormSubmitListener.java   |  33 ---
 .../markup/html/form/IOnChangeListener.java     |  35 ---
 .../wicket/markup/html/form/ImageButton.java    |   9 +-
 .../apache/wicket/markup/html/form/Radio.java   |   2 +-
 .../wicket/markup/html/form/RadioChoice.java    |  11 +-
 .../wicket/markup/html/form/RadioGroup.java     |   9 +-
 .../wicket/markup/html/form/StatelessForm.java  |   2 +-
 .../apache/wicket/markup/html/image/Image.java  |  14 +-
 .../image/resource/LocalizedImageResource.java  |   5 +-
 .../wicket/markup/html/link/ILinkListener.java  |  32 ---
 .../wicket/markup/html/link/InlineFrame.java    |  11 +-
 .../apache/wicket/markup/html/link/Link.java    |  11 +-
 .../wicket/markup/html/link/ResourceLink.java   |  12 +-
 .../wicket/markup/html/link/StatelessLink.java  |   8 +-
 .../wicket/util/tester/BaseWicketTester.java    |  41 +--
 .../apache/wicket/util/tester/FormTester.java   |   3 +-
 .../org/apache/wicket/BehaviorRequestTest.java  |  23 +-
 .../java/org/apache/wicket/BehaviorUrlTest.java |  11 +-
 .../ComponentWithLazyModelCreationTest.java     |  16 +-
 .../behavior/ImmutableBehaviorIdsTest.java      |  11 +-
 .../ListenerInterfaceRequestHandlerTest.java    |  10 +-
 .../core/request/mapper/AbstractMapperTest.java |  13 -
 .../AbstractResourceReferenceMapperTest.java    |   1 -
 .../request/mapper/BookmarkableMapperTest.java  |  15 +-
 .../core/request/mapper/CryptoMapperTest.java   |  11 +-
 .../core/request/mapper/MountedMapperTest.java  |  17 +-
 .../core/request/mapper/PackageMapperTest.java  |  12 +-
 .../request/mapper/PageInstanceMapperTest.java  |   6 +-
 .../core/request/mapper/TestMapperContext.java  |  15 +-
 .../request/mapper/info/ComponentInfoTest.java  |  11 +-
 .../mapper/info/PageComponentInfoTest.java      |   5 +-
 .../wicket/examples/ajax/prototype/Index.java   |   9 +-
 wicket-examples/src/main/webapp/WEB-INF/web.xml |  21 --
 .../captcha/kittens/KittenCaptchaPanel.java     |   4 +-
 .../request/mapper/info/ComponentInfo.java      |  49 +---
 58 files changed, 347 insertions(+), 936 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/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 44a5309..db5afba 100644
--- a/wicket-core/src/main/java/org/apache/wicket/Component.java
+++ b/wicket-core/src/main/java/org/apache/wicket/Component.java
@@ -58,7 +58,6 @@ import org.apache.wicket.markup.head.StringHeaderItem;
 import org.apache.wicket.markup.html.IHeaderContributor;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.form.FormComponent;
-import org.apache.wicket.markup.html.form.IFormSubmitListener;
 import org.apache.wicket.markup.html.internal.HtmlHeaderContainer;
 import org.apache.wicket.markup.html.panel.DefaultMarkupSourcingStrategy;
 import org.apache.wicket.markup.html.panel.IMarkupSourcingStrategy;
@@ -852,7 +851,7 @@ public abstract class Component
 	 * 
 	 * @return {@code true} if component has been initialized
 	 */
-	final boolean isInitialized()
+	public final boolean isInitialized()
 	{
 		return getFlag(FLAG_INITIALIZED);
 	}
@@ -3341,19 +3340,17 @@ public abstract class Component
 	 *            The parameters that should be rendered into the urls
 	 * @return The URL
 	 */
-	public final CharSequence urlFor(final Behavior behaviour,
-		final RequestListenerInterface listener, final PageParameters parameters)
+	public final CharSequence urlFor(final Behavior behaviour, final PageParameters parameters)
 	{
 		int id = getBehaviorId(behaviour);
-		IRequestHandler handler = createRequestHandler(listener, parameters, id);
+		IRequestHandler handler = createRequestHandler(parameters, id);
 		return getRequestCycle().urlFor(handler);
 	}
 
 	/**
 	 * Create a suitable request handler depending whether the page is stateless or bookmarkable.
 	 */
-	private IRequestHandler createRequestHandler(RequestListenerInterface listener,
-		PageParameters parameters, Integer id)
+	private IRequestHandler createRequestHandler(PageParameters parameters, Integer id)
 	{
 		Page page = getPage();
 
@@ -3363,11 +3360,11 @@ public abstract class Component
 			|| (getApplication().getPageSettings().getRecreateBookmarkablePagesAfterExpiry()
 				&& page.isBookmarkable() && page.wasCreatedBookmarkable()))
 		{
-			return new BookmarkableListenerInterfaceRequestHandler(provider, listener, id);
+			return new BookmarkableListenerInterfaceRequestHandler(provider, id);
 		}
 		else
 		{
-			return new ListenerInterfaceRequestHandler(provider, listener, id);
+			return new ListenerInterfaceRequestHandler(provider, id);
 		}
 	}
 
@@ -3391,16 +3388,13 @@ public abstract class Component
 	 * 
 	 * @see RequestCycle#urlFor(IRequestHandler)
 	 * 
-	 * @param listener
-	 *            The listener interface that the URL should call
 	 * @param parameters
 	 *            The parameters that should be rendered into the urls
 	 * @return The URL
 	 */
-	public final CharSequence urlFor(final RequestListenerInterface listener,
-		final PageParameters parameters)
+	public final CharSequence urlFor(final PageParameters parameters)
 	{
-		IRequestHandler handler = createRequestHandler(listener, parameters, null);
+		IRequestHandler handler = createRequestHandler(parameters, null);
 		return getRequestCycle().urlFor(handler);
 	}
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/wicket-core/src/main/java/org/apache/wicket/DefaultMapperContext.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/DefaultMapperContext.java b/wicket-core/src/main/java/org/apache/wicket/DefaultMapperContext.java
index 486dbf9..6527f96 100644
--- a/wicket-core/src/main/java/org/apache/wicket/DefaultMapperContext.java
+++ b/wicket-core/src/main/java/org/apache/wicket/DefaultMapperContext.java
@@ -82,18 +82,6 @@ public class DefaultMapperContext implements IMapperContext
 	}
 
 	@Override
-	public RequestListenerInterface requestListenerInterfaceFromString(final String interfaceName)
-	{
-		return RequestListenerInterface.forName(interfaceName);
-	}
-
-	@Override
-	public String requestListenerInterfaceToString(final RequestListenerInterface listenerInterface)
-	{
-		return listenerInterface.getName();
-	}
-
-	@Override
 	public IRequestablePage newPageInstance(final Class<? extends IRequestablePage> pageClass,
 		final PageParameters pageParameters)
 	{

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/wicket-core/src/main/java/org/apache/wicket/IRequestListener.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/IRequestListener.java b/wicket-core/src/main/java/org/apache/wicket/IRequestListener.java
index 350717f..d94416d 100644
--- a/wicket-core/src/main/java/org/apache/wicket/IRequestListener.java
+++ b/wicket-core/src/main/java/org/apache/wicket/IRequestListener.java
@@ -33,6 +33,8 @@ import org.apache.wicket.util.io.IClusterable;
  */
 public interface IRequestListener extends IClusterable
 {
+
+	boolean includeRenderCount();
 	
 	/**
 	 * Called when a request to a behavior is received.

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/wicket-core/src/main/java/org/apache/wicket/IResourceListener.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/IResourceListener.java b/wicket-core/src/main/java/org/apache/wicket/IResourceListener.java
deleted file mode 100644
index 983594c..0000000
--- a/wicket-core/src/main/java/org/apache/wicket/IResourceListener.java
+++ /dev/null
@@ -1,39 +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;
-
-
-/**
- * Listens for requests regarding resources. Such resources are typically non-static in nature and
- * may even be created on the fly.
- * <p>
- * One use for resource listeners is that they may be used to create components such as Image which
- * respond to requests with a localized resource loaded from the classpath. The Image class allows
- * reusable components to transparently bundle localized image resources. Components that use Image
- * resources (instead of referencing static images in their markup) can be distributed as a
- * self-contained JAR file.
- * 
- * @see org.apache.wicket.markup.html.image.Image
- * @see org.apache.wicket.markup.html.image.resource.RenderedDynamicImageResource
- * @author Jonathan Locke
- */
-public interface IResourceListener extends IRequestListener
-{
-	/** Resource listener interface object */
-	RequestListenerInterface INTERFACE = new RequestListenerInterface(
-		IResourceListener.class).setIncludeRenderCount(false).setRenderPageAfterInvocation(false);
-}

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/wicket-core/src/main/java/org/apache/wicket/Initializer.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/Initializer.java b/wicket-core/src/main/java/org/apache/wicket/Initializer.java
index 19fa544..cb81938 100644
--- a/wicket-core/src/main/java/org/apache/wicket/Initializer.java
+++ b/wicket-core/src/main/java/org/apache/wicket/Initializer.java
@@ -16,11 +16,6 @@
  */
 package org.apache.wicket;
 
-import org.apache.wicket.behavior.IBehaviorListener;
-import org.apache.wicket.markup.html.form.IFormSubmitListener;
-import org.apache.wicket.markup.html.form.IOnChangeListener;
-import org.apache.wicket.markup.html.link.ILinkListener;
-
 /**
  * Initializer for components in wicket core library.
  * 
@@ -34,14 +29,6 @@ public class Initializer implements IInitializer
 	@Override
 	public void init(Application application)
 	{
-		// Register listener interfaces explicitly (even though they implicitly
-		// register when loaded) because deserialization of an object that
-		// implements an interface does not load the interfaces it implements!
-		IBehaviorListener.INTERFACE.register();
-		IFormSubmitListener.INTERFACE.register();
-		ILinkListener.INTERFACE.register();
-		IOnChangeListener.INTERFACE.register();
-		IResourceListener.INTERFACE.register();
 	}
 
 	/**

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/wicket-core/src/main/java/org/apache/wicket/RequestListenerInterface.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/RequestListenerInterface.java b/wicket-core/src/main/java/org/apache/wicket/RequestListenerInterface.java
deleted file mode 100644
index 82ee03d..0000000
--- a/wicket-core/src/main/java/org/apache/wicket/RequestListenerInterface.java
+++ /dev/null
@@ -1,280 +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;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.wicket.authorization.AuthorizationException;
-import org.apache.wicket.behavior.Behavior;
-import org.apache.wicket.request.RequestHandlerStack.ReplaceHandlerException;
-import org.apache.wicket.request.component.IRequestableComponent;
-import org.apache.wicket.core.request.handler.ListenerInvocationNotAllowedException;
-import org.apache.wicket.util.lang.Classes;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-
-/**
- * Base class for request listener interfaces.
- * 
- * @author Jonathan Locke
- */
-public class RequestListenerInterface
-{
-	/** Map from name to request listener interface */
-	private static final Map<String, RequestListenerInterface> interfaces = Collections.synchronizedMap(new HashMap<String, RequestListenerInterface>());
-
-	/** Log. */
-	private static final Logger log = LoggerFactory.getLogger(RequestListenerInterface.class);
-
-	/**
-	 * Looks up a request interface listener by name.
-	 * 
-	 * @param interfaceName
-	 *            The interface name
-	 * @return The RequestListenerInterface object, or null if none is found
-	 * 
-	 */
-	public static RequestListenerInterface forName(final String interfaceName)
-	{
-		return interfaces.get(interfaceName);
-	}
-
-	/** The name of this listener interface */
-	private final String name;
-
-	/**
-	 * Whether the render count should be included in URL. This should be true for every listener
-	 * interface URL that should only be active on last rendered page (links, etc) and false for
-	 * other (resources);
-	 */
-	private boolean includeRenderCount = true;
-
-	/**
-	 * Whether the page should be rendered by default after the invocation of this listener
-	 * interface. Applies only during non-ajax requests.
-	 */
-	private boolean renderPageAfterInvocation = true;
-
-	final Class<? extends IRequestListener> listenerInterfaceClass;
-
-	/**
-	 * Constructor.
-	 * 
-	 * @param listenerInterfaceClass
-	 *            The interface class, which must extend IRequestListener.
-	 */
-	public RequestListenerInterface(final Class<? extends IRequestListener> listenerInterfaceClass)
-	{
-		this.listenerInterfaceClass = listenerInterfaceClass;
-
-		// Ensure that it extends IRequestListener
-		if (!IRequestListener.class.isAssignableFrom(listenerInterfaceClass))
-		{
-			throw new IllegalArgumentException("Class " + listenerInterfaceClass +
-				" must extend IRequestListener");
-		}
-
-		// Save short class name
-		name = Classes.simpleName(listenerInterfaceClass);
-
-		// Register this listener
-		register();
-	}
-
-
-	/**
-	 * @return The interface class, which must extend IRequestListener.
-	 */
-	public Class<? extends IRequestListener> getListenerInterfaceClass()
-	{
-		return listenerInterfaceClass;
-	}
-
-
-	/**
-	 * @param includeRenderCount
-	 * @return self
-	 */
-	public RequestListenerInterface setIncludeRenderCount(boolean includeRenderCount)
-	{
-		this.includeRenderCount = includeRenderCount;
-		return this;
-	}
-
-	/**
-	 * @return whether the render count should be included in url
-	 */
-	public boolean isIncludeRenderCount()
-	{
-		return includeRenderCount;
-	}
-
-	/**
-	 * @param renderPageAfterInvocation
-	 * @return self
-	 */
-	public RequestListenerInterface setRenderPageAfterInvocation(boolean renderPageAfterInvocation)
-	{
-		this.renderPageAfterInvocation = renderPageAfterInvocation;
-		return this;
-	}
-
-	/**
-	 * @return whether the page should be rendered after invocation of this interface (during
-	 *         non-ajax requests)
-	 */
-	public boolean isRenderPageAfterInvocation()
-	{
-		return renderPageAfterInvocation;
-	}
-
-	/**
-	 * @return The name of this request listener interface
-	 */
-	public final String getName()
-	{
-		return name;
-	}
-
-	/**
-	 * 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
-	 */
-	public final void invoke(final IRequestableComponent rcomponent)
-	{
-		// we are in Wicket core land
-		final Component component = (Component)rcomponent;
-
-		if (!component.canCallListenerInterface(null))
-		{
-			// 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(this, component, null,
-				"Component rejected interface invocation");
-		}
-
-		internalInvoke(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
-	 */
-	public final void invoke(final IRequestableComponent rcomponent, final Behavior behavior)
-	{
-		// we are in Wicket core land
-		final Component component = (Component)rcomponent;
-
-		if (!behavior.canCallListenerInterface(component, null))
-		{
-			log.warn("behavior not enabled; ignore call. Behavior {} at component {}", behavior,
-				component);
-			throw new ListenerInvocationNotAllowedException(this, component, behavior,
-				"Behavior rejected interface invocation. ");
-		}
-
-		internalInvoke(component, behavior);
-	}
-
-	private void internalInvoke(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)target).onRequest();
-	}
-
-	/**
-	 * Method to call to register this interface for use
-	 */
-	public void register()
-	{
-		// Register this listener interface
-		registerRequestListenerInterface(this);
-	}
-
-	/**
-	 * @see java.lang.Object#toString()
-	 */
-	@Override
-	public String toString()
-	{
-		return "[RequestListenerInterface name=" + name + "]";
-	}
-
-
-	/**
-	 * THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. DO NOT CALL IT.
-	 * <p>
-	 * In previous versions of Wicket, request listeners were manually registered by calling this
-	 * method. Now there is a first class RequestListenerInterface object which should be
-	 * constructed as a constant member of the interface to enable automatic interface registration.
-	 * <p>
-	 * Adds a request listener interface to the map of interfaces that can be invoked by outsiders.
-	 * 
-	 * @param requestListenerInterface
-	 *            The request listener interface object
-	 */
-	private void registerRequestListenerInterface(final RequestListenerInterface requestListenerInterface)
-	{
-		// Check that a different interface method with the same name has not
-		// already been registered
-		final RequestListenerInterface existingInterface = RequestListenerInterface.forName(requestListenerInterface.getName());
-		if (existingInterface == null)
-		{
-			// Save this interface method by the non-qualified class name
-			interfaces.put(requestListenerInterface.getName(), requestListenerInterface);
-
-			log.info("registered listener interface " + this);
-		}
-	}
-
-	/**
-	 * 
-	 * @return collection of all registered interfaces
-	 */
-	public static Collection<RequestListenerInterface> getRegisteredInterfaces()
-	{
-		return Collections.unmodifiableCollection(interfaces.values());
-	}
-
-
-}

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/wicket-core/src/main/java/org/apache/wicket/behavior/AbstractAjaxBehavior.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/behavior/AbstractAjaxBehavior.java b/wicket-core/src/main/java/org/apache/wicket/behavior/AbstractAjaxBehavior.java
index 5a25fc9..d4c9877 100644
--- a/wicket-core/src/main/java/org/apache/wicket/behavior/AbstractAjaxBehavior.java
+++ b/wicket-core/src/main/java/org/apache/wicket/behavior/AbstractAjaxBehavior.java
@@ -17,7 +17,7 @@
 package org.apache.wicket.behavior;
 
 import org.apache.wicket.Component;
-import org.apache.wicket.RequestListenerInterface;
+import org.apache.wicket.IRequestListener;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.util.lang.Args;
@@ -30,7 +30,7 @@ import org.apache.wicket.util.lang.Args;
  * @author Ralf Ebert
  * @author Igor Vaynberg
  */
-public abstract class AbstractAjaxBehavior extends Behavior implements IBehaviorListener
+public abstract class AbstractAjaxBehavior extends Behavior implements IRequestListener
 {
 	private static final long serialVersionUID = 1L;
 
@@ -68,6 +68,12 @@ public abstract class AbstractAjaxBehavior extends Behavior implements IBehavior
 		onBind();
 	}
 
+	@Override
+	public boolean includeRenderCount()
+	{
+		return true;
+	}
+	
 	/**
 	 * Gets the url that references this handler.
 	 * 
@@ -81,11 +87,7 @@ public abstract class AbstractAjaxBehavior extends Behavior implements IBehavior
 				"Behavior must be bound to a component to create the URL");
 		}
 
-		final RequestListenerInterface rli;
-
-		rli = IBehaviorListener.INTERFACE;
-
-		return getComponent().urlFor(this, rli, new PageParameters());
+		return getComponent().urlFor(this, new PageParameters());
 	}
 
 	/**

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/wicket-core/src/main/java/org/apache/wicket/behavior/Behavior.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/behavior/Behavior.java b/wicket-core/src/main/java/org/apache/wicket/behavior/Behavior.java
index 0122454..e10ee10 100644
--- a/wicket-core/src/main/java/org/apache/wicket/behavior/Behavior.java
+++ b/wicket-core/src/main/java/org/apache/wicket/behavior/Behavior.java
@@ -21,6 +21,7 @@ import java.lang.reflect.Method;
 import org.apache.wicket.Application;
 import org.apache.wicket.Component;
 import org.apache.wicket.IComponentAwareEventSink;
+import org.apache.wicket.IRequestListener;
 import org.apache.wicket.event.IEvent;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.head.IHeaderResponse;
@@ -149,7 +150,7 @@ public abstract class Behavior
 	 */
 	public boolean getStatelessHint(Component component)
 	{
-		if (this instanceof IBehaviorListener)
+		if (this instanceof IRequestListener)
 		{
 			// this behavior implements a callback interface, so it cannot be stateless
 			return false;

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/wicket-core/src/main/java/org/apache/wicket/behavior/IBehaviorListener.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/behavior/IBehaviorListener.java b/wicket-core/src/main/java/org/apache/wicket/behavior/IBehaviorListener.java
deleted file mode 100644
index 8b029d0..0000000
--- a/wicket-core/src/main/java/org/apache/wicket/behavior/IBehaviorListener.java
+++ /dev/null
@@ -1,36 +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.behavior;
-
-import org.apache.wicket.IRequestListener;
-import org.apache.wicket.RequestListenerInterface;
-
-/**
- * Listens for requests to behaviors. When {@link org.apache.wicket.behavior.Behavior}s are
- * 'enriched' with this interface, they can receive requests themselves. You can use this for
- * example to implement AJAX behavior, though you'll probably want to extend from
- * {@link org.apache.wicket.behavior.AbstractAjaxBehavior} directly instead in that case.
- * 
- * @author Eelco Hillenius
- */
-public interface IBehaviorListener extends IRequestListener
-{
-	/** Behavior listener interface */
-	RequestListenerInterface INTERFACE = new RequestListenerInterface(
-		IBehaviorListener.class);
-
-}

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/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 edc65a8..01eecfe 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
@@ -16,7 +16,7 @@
  */
 package org.apache.wicket.core.request.handler;
 
-import org.apache.wicket.RequestListenerInterface;
+import org.apache.wicket.IRequestListener;
 import org.apache.wicket.request.IRequestCycle;
 import org.apache.wicket.request.component.IRequestableComponent;
 import org.apache.wicket.request.component.IRequestablePage;
@@ -36,8 +36,6 @@ public class BookmarkableListenerInterfaceRequestHandler
 {
 	private final IPageAndComponentProvider pageComponentProvider;
 
-	private final RequestListenerInterface listenerInterface;
-
 	private final Integer behaviorIndex;
 
 	/**
@@ -49,13 +47,11 @@ public class BookmarkableListenerInterfaceRequestHandler
 	 */
 	public BookmarkableListenerInterfaceRequestHandler(
 		IPageAndComponentProvider pageComponentProvider,
-		RequestListenerInterface listenerInterface, Integer behaviorIndex)
+		Integer behaviorIndex)
 	{
 		Args.notNull(pageComponentProvider, "pageComponentProvider");
-		Args.notNull(listenerInterface, "listenerInterface");
 
 		this.pageComponentProvider = pageComponentProvider;
-		this.listenerInterface = listenerInterface;
 		this.behaviorIndex = behaviorIndex;
 	}
 
@@ -65,10 +61,17 @@ public class BookmarkableListenerInterfaceRequestHandler
 	 * @param pageComponentProvider
 	 * @param listenerInterface
 	 */
-	public BookmarkableListenerInterfaceRequestHandler(
-		PageAndComponentProvider pageComponentProvider, RequestListenerInterface listenerInterface)
+	public BookmarkableListenerInterfaceRequestHandler(PageAndComponentProvider pageComponentProvider)
 	{
-		this(pageComponentProvider, listenerInterface, null);
+		this(pageComponentProvider, null);
+	}
+
+	public boolean includeRenderCount() {
+		if (behaviorIndex == null) {
+			return ((IRequestListener)getComponent()).includeRenderCount();
+		} else {
+			return ((IRequestListener)getComponent().getBehaviorById(getBehaviorIndex())).includeRenderCount();
+		}
 	}
 
 	/**
@@ -132,16 +135,6 @@ public class BookmarkableListenerInterfaceRequestHandler
 	}
 
 	/**
-	 * Returns the listener interface.
-	 *
-	 * @return listener interface
-	 */
-	public RequestListenerInterface getListenerInterface()
-	{
-		return listenerInterface;
-	}
-
-	/**
 	 * Returns index of behavior this listener is targeted on or <code>null</code> if component is
 	 * the target
 	 *

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/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
index ce3286f..a098f02 100644
--- 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
@@ -16,8 +16,9 @@
  */
 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.RequestListenerInterface;
 import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.behavior.Behavior;
 import org.apache.wicket.core.request.handler.RenderPageRequestHandler.RedirectPolicy;
@@ -43,13 +44,11 @@ public class ListenerInterfaceRequestHandler
 		IComponentRequestHandler,
 		ILoggableRequestHandler
 {
-
+	
 	private static final Logger LOG = LoggerFactory.getLogger(ListenerInterfaceRequestHandler.class);
 
 	private final IPageAndComponentProvider pageComponentProvider;
 
-	private final RequestListenerInterface listenerInterface;
-
 	private final Integer behaviorId;
 
 	private ListenerInterfaceLogData logData;
@@ -61,14 +60,11 @@ public class ListenerInterfaceRequestHandler
 	 * @param listenerInterface
 	 * @param behaviorIndex
 	 */
-	public ListenerInterfaceRequestHandler(IPageAndComponentProvider pageComponentProvider,
-		RequestListenerInterface listenerInterface, Integer behaviorIndex)
+	public ListenerInterfaceRequestHandler(IPageAndComponentProvider pageComponentProvider, Integer behaviorIndex)
 	{
 		Args.notNull(pageComponentProvider, "pageComponentProvider");
-		Args.notNull(listenerInterface, "listenerInterface");
 
 		this.pageComponentProvider = pageComponentProvider;
-		this.listenerInterface = listenerInterface;
 		behaviorId = behaviorIndex;
 	}
 
@@ -78,12 +74,19 @@ public class ListenerInterfaceRequestHandler
 	 * @param pageComponentProvider
 	 * @param listenerInterface
 	 */
-	public ListenerInterfaceRequestHandler(PageAndComponentProvider pageComponentProvider,
-		RequestListenerInterface listenerInterface)
+	public ListenerInterfaceRequestHandler(PageAndComponentProvider pageComponentProvider)
 	{
-		this(pageComponentProvider, listenerInterface, null);
+		this(pageComponentProvider, null);
 	}
 
+	public boolean includeRenderCount() {
+		if (behaviorId == null) {
+			return ((IRequestListener)getComponent()).includeRenderCount();
+		} else {
+			return ((IRequestListener)getComponent().getBehaviorById(getBehaviorIndex())).includeRenderCount();
+		}
+	}
+	
 	@Override
 	public IRequestableComponent getComponent()
 	{
@@ -122,23 +125,12 @@ public class ListenerInterfaceRequestHandler
 	{
 		if (logData == null)
 		{
-			logData = new ListenerInterfaceLogData(pageComponentProvider, listenerInterface,
-				behaviorId);
+			logData = new ListenerInterfaceLogData(pageComponentProvider, behaviorId);
 		}
 		pageComponentProvider.detach();
 	}
 
 	/**
-	 * Returns the listener interface.
-	 *
-	 * @return listener interface
-	 */
-	public RequestListenerInterface getListenerInterface()
-	{
-		return listenerInterface;
-	}
-
-	/**
 	 * Index of target behavior or <code>null</code> if component is the target.
 	 *
 	 * @return behavior index or <code>null</code>
@@ -188,7 +180,6 @@ public class ListenerInterfaceRequestHandler
 		RedirectPolicy policy = isStateless
 			? RedirectPolicy.NEVER_REDIRECT
 			: RedirectPolicy.AUTO_REDIRECT;
-		final IPageProvider pageProvider = new PageProvider(page);
 
 		final boolean canCallListenerInterfaceAfterExpiry = component != null
 				? component.canCallListenerInterfaceAfterExpiry()
@@ -207,9 +198,9 @@ public class ListenerInterfaceRequestHandler
 			if (LOG.isDebugEnabled())
 			{
 				LOG.debug(
-					"A ListenerInterface '{}' assigned to '{}' is executed on an expired stateful page. "
+					"A ListenerInterface assigned to '{}' is executed on an expired stateful page. "
 						+ "Scheduling re-create of the page and ignoring the listener interface...",
-					listenerInterface, getComponentPath());
+					getComponentPath());
 			}
 
 			if (isAjax)
@@ -218,34 +209,25 @@ public class ListenerInterfaceRequestHandler
 			}
 
 			requestCycle.scheduleRequestHandlerAfterCurrent(new RenderPageRequestHandler(
-				pageProvider, policy));
+				new PageProvider(page), policy));
 			return;
 		}
 
-		if (isAjax == false && listenerInterface.isRenderPageAfterInvocation())
-		{
-			// 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(
-				pageProvider, policy));
-		}
-
-		invokeListener();
+		invokeListener(requestCycle, policy, isAjax);
 	}
 
-	private void invokeListener()
+	private void invokeListener(IRequestCycle requestCycle, RedirectPolicy policy, boolean ajax)
 	{
 		if (getBehaviorIndex() == null)
 		{
-			listenerInterface.invoke(getComponent());
+			invoke(requestCycle, policy, ajax, getComponent());
 		}
 		else
 		{
 			try
 			{
 				Behavior behavior = getComponent().getBehaviorById(behaviorId);
-				listenerInterface.invoke(getComponent(), behavior);
+				invoke(requestCycle, policy, ajax, getComponent(), behavior);
 			}
 			catch (IndexOutOfBoundsException e)
 			{
@@ -254,6 +236,84 @@ public class ListenerInterfaceRequestHandler
 
 		}
 	}
+	
+	/**
+	 * 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(null))
+		{
+			// 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, null))
+		{
+			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.includeRenderCount() && !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()

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/wicket-core/src/main/java/org/apache/wicket/core/request/handler/ListenerInvocationNotAllowedException.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/core/request/handler/ListenerInvocationNotAllowedException.java b/wicket-core/src/main/java/org/apache/wicket/core/request/handler/ListenerInvocationNotAllowedException.java
index a97d99d..f878b89 100644
--- a/wicket-core/src/main/java/org/apache/wicket/core/request/handler/ListenerInvocationNotAllowedException.java
+++ b/wicket-core/src/main/java/org/apache/wicket/core/request/handler/ListenerInvocationNotAllowedException.java
@@ -17,7 +17,6 @@
 package org.apache.wicket.core.request.handler;
 
 import org.apache.wicket.Component;
-import org.apache.wicket.RequestListenerInterface;
 import org.apache.wicket.behavior.Behavior;
 
 /**
@@ -36,20 +35,18 @@ public class ListenerInvocationNotAllowedException extends RuntimeException
 	/**
 	 * Constructor
 	 *
-	 * @param iface
 	 * @param component
 	 * @param behavior
 	 * @param message
 	 */
-	public ListenerInvocationNotAllowedException(RequestListenerInterface iface,
-		Component component, Behavior behavior, String message)
+	public ListenerInvocationNotAllowedException(Component component, Behavior behavior, String message)
 	{
-		super(message + detail(iface, component, behavior));
+		super(message + detail(component, behavior));
 		this.component = component;
 		this.behavior = behavior;
 	}
 
-	private static String detail(RequestListenerInterface iface, Component component,
+	private static String detail(Component component,
 		Behavior behavior)
 	{
 		StringBuilder detail = new StringBuilder("Component: ").append(component.toString(false));
@@ -57,7 +54,6 @@ public class ListenerInvocationNotAllowedException extends RuntimeException
 		{
 			detail.append(" Behavior: ").append(behavior.toString());
 		}
-		detail.append(" Listener: ").append(iface.toString());
 		return detail.toString();
 	}
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/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
index 4a5ad40..5ed97a7 100644
--- 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
@@ -17,11 +17,9 @@
 package org.apache.wicket.core.request.handler.logger;
 
 import org.apache.wicket.Component;
-import org.apache.wicket.RequestListenerInterface;
 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.IFormSubmitListener;
 import org.apache.wicket.markup.html.form.IFormSubmitter;
 import org.apache.wicket.request.component.IRequestableComponent;
 
@@ -38,7 +36,6 @@ public class ListenerInterfaceLogData extends PageLogData
 	private final String componentPath;
 	private final Integer behaviorIndex;
 	private Class<? extends Behavior> behaviorClass;
-	private final String interfaceName;
 	private Class<? extends IRequestableComponent> submittingComponentClass;
 	private String submittingComponentPath;
 
@@ -49,8 +46,7 @@ public class ListenerInterfaceLogData extends PageLogData
 	 * @param listenerInterface
 	 * @param behaviorIndex
 	 */
-	public ListenerInterfaceLogData(IPageAndComponentProvider pageAndComponentProvider,
-		RequestListenerInterface listenerInterface, Integer behaviorIndex)
+	public ListenerInterfaceLogData(IPageAndComponentProvider pageAndComponentProvider, Integer behaviorIndex)
 	{
 		super(pageAndComponentProvider);
 		componentClass = tryToGetComponentClass(pageAndComponentProvider);
@@ -73,15 +69,12 @@ public class ListenerInterfaceLogData extends PageLogData
 		{
 			behaviorClass = null;
 		}
-		interfaceName = listenerInterface.getName();
-		if (listenerInterface.getListenerInterfaceClass().equals(IFormSubmitListener.class))
+		
+		final Component formSubmitter = tryToGetFormSubmittingComponent(pageAndComponentProvider);
+		if (formSubmitter != null)
 		{
-			final Component formSubmitter = tryToGetFormSubmittingComponent(pageAndComponentProvider);
-			if (formSubmitter != null)
-			{
-				submittingComponentClass = formSubmitter.getClass();
-				submittingComponentPath = formSubmitter.getPageRelativePath();
-			}
+			submittingComponentClass = formSubmitter.getClass();
+			submittingComponentPath = formSubmitter.getPageRelativePath();
 		}
 	}
 
@@ -166,14 +159,6 @@ public class ListenerInterfaceLogData extends PageLogData
 	}
 
 	/**
-	 * @return interfaceName
-	 */
-	public final String getInterfaceName()
-	{
-		return interfaceName;
-	}
-
-	/**
 	 * @return submittingComponentClass
 	 */
 	public Class<? extends IRequestableComponent> getSubmittingComponentClass()
@@ -213,8 +198,6 @@ public class ListenerInterfaceLogData extends PageLogData
 			sb.append(",behaviorClass=");
 			sb.append(getBehaviorClass().getName());
 		}
-		sb.append(",interfaceName=");
-		sb.append(getInterfaceName());
 		if (getSubmittingComponentClass() != null)
 		{
 			sb.append(",submittingComponentClass=");

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/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 4d34e8c..963c698 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
@@ -19,7 +19,6 @@ package org.apache.wicket.core.request.mapper;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.wicket.RequestListenerInterface;
 import org.apache.wicket.core.request.handler.BookmarkableListenerInterfaceRequestHandler;
 import org.apache.wicket.core.request.handler.BookmarkablePageRequestHandler;
 import org.apache.wicket.core.request.handler.IPageRequestHandler;
@@ -31,7 +30,6 @@ import org.apache.wicket.protocol.http.PageExpiredException;
 import org.apache.wicket.protocol.http.WebApplication;
 import org.apache.wicket.request.IRequestHandler;
 import org.apache.wicket.request.IRequestHandlerDelegate;
-import org.apache.wicket.request.IRequestMapper;
 import org.apache.wicket.request.Request;
 import org.apache.wicket.request.Url;
 import org.apache.wicket.request.component.IRequestablePage;
@@ -297,41 +295,18 @@ public abstract class AbstractBookmarkableMapper extends AbstractComponentMapper
 		PageInfo pageInfo = pageComponentInfo.getPageInfo();
 		ComponentInfo componentInfo = pageComponentInfo.getComponentInfo();
 		Integer renderCount = null;
-		RequestListenerInterface listenerInterface = null;
 
 		if (componentInfo != null)
 		{
 			renderCount = componentInfo.getRenderCount();
-			listenerInterface = requestListenerInterfaceFromString(componentInfo.getListenerInterface());
 		}
 
-		if (listenerInterface != null)
-		{
-			PageAndComponentProvider provider = new PageAndComponentProvider(pageInfo.getPageId(),
-				pageClass, pageParameters, renderCount, componentInfo.getComponentPath());
+		PageAndComponentProvider provider = new PageAndComponentProvider(pageInfo.getPageId(),
+			pageClass, pageParameters, renderCount, componentInfo.getComponentPath());
 
-			provider.setPageSource(getContext());
+		provider.setPageSource(getContext());
 
-			return new ListenerInterfaceRequestHandler(provider, listenerInterface,
-				componentInfo.getBehaviorId());
-		}
-		else
-		{
-			if (logger.isWarnEnabled())
-			{
-				if (componentInfo != null)
-				{
-					logger.warn("Unknown listener interface '{}'",
-						componentInfo.getListenerInterface());
-				}
-				else
-				{
-					logger.warn("Cannot extract the listener interface for PageComponentInfo: '{}'" +
-						pageComponentInfo);
-				}
-			}
-			return null;
-		}
+		return new ListenerInterfaceRequestHandler(provider, componentInfo.getBehaviorId());
 	}
 
 	/**
@@ -463,15 +438,13 @@ public abstract class AbstractBookmarkableMapper extends AbstractComponentMapper
 			}
 
 			Integer renderCount = null;
-			if (handler.getListenerInterface().isIncludeRenderCount())
+			if (handler.includeRenderCount())
 			{
 				renderCount = handler.getRenderCount();
 			}
 
 			PageInfo pageInfo = getPageInfo(handler);
-			ComponentInfo componentInfo = new ComponentInfo(renderCount,
-				requestListenerInterfaceToString(handler.getListenerInterface()),
-				handler.getComponentPath(), handler.getBehaviorIndex());
+			ComponentInfo componentInfo = new ComponentInfo(renderCount, handler.getComponentPath(), handler.getBehaviorIndex());
 
 			PageParameters parameters = getRecreateMountedPagesAfterExpiry() ? new PageParameters(
 				handler.getPage().getPageParameters()).mergeWith(handler.getPageParameters())

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractComponentMapper.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractComponentMapper.java b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractComponentMapper.java
index 923a43f..71a28f5 100644
--- a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractComponentMapper.java
+++ b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractComponentMapper.java
@@ -17,7 +17,6 @@
 package org.apache.wicket.core.request.mapper;
 
 import org.apache.wicket.Application;
-import org.apache.wicket.RequestListenerInterface;
 import org.apache.wicket.core.util.lang.WicketObjects;
 import org.apache.wicket.request.IRequestMapper;
 import org.apache.wicket.request.Url;
@@ -48,32 +47,6 @@ public abstract class AbstractComponentMapper extends AbstractMapper implements
 	}
 
 	/**
-	 * Converts the specified listener interface to String.
-	 *
-	 * @param listenerInterface
-	 * @return listenerInterface name as string
-	 */
-	protected String requestListenerInterfaceToString(RequestListenerInterface listenerInterface)
-	{
-		Args.notNull(listenerInterface, "listenerInterface");
-
-		return getContext().requestListenerInterfaceToString(listenerInterface);
-	}
-
-	/**
-	 * Creates listener interface from the specified string
-	 *
-	 * @param interfaceName
-	 * @return listener interface
-	 */
-	protected RequestListenerInterface requestListenerInterfaceFromString(String interfaceName)
-	{
-		Args.notEmpty(interfaceName, "interfaceName");
-
-		return getContext().requestListenerInterfaceFromString(interfaceName);
-	}
-
-	/**
 	 * Extracts the {@link PageComponentInfo} from the URL. The {@link PageComponentInfo} is encoded
 	 * as the very first query parameter and the parameter consists of name only (no value).
 	 *

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/IMapperContext.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/IMapperContext.java b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/IMapperContext.java
index 52366d3..792904f 100644
--- a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/IMapperContext.java
+++ b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/IMapperContext.java
@@ -16,7 +16,6 @@
  */
 package org.apache.wicket.core.request.mapper;
 
-import org.apache.wicket.RequestListenerInterface;
 import org.apache.wicket.request.component.IRequestablePage;
 import org.apache.wicket.request.resource.ResourceReferenceRegistry;
 
@@ -53,22 +52,6 @@ public interface IMapperContext extends IPageSource
 	ResourceReferenceRegistry getResourceReferenceRegistry();
 
 	/**
-	 * Returns the listener interface name as string.
-	 *
-	 * @param listenerInterface
-	 * @return listener interface name as string
-	 */
-	String requestListenerInterfaceToString(RequestListenerInterface listenerInterface);
-
-	/**
-	 * Returns listener interface for the name
-	 *
-	 * @param interfaceName
-	 * @return listener interface
-	 */
-	RequestListenerInterface requestListenerInterfaceFromString(String interfaceName);
-
-	/**
 	 * Returns the home page class.
 	 *
 	 * @return home page class

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/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 965b316..1b6aa28 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,6 @@ package org.apache.wicket.core.request.mapper;
 
 import java.util.function.Supplier;
 
-import org.apache.wicket.RequestListenerInterface;
 import org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler;
 import org.apache.wicket.request.IRequestHandler;
 import org.apache.wicket.request.Request;
@@ -166,19 +165,15 @@ public class MountedMapper extends AbstractBookmarkableMapper
 			IRequestablePage page = handler.getPage();
 			if (checkPageInstance(page))
 			{
-				String componentPath = handler.getComponentPath();
-				RequestListenerInterface listenerInterface = handler.getListenerInterface();
-
 				Integer renderCount = null;
-				if (listenerInterface.isIncludeRenderCount())
+				if (handler.includeRenderCount())
 				{
 					renderCount = page.getRenderCount();
 				}
 
+				String componentPath = handler.getComponentPath();
 				PageInfo pageInfo = getPageInfo(handler);
-				ComponentInfo componentInfo = new ComponentInfo(renderCount,
-					requestListenerInterfaceToString(listenerInterface), componentPath,
-					handler.getBehaviorIndex());
+				ComponentInfo componentInfo = new ComponentInfo(renderCount, componentPath, handler.getBehaviorIndex());
 				PageComponentInfo pageComponentInfo = new PageComponentInfo(pageInfo, componentInfo);
 				PageParameters parameters = new PageParameters(page.getPageParameters());
 				UrlInfo urlInfo = new UrlInfo(pageComponentInfo, page.getClass(),

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/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 a034642..e983131 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,6 @@
  */
 package org.apache.wicket.core.request.mapper;
 
-import org.apache.wicket.RequestListenerInterface;
 import org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler;
 import org.apache.wicket.core.request.handler.PageAndComponentProvider;
 import org.apache.wicket.core.request.handler.PageProvider;
@@ -86,11 +85,7 @@ public class PageInstanceMapper extends AbstractComponentMapper
 
 					provider.setPageSource(getContext());
 
-					// listener interface
-					RequestListenerInterface listenerInterface = requestListenerInterfaceFromString(componentInfo.getListenerInterface());
-
-					return new ListenerInterfaceRequestHandler(provider, listenerInterface,
-						componentInfo.getBehaviorId());
+					return new ListenerInterfaceRequestHandler(provider, componentInfo.getBehaviorId());
 				}
 			}
 		}
@@ -117,18 +112,15 @@ public class PageInstanceMapper extends AbstractComponentMapper
 			ListenerInterfaceRequestHandler handler = (ListenerInterfaceRequestHandler)requestHandler;
 			IRequestablePage page = handler.getPage();
 			String componentPath = handler.getComponentPath();
-			RequestListenerInterface listenerInterface = handler.getListenerInterface();
 
 			Integer renderCount = null;
-			if (listenerInterface.isIncludeRenderCount())
+			if (handler.includeRenderCount())
 			{
 				renderCount = page.getRenderCount();
 			}
 
 			PageInfo pageInfo = new PageInfo(page.getPageId());
-			ComponentInfo componentInfo = new ComponentInfo(renderCount,
-				requestListenerInterfaceToString(listenerInterface), componentPath,
-				handler.getBehaviorIndex());
+			ComponentInfo componentInfo = new ComponentInfo(renderCount, componentPath, handler.getBehaviorIndex());
 			info = new PageComponentInfo(pageInfo, componentInfo);
 		}
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Check.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Check.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Check.java
index dab8129..91aff59 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Check.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Check.java
@@ -198,7 +198,7 @@ public class Check<T> extends LabeledWebMarkupContainer implements IGenericCompo
 		if (group.wantOnSelectionChangedNotifications())
 		{
 			// url that points to this components IOnChangeListener method
-			CharSequence url = group.urlFor(IOnChangeListener.INTERFACE, new PageParameters());
+			CharSequence url = group.urlFor(new PageParameters());
 
 			Form<?> form = group.findParent(Form.class);
 			if (form != null)

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckBox.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckBox.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckBox.java
index 180f191..655533a 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckBox.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckBox.java
@@ -18,6 +18,7 @@ package org.apache.wicket.markup.html.form;
 
 import java.util.Locale;
 
+import org.apache.wicket.IRequestListener;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
@@ -51,7 +52,7 @@ import org.apache.wicket.util.convert.IConverter;
  * 
  * @author Jonathan Locke
  */
-public class CheckBox extends FormComponent<Boolean> implements IOnChangeListener
+public class CheckBox extends FormComponent<Boolean> implements IRequestListener
 {
 	private static final long serialVersionUID = 1L;
 
@@ -74,6 +75,12 @@ public class CheckBox extends FormComponent<Boolean> implements IOnChangeListene
 		setType(Boolean.class);
 	}
 
+	@Override
+	public boolean includeRenderCount()
+	{
+		return true;
+	}
+	
 	/**
 	 * @see org.apache.wicket.markup.html.form.IOnChangeListener#onSelectionChanged()
 	 */
@@ -163,7 +170,7 @@ public class CheckBox extends FormComponent<Boolean> implements IOnChangeListene
 		// checkbox is clicked?
 		if (wantOnSelectionChangedNotifications())
 		{
-			CharSequence url = urlFor(IOnChangeListener.INTERFACE, new PageParameters());
+			CharSequence url = urlFor(new PageParameters());
 
 			Form<?> form = findParent(Form.class);
 			if (form != null)

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckGroup.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckGroup.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckGroup.java
index 1e6d804..5c62da5 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckGroup.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckGroup.java
@@ -19,6 +19,7 @@ package org.apache.wicket.markup.html.form;
 import java.util.Collection;
 import java.util.List;
 
+import org.apache.wicket.IRequestListener;
 import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.html.WebMarkupContainer;
@@ -58,7 +59,7 @@ import org.slf4j.LoggerFactory;
  * @param <T>
  *            The model object type
  */
-public class CheckGroup<T> extends FormComponent<Collection<T>> implements IOnChangeListener
+public class CheckGroup<T> extends FormComponent<Collection<T>> implements IRequestListener
 {
 	private static final long serialVersionUID = 1L;
 
@@ -200,6 +201,12 @@ public class CheckGroup<T> extends FormComponent<Collection<T>> implements IOnCh
 		tag.remove("name");
 	}
 
+	@Override
+	public boolean includeRenderCount()
+	{
+		return true;
+	}
+	
 	/**
 	 * Called when a selection changes.
 	 */

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/DropDownChoice.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/DropDownChoice.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/DropDownChoice.java
index ca03dfd..60f97fa 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/DropDownChoice.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/DropDownChoice.java
@@ -18,6 +18,7 @@ package org.apache.wicket.markup.html.form;
 
 import java.util.List;
 
+import org.apache.wicket.IRequestListener;
 import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.model.IModel;
@@ -63,7 +64,7 @@ import org.apache.wicket.request.mapper.parameter.PageParameters;
  * @param <T>
  *            The model object type
  */
-public class DropDownChoice<T> extends AbstractSingleSelectChoice<T> implements IOnChangeListener
+public class DropDownChoice<T> extends AbstractSingleSelectChoice<T> implements IRequestListener
 {
 	private static final long serialVersionUID = 1L;
 
@@ -202,6 +203,12 @@ public class DropDownChoice<T> extends AbstractSingleSelectChoice<T> implements
 		super(id, model, choices, renderer);
 	}
 
+	@Override
+	public boolean includeRenderCount()
+	{
+		return true;
+	}
+	
 	/**
 	 * Called when a selection changes.
 	 */
@@ -231,7 +238,7 @@ public class DropDownChoice<T> extends AbstractSingleSelectChoice<T> implements
 		{
 			// we do not want relative URL here, because it will be used by
 			// Form#dispatchEvent
-			CharSequence url = urlFor(IOnChangeListener.INTERFACE, new PageParameters());
+			CharSequence url = urlFor(new PageParameters());
 
 			Form<?> form = findParent(Form.class);
 			if (form != null)

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java
index efa7137..fbdc568 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java
@@ -30,6 +30,7 @@ import org.apache.commons.fileupload.FileUploadBase;
 import org.apache.commons.fileupload.FileUploadException;
 import org.apache.wicket.Component;
 import org.apache.wicket.IGenericComponent;
+import org.apache.wicket.IRequestListener;
 import org.apache.wicket.Page;
 import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -146,7 +147,7 @@ import org.slf4j.LoggerFactory;
  */
 public class Form<T> extends WebMarkupContainer
 	implements
-		IFormSubmitListener,
+		IRequestListener,
 		IGenericComponent<T, Form<T>>
 {
 	private static final String HIDDEN_DIV_START = "<div style=\"width:0px;height:0px;position:absolute;left:-100px;top:-100px;overflow:hidden\">";
@@ -674,6 +675,12 @@ public class Form<T> extends WebMarkupContainer
 		return getFlag(FLAG_SUBMITTED);
 	}
 
+	@Override
+	public boolean includeRenderCount()
+	{
+		return true;
+	}
+	
 	/**
 	 * THIS METHOD IS NOT PART OF THE WICKET API. DO NOT ATTEMPT TO OVERRIDE OR CALL IT.
 	 * 
@@ -1646,7 +1653,7 @@ public class Form<T> extends WebMarkupContainer
 	 */
 	protected CharSequence getActionUrl()
 	{
-		return urlFor(IFormSubmitListener.INTERFACE, new PageParameters());
+		return urlFor(new PageParameters());
 	}
 
 	/**

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IFormSubmitListener.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IFormSubmitListener.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IFormSubmitListener.java
deleted file mode 100644
index 3dfff96..0000000
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IFormSubmitListener.java
+++ /dev/null
@@ -1,33 +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.markup.html.form;
-
-import org.apache.wicket.IRequestListener;
-import org.apache.wicket.RequestListenerInterface;
-
-/**
- * Listener interface that is called when a form is submitted.
- * 
- * @author Jonathan Locke
- */
-public interface IFormSubmitListener extends IRequestListener
-{
-	/** Listener interface */
-	RequestListenerInterface INTERFACE = new RequestListenerInterface(
-		IFormSubmitListener.class);
-
-}

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IOnChangeListener.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IOnChangeListener.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IOnChangeListener.java
deleted file mode 100644
index 964c531..0000000
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IOnChangeListener.java
+++ /dev/null
@@ -1,35 +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.markup.html.form;
-
-import org.apache.wicket.IRequestListener;
-import org.apache.wicket.RequestListenerInterface;
-
-/**
- * Listener method for OnChange events of dropdown lists and onclick events of CheckBoxes and
- * RadioChoice components. When any of those components wantOnSelectionChangedNotifications() method
- * returns true, a javascript onchange or onclick handler will be generated that calls this
- * interface method when the user changes the selection.
- * 
- * @author Eelco Hillenius
- */
-public interface IOnChangeListener extends IRequestListener
-{
-	/** Listener interface */
-	RequestListenerInterface INTERFACE = new RequestListenerInterface(
-		IOnChangeListener.class);
-}

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/ImageButton.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/ImageButton.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/ImageButton.java
index 978d138..702daad 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/ImageButton.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/ImageButton.java
@@ -16,7 +16,7 @@
  */
 package org.apache.wicket.markup.html.form;
 
-import org.apache.wicket.IResourceListener;
+import org.apache.wicket.IRequestListener;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.html.image.resource.LocalizedImageResource;
 import org.apache.wicket.model.IModel;
@@ -34,7 +34,7 @@ import org.apache.wicket.request.resource.ResourceReference;
  * 
  * @author Jonathan Locke
  */
-public class ImageButton extends Button implements IResourceListener
+public class ImageButton extends Button implements IRequestListener
 {
 	private static final long serialVersionUID = 1L;
 
@@ -126,6 +126,11 @@ public class ImageButton extends Button implements IResourceListener
 		this(id, new Model<String>(string));
 	}
 
+	@Override
+	public boolean includeRenderCount()
+	{
+		return false;
+	}
 
 	/**
 	 * @see org.apache.wicket.IResourceListener#onResourceRequested()

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Radio.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Radio.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Radio.java
index 20965b2..8db42ed 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Radio.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Radio.java
@@ -183,7 +183,7 @@ public class Radio<T> extends LabeledWebMarkupContainer implements IGenericCompo
 		if (group.wantOnSelectionChangedNotifications())
 		{
 			// url that points to this components IOnChangeListener method
-			CharSequence url = group.urlFor(IOnChangeListener.INTERFACE, new PageParameters());
+			CharSequence url = group.urlFor(new PageParameters());
 
 			Form<?> form = group.findParent(Form.class);
 			if (form != null)

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/RadioChoice.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/RadioChoice.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/RadioChoice.java
index e8af55e..1d336ea 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/RadioChoice.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/RadioChoice.java
@@ -19,6 +19,7 @@ package org.apache.wicket.markup.html.form;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.wicket.IRequestListener;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.MarkupStream;
 import org.apache.wicket.model.IModel;
@@ -65,7 +66,7 @@ import org.apache.wicket.util.value.IValueMap;
  * @param <T>
  *            The model object type
  */
-public class RadioChoice<T> extends AbstractSingleSelectChoice<T> implements IOnChangeListener
+public class RadioChoice<T> extends AbstractSingleSelectChoice<T> implements IRequestListener
 {
 	private static final long serialVersionUID = 1L;
 
@@ -244,6 +245,12 @@ public class RadioChoice<T> extends AbstractSingleSelectChoice<T> implements IOn
 		tag.remove("name");
 	}
 
+	@Override
+	public boolean includeRenderCount()
+	{
+		return true;
+	}
+	
 	/**
 	 * @see org.apache.wicket.markup.html.form.IOnChangeListener#onSelectionChanged()
 	 */
@@ -527,7 +534,7 @@ public class RadioChoice<T> extends AbstractSingleSelectChoice<T> implements IOn
 			// when the option is clicked?
 			if (wantOnSelectionChangedNotifications())
 			{
-				CharSequence url = urlFor(IOnChangeListener.INTERFACE, new PageParameters());
+				CharSequence url = urlFor(new PageParameters());
 
 				Form<?> form = findParent(Form.class);
 				if (form != null)

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/RadioGroup.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/RadioGroup.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/RadioGroup.java
index e4f142e..795132d 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/RadioGroup.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/RadioGroup.java
@@ -16,6 +16,7 @@
  */
 package org.apache.wicket.markup.html.form;
 
+import org.apache.wicket.IRequestListener;
 import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.html.WebMarkupContainer;
@@ -47,7 +48,7 @@ import org.apache.wicket.util.visit.IVisitor;
  * @param <T>
  *            The model object type
  */
-public class RadioGroup<T> extends FormComponent<T> implements IOnChangeListener
+public class RadioGroup<T> extends FormComponent<T> implements IRequestListener
 {
 	private static final long serialVersionUID = 1L;
 
@@ -163,6 +164,12 @@ public class RadioGroup<T> extends FormComponent<T> implements IOnChangeListener
 		tag.remove("name");
 	}
 
+	@Override
+	public boolean includeRenderCount()
+	{
+		return true;
+	}
+	
 	/**
 	 * Called when a selection changes.
 	 */

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/StatelessForm.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/StatelessForm.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/StatelessForm.java
index 2e41325..f258556 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/StatelessForm.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/StatelessForm.java
@@ -82,7 +82,7 @@ public class StatelessForm<T> extends Form<T>
 	@Override
 	protected CharSequence getActionUrl()
 	{
-		return urlFor(IFormSubmitListener.INTERFACE, getPage().getPageParameters());
+		return urlFor(getPage().getPageParameters());
 	}
 
 	/**

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/wicket-core/src/main/java/org/apache/wicket/markup/html/image/Image.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/image/Image.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/image/Image.java
index 1b9622c..28f17ee 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/image/Image.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/image/Image.java
@@ -22,7 +22,7 @@ import java.util.Arrays;
 import java.util.List;
 
 import org.apache.wicket.Component;
-import org.apache.wicket.IResourceListener;
+import org.apache.wicket.IRequestListener;
 import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.MarkupStream;
@@ -49,7 +49,7 @@ import org.apache.wicket.request.resource.ResourceReference;
  * @author Jonathan Locke
  * @author Tobias Soloschenko
  */
-public class Image extends WebComponent implements IResourceListener
+public class Image extends WebComponent implements IRequestListener
 {
 	private static final long serialVersionUID = 1L;
 
@@ -210,6 +210,12 @@ public class Image extends WebComponent implements IResourceListener
 		this(id, new Model<>(string));
 	}
 
+	@Override
+	public boolean includeRenderCount()
+	{
+		return false;
+	}
+	
 	/**
 	 * @see org.apache.wicket.IResourceListener#onResourceRequested()
 	 */
@@ -582,9 +588,7 @@ public class Image extends WebComponent implements IResourceListener
 	@Override
 	public boolean canCallListenerInterface(Method method)
 	{
-		boolean isResource = method != null &&
-			IResourceListener.class.isAssignableFrom(method.getDeclaringClass());
-		if (isResource && isVisibleInHierarchy())
+		if (isVisibleInHierarchy())
 		{
 			// when the image data is requested we do not care if this component
 			// is enabled in

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/wicket-core/src/main/java/org/apache/wicket/markup/html/image/resource/LocalizedImageResource.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/image/resource/LocalizedImageResource.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/image/resource/LocalizedImageResource.java
index 10f25f0..93a2e39 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/image/resource/LocalizedImageResource.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/image/resource/LocalizedImageResource.java
@@ -20,9 +20,7 @@ import java.util.Locale;
 
 import org.apache.wicket.Application;
 import org.apache.wicket.Component;
-import org.apache.wicket.util.io.IClusterable;
 import org.apache.wicket.IResourceFactory;
-import org.apache.wicket.IResourceListener;
 import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.markup.ComponentTag;
@@ -33,6 +31,7 @@ import org.apache.wicket.request.resource.IResource;
 import org.apache.wicket.request.resource.IResource.Attributes;
 import org.apache.wicket.request.resource.PackageResourceReference;
 import org.apache.wicket.request.resource.ResourceReference;
+import org.apache.wicket.util.io.IClusterable;
 import org.apache.wicket.util.lang.Objects;
 import org.apache.wicket.util.parse.metapattern.Group;
 import org.apache.wicket.util.parse.metapattern.MetaPattern;
@@ -333,7 +332,7 @@ public final class LocalizedImageResource implements IClusterable
 		else
 		{
 			// Create URL to component
-			url = component.urlFor(IResourceListener.INTERFACE, resourceParameters);
+			url = component.urlFor(resourceParameters);
 		}
 
 		// Set the SRC attribute to point to the component or shared resource

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/ILinkListener.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/ILinkListener.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/ILinkListener.java
deleted file mode 100644
index c2d37f1..0000000
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/ILinkListener.java
+++ /dev/null
@@ -1,32 +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.markup.html.link;
-
-import org.apache.wicket.IRequestListener;
-import org.apache.wicket.RequestListenerInterface;
-
-/**
- * Listener method for link clicks.
- * 
- * @author Jonathan Locke
- */
-public interface ILinkListener extends IRequestListener
-{
-	/** Listener interface */
-	RequestListenerInterface INTERFACE = new RequestListenerInterface(
-		ILinkListener.class);
-}

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/InlineFrame.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/InlineFrame.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/InlineFrame.java
index 566bdae..0663620 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/InlineFrame.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/InlineFrame.java
@@ -16,6 +16,7 @@
  */
 package org.apache.wicket.markup.html.link;
 
+import org.apache.wicket.IRequestListener;
 import org.apache.wicket.Page;
 import org.apache.wicket.core.request.handler.IPageProvider;
 import org.apache.wicket.core.request.handler.PageProvider;
@@ -33,7 +34,7 @@ import org.apache.wicket.request.mapper.parameter.PageParameters;
  * 
  */
 
-public class InlineFrame extends WebMarkupContainer implements ILinkListener
+public class InlineFrame extends WebMarkupContainer implements IRequestListener
 {
 	private static final long serialVersionUID = 1L;
 
@@ -122,7 +123,7 @@ public class InlineFrame extends WebMarkupContainer implements ILinkListener
 	 */
 	protected CharSequence getURL()
 	{
-		return urlFor(ILinkListener.INTERFACE, new PageParameters());
+		return urlFor(new PageParameters());
 	}
 
 	/**
@@ -146,6 +147,12 @@ public class InlineFrame extends WebMarkupContainer implements ILinkListener
 		super.onComponentTag(tag);
 	}
 
+	@Override
+	public boolean includeRenderCount()
+	{
+		return true;
+	}
+	
 	/**
 	 * @see org.apache.wicket.markup.html.link.ILinkListener#onLinkClicked()
 	 */

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/Link.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/Link.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/Link.java
index b5263fe..e7374af 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/Link.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/Link.java
@@ -18,6 +18,7 @@ package org.apache.wicket.markup.html.link;
 
 import org.apache.wicket.Component;
 import org.apache.wicket.IGenericComponent;
+import org.apache.wicket.IRequestListener;
 import org.apache.wicket.Page;
 import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.lambda.Lambdas;
@@ -75,7 +76,7 @@ import org.apache.wicket.request.mapper.parameter.PageParameters;
  * @param <T>
  *            type of model object
  */
-public abstract class Link<T> extends AbstractLink implements ILinkListener, IGenericComponent<T, Link<T>>
+public abstract class Link<T> extends AbstractLink implements IRequestListener, IGenericComponent<T, Link<T>>
 {
 	private static final long serialVersionUID = 1L;
 
@@ -182,6 +183,12 @@ public abstract class Link<T> extends AbstractLink implements ILinkListener, IGe
 		return Lambdas.link(id, onClick);
 	}
 
+	@Override
+	public boolean includeRenderCount()
+	{
+		return true;
+	}
+	
 	/**
 	 * THIS METHOD IS NOT PART OF THE WICKET API. DO NOT ATTEMPT TO OVERRIDE OR CALL IT.
 	 * 
@@ -331,7 +338,7 @@ public abstract class Link<T> extends AbstractLink implements ILinkListener, IGe
 	 */
 	protected CharSequence getURL()
 	{
-		return urlFor(ILinkListener.INTERFACE, new PageParameters());
+		return urlFor(new PageParameters());
 	}
 
 	/**

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/ResourceLink.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/ResourceLink.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/ResourceLink.java
index b8bbff4..6e8e73d 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/ResourceLink.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/ResourceLink.java
@@ -16,7 +16,7 @@
  */
 package org.apache.wicket.markup.html.link;
 
-import org.apache.wicket.IResourceListener;
+import org.apache.wicket.IRequestListener;
 import org.apache.wicket.request.cycle.RequestCycle;
 import org.apache.wicket.request.handler.resource.ResourceReferenceRequestHandler;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
@@ -31,7 +31,7 @@ import org.apache.wicket.request.resource.ResourceReference;
  * @param <T>
  *            type of model object
  */
-public class ResourceLink<T> extends Link<T> implements IResourceListener
+public class ResourceLink<T> extends Link<T> implements IRequestListener
 {
 	private static final long serialVersionUID = 1L;
 
@@ -103,6 +103,12 @@ public class ResourceLink<T> extends Link<T> implements IResourceListener
 	{
 	}
 
+	@Override
+	public boolean includeRenderCount()
+	{
+		return false;
+	}
+	
 	/**
 	 * @see org.apache.wicket.IResourceListener#onResourceRequested()
 	 */
@@ -142,6 +148,6 @@ public class ResourceLink<T> extends Link<T> implements IResourceListener
 			return getRequestCycle().urlFor(
 				new ResourceReferenceRequestHandler(resourceReference, resourceParameters));
 		}
-		return urlFor(IResourceListener.INTERFACE, resourceParameters);
+		return urlFor(resourceParameters);
 	}
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/StatelessLink.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/StatelessLink.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/StatelessLink.java
index 9a4a5c5..62e0581 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/StatelessLink.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/StatelessLink.java
@@ -50,8 +50,14 @@ public abstract class StatelessLink<T> extends Link<T>
 	}
 
 	@Override
+	public boolean includeRenderCount()
+	{
+		return false;
+	}
+	
+	@Override
 	protected CharSequence getURL()
 	{
-		return urlFor(ILinkListener.INTERFACE, getPage().getPageParameters());
+		return urlFor(getPage().getPageParameters());
 	}
 }


[2/3] wicket git commit: remove RequestListenerInterface

Posted by sv...@apache.org.
http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/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 4266f6c..d7e18a4 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
@@ -40,8 +40,6 @@ import javax.servlet.ServletContext;
 import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpSession;
 
-import junit.framework.AssertionFailedError;
-
 import org.apache.wicket.Application;
 import org.apache.wicket.Component;
 import org.apache.wicket.IPageManagerProvider;
@@ -50,7 +48,6 @@ import org.apache.wicket.IRequestCycleProvider;
 import org.apache.wicket.IRequestListener;
 import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.Page;
-import org.apache.wicket.RequestListenerInterface;
 import org.apache.wicket.Session;
 import org.apache.wicket.ThreadContext;
 import org.apache.wicket.WicketRuntimeException;
@@ -82,12 +79,10 @@ import org.apache.wicket.markup.html.WebPage;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.form.FormComponent;
-import org.apache.wicket.markup.html.form.IFormSubmitListener;
 import org.apache.wicket.markup.html.form.SubmitLink;
 import org.apache.wicket.markup.html.link.AbstractLink;
 import org.apache.wicket.markup.html.link.BookmarkablePageLink;
 import org.apache.wicket.markup.html.link.ExternalLink;
-import org.apache.wicket.markup.html.link.ILinkListener;
 import org.apache.wicket.markup.html.link.Link;
 import org.apache.wicket.markup.html.link.ResourceLink;
 import org.apache.wicket.markup.html.list.ListView;
@@ -140,6 +135,8 @@ import org.apache.wicket.util.visit.IVisitor;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import junit.framework.AssertionFailedError;
+
 /**
  * A helper class to ease unit testing of Wicket applications without the need for a servlet
  * container. See javadoc of <code>WicketTester</code> for example usage. This class can be used as
@@ -1089,7 +1086,7 @@ public class BaseWicketTester
 	{
 		Args.notNull(link, "link");
 
-		Url url = Url.parse(link.urlFor(ILinkListener.INTERFACE, new PageParameters()).toString());
+		Url url = Url.parse(link.urlFor(new PageParameters()).toString());
 		return transform(url).toString();
 	}
 
@@ -1103,14 +1100,14 @@ public class BaseWicketTester
 	 * @param component
 	 * @param listener
 	 */
-	public void executeListener(final Component component, final RequestListenerInterface listener)
+	public void executeListener(final Component component)
 	{
 		Args.notNull(component, "component");
 
 		// 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(
-			component.getPage(), component), listener);
+			component.getPage(), component));
 
 		Url url = urlFor(handler);
 		request.setUrl(url);
@@ -1129,39 +1126,19 @@ public class BaseWicketTester
 	 * @param component
 	 * @param listener
 	 */
-	public void invokeListener(final Component component, final RequestListenerInterface listener)
+	public void invokeListener(final Component component)
 	{
 		Args.notNull(component, "component");
 
 		// 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(
-			component.getPage(), component), listener);
+			component.getPage(), component));
 
 		processRequest(handler);
 	}
 
 	/**
-	 * Builds and processes a request suitable for invoking a listener. The <code>Component</code>
-	 * must implement any of the known <code>IListener</code> interfaces.
-	 * 
-	 * @param component
-	 *            the listener to invoke
-	 */
-	public void executeListener(final Component component)
-	{
-		Args.notNull(component, "component");
-
-		for (RequestListenerInterface iface : RequestListenerInterface.getRegisteredInterfaces())
-		{
-			if (iface.getListenerInterfaceClass().isAssignableFrom(component.getClass()))
-			{
-				executeListener(component, iface);
-			}
-		}
-	}
-
-	/**
 	 * Builds and processes a request suitable for executing an <code>AbstractAjaxBehavior</code>.
 	 * 
 	 * @param behavior
@@ -2007,7 +1984,7 @@ public class BaseWicketTester
 			}
 			else
 			{
-				executeListener(link, ILinkListener.INTERFACE);
+				executeListener(link);
 			}
 		}
 		// The link requires AJAX
@@ -2048,7 +2025,7 @@ public class BaseWicketTester
 		Form<?> form = (Form<?>)getComponentFromLastRenderedPage(path);
 		Url url = Url.parse(
 			form.getRootForm()
-				.urlFor(IFormSubmitListener.INTERFACE, new PageParameters())
+				.urlFor(new PageParameters())
 				.toString(), Charset.forName(request.getCharacterEncoding()));
 
 		// make url absolute

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/wicket-core/src/main/java/org/apache/wicket/util/tester/FormTester.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/util/tester/FormTester.java b/wicket-core/src/main/java/org/apache/wicket/util/tester/FormTester.java
index 91c8890..ed18e0e 100644
--- a/wicket-core/src/main/java/org/apache/wicket/util/tester/FormTester.java
+++ b/wicket-core/src/main/java/org/apache/wicket/util/tester/FormTester.java
@@ -35,7 +35,6 @@ import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.form.FormComponent;
 import org.apache.wicket.markup.html.form.IChoiceRenderer;
 import org.apache.wicket.markup.html.form.IFormSubmittingComponent;
-import org.apache.wicket.markup.html.form.IOnChangeListener;
 import org.apache.wicket.markup.html.form.ListMultipleChoice;
 import org.apache.wicket.markup.html.form.Radio;
 import org.apache.wicket.markup.html.form.RadioGroup;
@@ -517,7 +516,7 @@ public class FormTester
 				boolean wantOnSelectionChangedNotifications = (Boolean)wantOnSelectionChangedNotificationsMethod.invoke(component);
 				if (wantOnSelectionChangedNotifications)
 				{
-					tester.invokeListener(component, IOnChangeListener.INTERFACE);
+					tester.invokeListener(component);
 				}
 			}
 			catch (final Exception x)

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/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 7f819e1..7497351 100644
--- a/wicket-core/src/test/java/org/apache/wicket/BehaviorRequestTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/BehaviorRequestTest.java
@@ -17,16 +17,15 @@
 package org.apache.wicket;
 
 import org.apache.wicket.behavior.Behavior;
-import org.apache.wicket.behavior.IBehaviorListener;
+import org.apache.wicket.core.request.handler.IPageAndComponentProvider;
+import org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler;
+import org.apache.wicket.core.request.handler.ListenerInvocationNotAllowedException;
+import org.apache.wicket.core.request.handler.PageAndComponentProvider;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.IMarkupResourceStreamProvider;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.WebPage;
 import org.apache.wicket.request.IRequestHandler;
-import org.apache.wicket.core.request.handler.IPageAndComponentProvider;
-import org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler;
-import org.apache.wicket.core.request.handler.ListenerInvocationNotAllowedException;
-import org.apache.wicket.core.request.handler.PageAndComponentProvider;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.util.resource.IResourceStream;
 import org.apache.wicket.util.resource.StringResourceStream;
@@ -84,8 +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,
-			IBehaviorListener.INTERFACE, index);
+		final IRequestHandler handler = new ListenerInterfaceRequestHandler(provider, index);
 
 		return tester.urlFor(handler).toString();
 	}
@@ -125,7 +123,7 @@ public class BehaviorRequestTest extends WicketTestCase
 
 	/**
 	 */
-	private static class TestCallbackBehavior extends Behavior implements IBehaviorListener
+	private static class TestCallbackBehavior extends Behavior implements IRequestListener
 	{
 		private static final long serialVersionUID = 1L;
 
@@ -136,11 +134,16 @@ public class BehaviorRequestTest extends WicketTestCase
 		public void onComponentTag(Component component, ComponentTag tag)
 		{
 			super.onComponentTag(component, tag);
-			tag.put("href",
-				component.urlFor(this, IBehaviorListener.INTERFACE, new PageParameters()));
+			tag.put("href", component.urlFor(this, new PageParameters()));
 		}
 
 		@Override
+		public boolean includeRenderCount()
+		{
+			return true;
+		}
+		
+		@Override
 		public void onRequest()
 		{
 			called = true;

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/wicket-core/src/test/java/org/apache/wicket/BehaviorUrlTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/BehaviorUrlTest.java b/wicket-core/src/test/java/org/apache/wicket/BehaviorUrlTest.java
index b16ff43..fdcff04 100644
--- a/wicket-core/src/test/java/org/apache/wicket/BehaviorUrlTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/BehaviorUrlTest.java
@@ -19,7 +19,6 @@ package org.apache.wicket;
 import org.apache.wicket.ajax.AjaxEventBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.behavior.Behavior;
-import org.apache.wicket.behavior.IBehaviorListener;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.IMarkupResourceStreamProvider;
 import org.apache.wicket.markup.html.WebMarkupContainer;
@@ -125,7 +124,7 @@ public class BehaviorUrlTest extends WicketTestCase
 
 	/**
 	 */
-	private static class TestCallbackBehavior extends Behavior implements IBehaviorListener
+	private static class TestCallbackBehavior extends Behavior implements IRequestListener
 	{
 		private static final long serialVersionUID = 1L;
 
@@ -134,10 +133,16 @@ public class BehaviorUrlTest extends WicketTestCase
 		{
 			super.onComponentTag(component, tag);
 			tag.put("href",
-				component.urlFor(this, IBehaviorListener.INTERFACE, new PageParameters()));
+				component.urlFor(this, new PageParameters()));
 		}
 
 		@Override
+		public boolean includeRenderCount()
+		{
+			return true;
+		}
+		
+		@Override
 		public void onRequest()
 		{
 		}

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/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 7a6a678..c4465bd 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,8 @@
 package org.apache.wicket;
 
 import org.apache.wicket.behavior.Behavior;
-import org.apache.wicket.behavior.IBehaviorListener;
+import org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler;
+import org.apache.wicket.core.request.handler.PageAndComponentProvider;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.IMarkupResourceStreamProvider;
 import org.apache.wicket.markup.html.WebPage;
@@ -25,8 +26,6 @@ import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.model.CompoundPropertyModel;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.request.IRequestHandler;
-import org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler;
-import org.apache.wicket.core.request.handler.PageAndComponentProvider;
 import org.apache.wicket.util.resource.IResourceStream;
 import org.apache.wicket.util.resource.StringResourceStream;
 import org.apache.wicket.util.tester.WicketTestCase;
@@ -109,7 +108,7 @@ public class ComponentWithLazyModelCreationTest extends WicketTestCase
 		}
 	}
 
-	private static class TestCallbackBehavior extends Behavior implements IBehaviorListener
+	private static class TestCallbackBehavior extends Behavior implements IRequestListener
 	{
 		private static final long serialVersionUID = 1L;
 		private boolean requested;
@@ -122,12 +121,17 @@ public class ComponentWithLazyModelCreationTest extends WicketTestCase
 			super.onComponentTag(component, tag);
 			int index = component.getBehaviorId(this);
 			IRequestHandler handler = new ListenerInterfaceRequestHandler(
-				new PageAndComponentProvider(component.getPage(), component),
-				IBehaviorListener.INTERFACE, index);
+				new PageAndComponentProvider(component.getPage(), component), index);
 			statefullUrl = component.getRequestCycle().mapUrlFor(handler).toString();
 		}
 
 		@Override
+		public boolean includeRenderCount()
+		{
+			return true;
+		}
+		
+		@Override
 		public void onRequest()
 		{
 			requested = true;

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/wicket-core/src/test/java/org/apache/wicket/behavior/ImmutableBehaviorIdsTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/behavior/ImmutableBehaviorIdsTest.java b/wicket-core/src/test/java/org/apache/wicket/behavior/ImmutableBehaviorIdsTest.java
index 2698efc..1bb7f24 100644
--- a/wicket-core/src/test/java/org/apache/wicket/behavior/ImmutableBehaviorIdsTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/behavior/ImmutableBehaviorIdsTest.java
@@ -20,6 +20,7 @@ import java.util.List;
 
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.Component;
+import org.apache.wicket.IRequestListener;
 import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.IMarkupResourceStreamProvider;
@@ -150,7 +151,7 @@ public class ImmutableBehaviorIdsTest extends WicketTestCase
 
 	}
 
-	private static class LinkBehavior extends Behavior implements IBehaviorListener
+	private static class LinkBehavior extends Behavior implements IRequestListener
 	{
 		private static final long serialVersionUID = 1L;
 
@@ -165,10 +166,16 @@ public class ImmutableBehaviorIdsTest extends WicketTestCase
 		public void onComponentTag(Component component, ComponentTag tag)
 		{
 			super.onComponentTag(component, tag);
-			tag.put(attr, component.urlFor(this, IBehaviorListener.INTERFACE, new PageParameters()));
+			tag.put(attr, component.urlFor(this, new PageParameters()));
 		}
 
 		@Override
+		public boolean includeRenderCount()
+		{
+			return true;
+		}
+		
+		@Override
 		public void onRequest()
 		{
 		}

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/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
index 62a84ff..930bec3 100644
--- 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
@@ -21,15 +21,12 @@ import java.text.ParseException;
 
 import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.Page;
-import org.apache.wicket.RequestListenerInterface;
 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.markup.IMarkupResourceStreamProvider;
 import org.apache.wicket.markup.html.WebPage;
-import org.apache.wicket.markup.html.form.IOnChangeListener;
-import org.apache.wicket.markup.html.link.ILinkListener;
 import org.apache.wicket.request.Url;
 import org.apache.wicket.resource.DummyPage;
 import org.apache.wicket.util.resource.IResourceStream;
@@ -53,14 +50,14 @@ public class ListenerInterfaceRequestHandlerTest extends WicketTestCase
 		// non-existing component on fresh page is ignored
 		PageAndComponentProvider freshPage = new PageAndComponentProvider(DummyPage.class, null,
 			"foo");
-		new ListenerInterfaceRequestHandler(freshPage, IOnChangeListener.INTERFACE).respond(tester
+		new ListenerInterfaceRequestHandler(freshPage).respond(tester
 			.getRequestCycle());
 
 		// non-existing component on old page fails
 		PageAndComponentProvider oldPage = new PageAndComponentProvider(new DummyPage(), "foo");
 		try
 		{
-			new ListenerInterfaceRequestHandler(oldPage, IOnChangeListener.INTERFACE)
+			new ListenerInterfaceRequestHandler(oldPage)
 				.respond(tester.getRequestCycle());
 			fail();
 		}
@@ -149,8 +146,7 @@ public class ListenerInterfaceRequestHandlerTest extends WicketTestCase
 	public void isPageInstanceCreatedOnClassLinks()
 	{
 		PageAndComponentProvider provider = new PageAndComponentProvider(Page.class, "link");
-		ListenerInterfaceRequestHandler handler = new ListenerInterfaceRequestHandler(provider,
-			RequestListenerInterface.forName(ILinkListener.class.getSimpleName()));
+		ListenerInterfaceRequestHandler handler = new ListenerInterfaceRequestHandler(provider);
 		assertFalse("Handler should not report a page instance is available ",
 			handler.isPageInstanceCreated());
 	}

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/AbstractMapperTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/AbstractMapperTest.java b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/AbstractMapperTest.java
index 8d0a4a2..d2022a8 100644
--- a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/AbstractMapperTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/AbstractMapperTest.java
@@ -19,13 +19,10 @@ package org.apache.wicket.core.request.mapper;
 import java.nio.charset.Charset;
 import java.util.Locale;
 
-import org.apache.wicket.RequestListenerInterface;
-import org.apache.wicket.markup.html.link.ILinkListener;
 import org.apache.wicket.request.Request;
 import org.apache.wicket.request.Url;
 import org.apache.wicket.request.component.IRequestablePage;
 import org.junit.Assert;
-import org.junit.Before;
 
 /**
  * @author Matej Knopp
@@ -41,16 +38,6 @@ public abstract class AbstractMapperTest extends Assert
 
 	protected TestMapperContext context = new TestMapperContext();
 
-	/**
-	 * @throws Exception
-	 */
-	@Before
-	public void before() throws Exception
-	{
-		// inititalize the interface
-		RequestListenerInterface i = ILinkListener.INTERFACE;
-	}
-
 	protected Request getRequest(final Url url)
 	{
 		return new Request()

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/AbstractResourceReferenceMapperTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/AbstractResourceReferenceMapperTest.java b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/AbstractResourceReferenceMapperTest.java
index 123fbb1..da486dc 100644
--- a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/AbstractResourceReferenceMapperTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/AbstractResourceReferenceMapperTest.java
@@ -207,7 +207,6 @@ public abstract class AbstractResourceReferenceMapperTest extends AbstractMapper
 		}
 	};
 
-	@Override
 	@Before
 	public void before() throws Exception
 	{

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/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 bcd4ba6..3e90cb1 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
@@ -16,12 +16,13 @@
  */
 package org.apache.wicket.core.request.mapper;
 
-import java.nio.charset.Charset;
-import java.util.Locale;
 import static org.hamcrest.CoreMatchers.instanceOf;
 import static org.hamcrest.CoreMatchers.nullValue;
 import static org.hamcrest.Matchers.is;
 
+import java.nio.charset.Charset;
+import java.util.Locale;
+
 import org.apache.wicket.MockPage;
 import org.apache.wicket.core.request.handler.BookmarkableListenerInterfaceRequestHandler;
 import org.apache.wicket.core.request.handler.BookmarkablePageRequestHandler;
@@ -31,7 +32,6 @@ import org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler;
 import org.apache.wicket.core.request.handler.PageAndComponentProvider;
 import org.apache.wicket.core.request.handler.PageProvider;
 import org.apache.wicket.core.request.handler.RenderPageRequestHandler;
-import org.apache.wicket.markup.html.link.ILinkListener;
 import org.apache.wicket.request.IRequestHandler;
 import org.apache.wicket.request.Request;
 import org.apache.wicket.request.Url;
@@ -184,7 +184,6 @@ public class BookmarkableMapperTest extends AbstractMapperTest
 		IRequestablePage page = h.getPage();
 		checkPage(page, 15);
 
-		assertEquals(ILinkListener.INTERFACE, h.getListenerInterface());
 		assertEquals("foo:bar", h.getComponent().getPageRelativePath());
 		assertNull(h.getBehaviorIndex());
 	}
@@ -205,7 +204,6 @@ public class BookmarkableMapperTest extends AbstractMapperTest
 		IRequestablePage page = h.getPage();
 		checkPage(page, 15);
 
-		assertEquals(ILinkListener.INTERFACE, h.getListenerInterface());
 		assertEquals("foo:bar", h.getComponent().getPageRelativePath());
 
 		PageParameters p = page.getPageParameters();
@@ -231,7 +229,6 @@ public class BookmarkableMapperTest extends AbstractMapperTest
 		IRequestablePage page = h.getPage();
 		checkPage(page, 15);
 
-		assertEquals(ILinkListener.INTERFACE, h.getListenerInterface());
 		assertEquals("foo:bar", h.getComponent().getPageRelativePath());
 		assertEquals((Object)4, h.getBehaviorIndex());
 	}
@@ -610,8 +607,7 @@ public class BookmarkableMapperTest extends AbstractMapperTest
 		IRequestableComponent c = page.get("foo:bar");
 
 		PageAndComponentProvider provider = new PageAndComponentProvider(page, c);
-		IRequestHandler handler = new BookmarkableListenerInterfaceRequestHandler(provider,
-			ILinkListener.INTERFACE);
+		IRequestHandler handler = new BookmarkableListenerInterfaceRequestHandler(provider);
 
 		Url url = encoder.mapHandler(handler);
 
@@ -639,8 +635,7 @@ public class BookmarkableMapperTest extends AbstractMapperTest
 		IRequestableComponent c = page.get("foo:bar");
 
 		PageAndComponentProvider provider = new PageAndComponentProvider(page, c);
-		IRequestHandler handler = new BookmarkableListenerInterfaceRequestHandler(provider,
-			ILinkListener.INTERFACE, 4);
+		IRequestHandler handler = new BookmarkableListenerInterfaceRequestHandler(provider, 4);
 
 		Url url = encoder.mapHandler(handler);
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/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 b44e214..98990ed 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
@@ -30,7 +30,6 @@ import org.apache.wicket.core.request.handler.RequestSettingRequestHandler;
 import org.apache.wicket.markup.IMarkupFragment;
 import org.apache.wicket.markup.Markup;
 import org.apache.wicket.markup.html.WebPage;
-import org.apache.wicket.markup.html.link.ILinkListener;
 import org.apache.wicket.protocol.http.PageExpiredException;
 import org.apache.wicket.protocol.http.WebApplication;
 import org.apache.wicket.request.IRequestHandler;
@@ -75,7 +74,6 @@ public class CryptoMapperTest extends AbstractMapperTest
 	 *
 	 * @throws Exception
 	 */
-	@Override
 	@Before
 	public void before() throws Exception
 	{
@@ -164,7 +162,7 @@ public class CryptoMapperTest extends AbstractMapperTest
 	public void homePageForceEncryptionOfRequestListener()
 	{
 		PageAndComponentProvider provider = new PageAndComponentProvider(tester.getApplication().getHomePage(), "some:link");
-		IRequestHandler requestHandler = new BookmarkableListenerInterfaceRequestHandler(provider, ILinkListener.INTERFACE);
+		IRequestHandler requestHandler = new BookmarkableListenerInterfaceRequestHandler(provider);
 		Url plainUrl = mapper.getDelegateMapper().mapHandler(requestHandler);
 		assertTrue("Plain URL for home page has segments: " + plainUrl.toString(), plainUrl.getSegments().isEmpty());
 		assertNull(mapper.mapRequest(getRequest(plainUrl)));
@@ -244,7 +242,7 @@ public class CryptoMapperTest extends AbstractMapperTest
 	public void bookmarkablePageForceEncryptionOfRequestListener()
 	{
 		PageAndComponentProvider provider = new PageAndComponentProvider(Page2.class, "some:link");
-		IRequestHandler requestHandler = new BookmarkableListenerInterfaceRequestHandler(provider, ILinkListener.INTERFACE);
+		IRequestHandler requestHandler = new BookmarkableListenerInterfaceRequestHandler(provider);
 		Url plainUrl = mapper.getDelegateMapper().mapHandler(requestHandler);
 		assertTrue("Plain text request listener URL for bookmarkable page does not start with: "
 			+ PLAIN_BOOKMARKABLE_URL + ": " + plainUrl.toString(),
@@ -337,7 +335,7 @@ public class CryptoMapperTest extends AbstractMapperTest
 		final String componentPath = "some:path:to:link";
 
 		PageAndComponentProvider provider = new PageAndComponentProvider(Page1.class, componentPath);
-		IRequestHandler requestHandler = new ListenerInterfaceRequestHandler(provider, ILinkListener.INTERFACE);
+		IRequestHandler requestHandler = new ListenerInterfaceRequestHandler(provider);
 
 		Url plainUrl = mapper.getDelegateMapper().mapHandler(requestHandler);
 		assertTrue(plainUrl.toString().startsWith(MOUNTED_URL));
@@ -582,8 +580,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,
-			ILinkListener.INTERFACE);
+		IRequestHandler handler = new ListenerInterfaceRequestHandler(provider);
 
 		Url url = mapper.mapHandler(handler);
 		url.addQueryParameter("q", "foo");

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/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 2ad6033..a917d67 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
@@ -27,7 +27,6 @@ import org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler;
 import org.apache.wicket.core.request.handler.PageAndComponentProvider;
 import org.apache.wicket.core.request.handler.PageProvider;
 import org.apache.wicket.core.request.handler.RenderPageRequestHandler;
-import org.apache.wicket.markup.html.link.ILinkListener;
 import org.apache.wicket.request.IRequestHandler;
 import org.apache.wicket.request.IRequestMapper;
 import org.apache.wicket.request.Request;
@@ -218,7 +217,6 @@ public class MountedMapperTest extends AbstractMapperTest
 		IRequestablePage page = h.getPage();
 		checkPage(page, 15);
 
-		assertEquals(ILinkListener.INTERFACE, h.getListenerInterface());
 		assertEquals("foo:bar", h.getComponent().getPageRelativePath());
 		assertNull(h.getBehaviorIndex());
 	}
@@ -238,7 +236,6 @@ public class MountedMapperTest extends AbstractMapperTest
 		IRequestablePage page = h.getPage();
 		checkPage(page, 15);
 
-		assertEquals(ILinkListener.INTERFACE, h.getListenerInterface());
 		assertEquals("foo:bar", h.getComponent().getPageRelativePath());
 
 		PageParameters p = page.getPageParameters();
@@ -263,7 +260,6 @@ public class MountedMapperTest extends AbstractMapperTest
 		IRequestablePage page = h.getPage();
 		checkPage(page, 15);
 
-		assertEquals(ILinkListener.INTERFACE, h.getListenerInterface());
 		assertEquals("foo:bar", h.getComponent().getPageRelativePath());
 		assertEquals((Object)4, h.getBehaviorIndex());
 	}
@@ -339,7 +335,6 @@ public class MountedMapperTest extends AbstractMapperTest
 		IRequestablePage page = h.getPage();
 		checkPage(page, 1);
 
-		assertEquals(ILinkListener.INTERFACE, h.getListenerInterface());
 		assertEquals("foo:bar", h.getComponent().getPageRelativePath());
 		assertNull(h.getBehaviorIndex());
 
@@ -467,8 +462,7 @@ public class MountedMapperTest extends AbstractMapperTest
 		IRequestableComponent c = page.get("foo:bar");
 
 		PageAndComponentProvider provider = new PageAndComponentProvider(page, c);
-		IRequestHandler handler = new BookmarkableListenerInterfaceRequestHandler(provider,
-			ILinkListener.INTERFACE);
+		IRequestHandler handler = new BookmarkableListenerInterfaceRequestHandler(provider);
 
 		Url url = encoder.mapHandler(handler);
 
@@ -503,8 +497,7 @@ public class MountedMapperTest extends AbstractMapperTest
 		IRequestableComponent c = page.get("foo:bar");
 
 		PageAndComponentProvider provider = new PageAndComponentProvider(page, c);
-		IRequestHandler handler = new ListenerInterfaceRequestHandler(provider,
-			ILinkListener.INTERFACE);
+		IRequestHandler handler = new ListenerInterfaceRequestHandler(provider);
 
 		Url url = encoder.mapHandler(handler);
 
@@ -532,8 +525,7 @@ public class MountedMapperTest extends AbstractMapperTest
 		IRequestableComponent c = page.get("foo:bar");
 
 		PageAndComponentProvider provider = new PageAndComponentProvider(page, c);
-		IRequestHandler handler = new BookmarkableListenerInterfaceRequestHandler(provider,
-			ILinkListener.INTERFACE, 4);
+		IRequestHandler handler = new BookmarkableListenerInterfaceRequestHandler(provider, 4);
 
 		Url url = encoder.mapHandler(handler);
 
@@ -563,8 +555,7 @@ public class MountedMapperTest extends AbstractMapperTest
 		IRequestableComponent c = page.get("foo:bar");
 
 		PageAndComponentProvider provider = new PageAndComponentProvider(page, c);
-		IRequestHandler handler = new ListenerInterfaceRequestHandler(provider,
-			ILinkListener.INTERFACE, 4);
+		IRequestHandler handler = new ListenerInterfaceRequestHandler(provider, 4);
 
 		Url url = encoder.mapHandler(handler);
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/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 3716397..f41ec26 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
@@ -17,8 +17,8 @@
 package org.apache.wicket.core.request.mapper;
 
 import static org.hamcrest.Matchers.instanceOf;
-import static org.hamcrest.Matchers.nullValue;
 import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.nullValue;
 
 import org.apache.wicket.MockPage;
 import org.apache.wicket.core.request.handler.BookmarkableListenerInterfaceRequestHandler;
@@ -30,7 +30,6 @@ import org.apache.wicket.core.request.handler.PageAndComponentProvider;
 import org.apache.wicket.core.request.handler.PageProvider;
 import org.apache.wicket.core.request.handler.RenderPageRequestHandler;
 import org.apache.wicket.core.request.mapper.PackageMapperTest.OuterPage.InnerPage;
-import org.apache.wicket.markup.html.link.ILinkListener;
 import org.apache.wicket.mock.MockWebRequest;
 import org.apache.wicket.request.IRequestHandler;
 import org.apache.wicket.request.Url;
@@ -251,7 +250,6 @@ public class PackageMapperTest extends AbstractMapperTest
 		IRequestablePage page = h.getPage();
 		checkPage(page, 15);
 
-		assertEquals(ILinkListener.INTERFACE, h.getListenerInterface());
 		assertEquals("foo:bar", h.getComponent().getPageRelativePath());
 		assertNull(h.getBehaviorIndex());
 	}
@@ -271,7 +269,6 @@ public class PackageMapperTest extends AbstractMapperTest
 		IRequestablePage page = h.getPage();
 		checkPage(page, 15);
 
-		assertEquals(ILinkListener.INTERFACE, h.getListenerInterface());
 		assertEquals("foo:bar", h.getComponent().getPageRelativePath());
 
 		PageParameters p = h.getPageParameters();
@@ -296,7 +293,6 @@ public class PackageMapperTest extends AbstractMapperTest
 		IRequestablePage page = h.getPage();
 		checkPage(page, 15);
 
-		assertEquals(ILinkListener.INTERFACE, h.getListenerInterface());
 		assertEquals("foo:bar", h.getComponent().getPageRelativePath());
 		assertEquals((Object)4, h.getBehaviorIndex());
 	}
@@ -509,8 +505,7 @@ public class PackageMapperTest extends AbstractMapperTest
 		IRequestableComponent c = page.get("foo:bar");
 
 		PageAndComponentProvider provider = new PageAndComponentProvider(page, c);
-		IRequestHandler handler = new BookmarkableListenerInterfaceRequestHandler(provider,
-			ILinkListener.INTERFACE);
+		IRequestHandler handler = new BookmarkableListenerInterfaceRequestHandler(provider);
 
 		Url url = encoder.mapHandler(handler);
 
@@ -537,8 +532,7 @@ public class PackageMapperTest extends AbstractMapperTest
 		IRequestableComponent c = page.get("foo:bar");
 
 		PageAndComponentProvider provider = new PageAndComponentProvider(page, c);
-		IRequestHandler handler = new BookmarkableListenerInterfaceRequestHandler(provider,
-			ILinkListener.INTERFACE, 4);
+		IRequestHandler handler = new BookmarkableListenerInterfaceRequestHandler(provider, 4);
 
 		Url url = encoder.mapHandler(handler);
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/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 fefd8c7..2bd8a57 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
@@ -28,7 +28,6 @@ import org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler;
 import org.apache.wicket.core.request.handler.PageAndComponentProvider;
 import org.apache.wicket.core.request.handler.PageProvider;
 import org.apache.wicket.core.request.handler.RenderPageRequestHandler;
-import org.apache.wicket.markup.html.link.ILinkListener;
 import org.apache.wicket.request.IRequestHandler;
 import org.apache.wicket.request.Request;
 import org.apache.wicket.request.Url;
@@ -96,7 +95,6 @@ public class PageInstanceMapperTest extends AbstractMapperTest
 		ListenerInterfaceRequestHandler h = (ListenerInterfaceRequestHandler)handler;
 		checkPage(h.getPage(), 4);
 		assertEquals(h.getComponent().getPageRelativePath(), "a:b:c");
-		assertEquals(ILinkListener.INTERFACE, h.getListenerInterface());
 		assertNull(h.getBehaviorIndex());
 	}
 
@@ -138,7 +136,6 @@ public class PageInstanceMapperTest extends AbstractMapperTest
 		ListenerInterfaceRequestHandler h = (ListenerInterfaceRequestHandler)handler;
 		checkPage(h.getPage(), 4);
 		assertEquals(h.getComponent().getPageRelativePath(), "a:b:c");
-		assertEquals(ILinkListener.INTERFACE, h.getListenerInterface());
 		assertEquals((Object)5, h.getBehaviorIndex());
 	}
 
@@ -290,8 +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,
-			ILinkListener.INTERFACE);
+		IRequestHandler handler = new ListenerInterfaceRequestHandler(provider);
 
 		Url url = encoder.mapHandler(handler);
 		assertEquals("wicket/page?15-5.ILinkListener-a-b-c", url.toString());

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/TestMapperContext.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/TestMapperContext.java b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/TestMapperContext.java
index b3e137a..a1b960d 100644
--- a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/TestMapperContext.java
+++ b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/TestMapperContext.java
@@ -17,8 +17,8 @@
 package org.apache.wicket.core.request.mapper;
 
 import org.apache.wicket.MockPage;
-import org.apache.wicket.RequestListenerInterface;
 import org.apache.wicket.WicketRuntimeException;
+import org.apache.wicket.core.request.handler.PageProvider;
 import org.apache.wicket.markup.MarkupParser;
 import org.apache.wicket.page.IPageManagerContext;
 import org.apache.wicket.page.PageStoreManager;
@@ -27,7 +27,6 @@ import org.apache.wicket.pageStore.IDataStore;
 import org.apache.wicket.pageStore.IPageStore;
 import org.apache.wicket.pageStore.memory.DummyPageManagerContext;
 import org.apache.wicket.request.component.IRequestablePage;
-import org.apache.wicket.core.request.handler.PageProvider;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.request.resource.ResourceReference;
 import org.apache.wicket.request.resource.ResourceReference.Key;
@@ -202,18 +201,6 @@ public class TestMapperContext implements IMapperContext
 	}
 
 	@Override
-	public RequestListenerInterface requestListenerInterfaceFromString(String interfaceName)
-	{
-		return RequestListenerInterface.forName(interfaceName);
-	}
-
-	@Override
-	public String requestListenerInterfaceToString(RequestListenerInterface listenerInterface)
-	{
-		return listenerInterface.getName();
-	}
-
-	@Override
 	public Class<? extends IRequestablePage> getHomePageClass()
 	{
 		return MockPage.class;

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/wicket-core/src/test/java/org/apache/wicket/request/mapper/info/ComponentInfoTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/mapper/info/ComponentInfoTest.java b/wicket-core/src/test/java/org/apache/wicket/request/mapper/info/ComponentInfoTest.java
index 7cc01ce..0a7ce91 100644
--- a/wicket-core/src/test/java/org/apache/wicket/request/mapper/info/ComponentInfoTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/request/mapper/info/ComponentInfoTest.java
@@ -33,7 +33,6 @@ public class ComponentInfoTest extends Assert
 	{
 		String s = "listener-component-path";
 		ComponentInfo info = ComponentInfo.parse(s);
-		assertEquals("listener", info.getListenerInterface());
 		assertEquals("component:path", info.getComponentPath());
 		assertNull(info.getBehaviorId());
 
@@ -60,7 +59,6 @@ public class ComponentInfoTest extends Assert
 		String s = "listener-";
 		ComponentInfo info = ComponentInfo.parse(s);
 		// empty component path is allowed - listener invoked on page
-		assertEquals("listener", info.getListenerInterface());
 		assertEquals("", info.getComponentPath());
 	}
 
@@ -93,7 +91,6 @@ public class ComponentInfoTest extends Assert
 	{
 		String s = "listener-compo~~nent-path";
 		ComponentInfo info = ComponentInfo.parse(s);
-		assertEquals("listener", info.getListenerInterface());
 		assertEquals("compo--nent:path", info.getComponentPath());
 		assertNull(info.getBehaviorId());
 
@@ -108,7 +105,6 @@ public class ComponentInfoTest extends Assert
 	{
 		String s = "listener-co~mpo~~nent-path";
 		ComponentInfo info = ComponentInfo.parse(s);
-		assertEquals("listener", info.getListenerInterface());
 		assertEquals("co-mpo--nent:path", info.getComponentPath());
 		assertNull(info.getBehaviorId());
 
@@ -123,7 +119,6 @@ public class ComponentInfoTest extends Assert
 	{
 		String s = "listener.12-component-path";
 		ComponentInfo info = ComponentInfo.parse(s);
-		assertEquals("listener", info.getListenerInterface());
 		assertEquals("component:path", info.getComponentPath());
 		assertEquals((Object)12, info.getBehaviorId());
 
@@ -138,7 +133,6 @@ public class ComponentInfoTest extends Assert
 	{
 		String s = "4.listener-a-b";
 		ComponentInfo info = ComponentInfo.parse(s);
-		assertEquals("listener", info.getListenerInterface());
 		assertEquals((Integer)4, info.getRenderCount());
 
 		assertEquals(s, info.toString());
@@ -152,7 +146,6 @@ public class ComponentInfoTest extends Assert
 	{
 		String s = "4.listener.5-a-b";
 		ComponentInfo info = ComponentInfo.parse(s);
-		assertEquals("listener", info.getListenerInterface());
 		assertEquals((Integer)4, info.getRenderCount());
 		assertEquals((Integer)5, info.getBehaviorId());
 
@@ -170,15 +163,13 @@ public class ComponentInfoTest extends Assert
 		final String componentPath = "-nav-container-:-nav:1:link";
 		final Integer behaviorId = null;
 
-		ComponentInfo info = new ComponentInfo(renderCount, listenerInterface, componentPath,
-			behaviorId);
+		ComponentInfo info = new ComponentInfo(renderCount, componentPath, behaviorId);
 
 		final String encoded = info.toString();
 		assertEquals("1.ILinkListener-~nav~container~-~nav-1-link", encoded);
 
 		ComponentInfo decoded = ComponentInfo.parse(encoded);
 		assertEquals(renderCount, decoded.getRenderCount());
-		assertEquals(listenerInterface, decoded.getListenerInterface());
 		assertEquals(componentPath, decoded.getComponentPath());
 		assertEquals(behaviorId, decoded.getBehaviorId());
 	}

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/wicket-core/src/test/java/org/apache/wicket/request/mapper/info/PageComponentInfoTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/mapper/info/PageComponentInfoTest.java b/wicket-core/src/test/java/org/apache/wicket/request/mapper/info/PageComponentInfoTest.java
index 06a221f..adeb089 100644
--- a/wicket-core/src/test/java/org/apache/wicket/request/mapper/info/PageComponentInfoTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/request/mapper/info/PageComponentInfoTest.java
@@ -16,10 +16,10 @@
  */
 package org.apache.wicket.request.mapper.info;
 
-import junit.framework.TestCase;
-
 import org.junit.Test;
 
+import junit.framework.TestCase;
+
 /**
  * 
  * @author Matej Knopp
@@ -43,7 +43,6 @@ public class PageComponentInfoTest extends TestCase
 
 		assertEquals(pageId, info.getPageInfo().getPageId());
 
-		assertEquals(listener, info.getComponentInfo().getListenerInterface());
 		assertEquals(componentPath, info.getComponentInfo().getComponentPath());
 	}
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/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 a85429e..2795eb5 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
@@ -16,17 +16,16 @@
  */
 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.PageAndComponentProvider;
 import org.apache.wicket.examples.WicketExamplePage;
 import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.link.ILinkListener;
 import org.apache.wicket.markup.html.link.Link;
 import org.apache.wicket.model.PropertyModel;
 import org.apache.wicket.request.IRequestHandler;
 import org.apache.wicket.request.Url;
 import org.apache.wicket.request.cycle.RequestCycle;
-import org.apache.wicket.core.request.handler.ComponentRenderingRequestHandler;
-import org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler;
-import org.apache.wicket.core.request.handler.PageAndComponentProvider;
 import org.apache.wicket.util.string.AppendingStringBuffer;
 
 
@@ -81,7 +80,7 @@ public class Index extends WicketExamplePage
 			protected String getOnClickScript(CharSequence url)
 			{
 				IRequestHandler handler = new ListenerInterfaceRequestHandler(
-					new PageAndComponentProvider(getPage(), this), ILinkListener.INTERFACE);
+					new PageAndComponentProvider(getPage(), this));
 				Url componentUrl = RequestCycle.get().mapUrlFor(handler);
 				componentUrl.addQueryParameter("anticache", Math.random());
 				return new AppendingStringBuffer("new Ajax.Updater('counter', '").append(

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/wicket-examples/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/webapp/WEB-INF/web.xml b/wicket-examples/src/main/webapp/WEB-INF/web.xml
index fb326f9..be83c5e 100644
--- a/wicket-examples/src/main/webapp/WEB-INF/web.xml
+++ b/wicket-examples/src/main/webapp/WEB-INF/web.xml
@@ -783,27 +783,6 @@
 		<url-pattern>/mailtemplate/*</url-pattern>
 	</filter-mapping>
 
-
-	<!-- CDI EXAMPLE APPLICATION -->
-	<filter>
-		<filter-name>CdiApplication</filter-name>
-		<filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
-		<init-param>
-		  <param-name>applicationClassName</param-name>
-		  <param-value>org.apache.wicket.examples.cdi.CdiApplication</param-value>
-		</init-param>
-	</filter>
-	<filter-mapping>
-		<filter-name>CdiApplication</filter-name>
-		<url-pattern>/cdi/*</url-pattern>
-	</filter-mapping>
-
-	<listener>
-		<!-- initialize Weld in servlet environment -->
-		<listener-class>org.jboss.weld.environment.servlet.Listener</listener-class>
-	</listener>
-    <!-- END CDI EXAMPLE APPLICATION -->
-
     <!-- Bean Validation EXAMPLE APPLICATION -->
     <filter>
         <filter-name>BeanValidation</filter-name>

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/wicket-extensions/src/main/java/org/apache/wicket/extensions/captcha/kittens/KittenCaptchaPanel.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/captcha/kittens/KittenCaptchaPanel.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/captcha/kittens/KittenCaptchaPanel.java
index f2d424b..68fb424 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/captcha/kittens/KittenCaptchaPanel.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/captcha/kittens/KittenCaptchaPanel.java
@@ -33,7 +33,6 @@ import javax.imageio.ImageIO;
 import javax.imageio.stream.MemoryCacheImageInputStream;
 
 import org.apache.wicket.Component;
-import org.apache.wicket.IResourceListener;
 import org.apache.wicket.ajax.AjaxEventBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.attributes.AjaxCallListener;
@@ -213,8 +212,7 @@ public class KittenCaptchaPanel extends Panel
 					javascript.append("Wicket.$('")
 						.append(image.getMarkupId())
 						.append("').src = '");
-					CharSequence url = image.urlFor(IResourceListener.INTERFACE,
-						new PageParameters());
+					CharSequence url = image.urlFor(new PageParameters());
 					javascript.append(url);
 					javascript.append(url.toString().indexOf('?') > -1 ? "&amp;" : "?")
 						.append("rand=")

http://git-wip-us.apache.org/repos/asf/wicket/blob/b8f9a87a/wicket-request/src/main/java/org/apache/wicket/request/mapper/info/ComponentInfo.java
----------------------------------------------------------------------
diff --git a/wicket-request/src/main/java/org/apache/wicket/request/mapper/info/ComponentInfo.java b/wicket-request/src/main/java/org/apache/wicket/request/mapper/info/ComponentInfo.java
index 230dc6d..1263c66 100644
--- a/wicket-request/src/main/java/org/apache/wicket/request/mapper/info/ComponentInfo.java
+++ b/wicket-request/src/main/java/org/apache/wicket/request/mapper/info/ComponentInfo.java
@@ -108,7 +108,6 @@ public class ComponentInfo
 		}
 	}
 
-	private final String listenerInterface;
 	private final String componentPath;
 	private final Integer behaviorId;
 	private final Integer renderCount;
@@ -121,13 +120,10 @@ public class ComponentInfo
 	 * @param componentPath
 	 * @param behaviorId
 	 */
-	public ComponentInfo(final Integer renderCount, final String listenerInterface,
-		final String componentPath, final Integer behaviorId)
+	public ComponentInfo(final Integer renderCount, final String componentPath, final Integer behaviorId)
 	{
-		Args.notEmpty(listenerInterface, "listenerInterface");
 		Args.notNull(componentPath, "componentPath");
 
-		this.listenerInterface = listenerInterface;
 		this.componentPath = componentPath;
 		this.behaviorId = behaviorId;
 		this.renderCount = renderCount;
@@ -142,14 +138,6 @@ public class ComponentInfo
 	}
 
 	/**
-	 * @return listener interface name
-	 */
-	public String getListenerInterface()
-	{
-		return listenerInterface;
-	}
-
-	/**
 	 * @return behavior index
 	 */
 	public Integer getBehaviorId()
@@ -177,14 +165,12 @@ public class ComponentInfo
 		if (renderCount != null)
 		{
 			result.append(renderCount);
-			result.append(BEHAVIOR_INDEX_SEPARATOR);
 		}
 
-		result.append(listenerInterface);
-
+		result.append(BEHAVIOR_INDEX_SEPARATOR);
+		
 		if (behaviorId != null)
 		{
-			result.append(BEHAVIOR_INDEX_SEPARATOR);
 			result.append(behaviorId);
 		}
 		result.append(SEPARATOR);
@@ -237,11 +223,6 @@ public class ComponentInfo
 			String listenerInterface = string.substring(0, i);
 			String componentPath = decodeComponentPath(string.substring(i + 1));
 
-			if (Strings.isEmpty(listenerInterface))
-			{
-				return null;
-			}
-
 			Integer behaviorIndex = null;
 			Integer renderCount = null;
 
@@ -251,34 +232,18 @@ public class ComponentInfo
 				if (isNumber(listenerParts[0]))
 				{
 					renderCount = Integer.valueOf(listenerParts[0]);
-					listenerInterface = listenerParts[1];
 				}
-				else if (isNumber(listenerParts[1]))
+				if (isNumber(listenerParts[1]))
 				{
-					listenerInterface = listenerParts[0];
 					behaviorIndex = Integer.valueOf(listenerParts[1]);
 				}
-				else
-				{
-					return null;
-				}
-			}
-			else if (listenerParts.length == 3)
-			{
-				if (!isNumber(listenerParts[0]) && !isNumber(listenerParts[1]))
-				{
-					return null;
-				}
-				renderCount = Integer.valueOf(listenerParts[0]);
-				listenerInterface = listenerParts[1];
-				behaviorIndex = Integer.valueOf(listenerParts[2]);
+				
+				return new ComponentInfo(renderCount, componentPath, behaviorIndex);
 			}
-			else if (listenerParts.length != 1)
+			else
 			{
 				return null;
 			}
-
-			return new ComponentInfo(renderCount, listenerInterface, componentPath, behaviorIndex);
 		}
 	}
 }