WICKET-6137 remove RequestListenerInterface
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/d1710298 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/d1710298 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/d1710298 Branch: refs/heads/master Commit: d1710298c7e371f260299f732c58d0bf4d647161 Parents: 7dcdae5 Author: Sven Meier <[email protected]> Authored: Sat Mar 19 19:57:00 2016 +0100 Committer: Sven Meier <[email protected]> Committed: Mon Apr 25 11:44:33 2016 +0200 ---------------------------------------------------------------------- .../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 | 10 +- .../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, 350 insertions(+), 663 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/d1710298/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 f9a8cd9..877e963 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); } @@ -3343,19 +3342,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(); @@ -3365,11 +3362,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); } } @@ -3393,16 +3390,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/d1710298/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/d1710298/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/d1710298/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/d1710298/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/d1710298/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 64c26f0..f45b09e 100644 --- a/wicket-core/src/main/java/org/apache/wicket/RequestListenerInterface.java +++ b/wicket-core/src/main/java/org/apache/wicket/RequestListenerInterface.java @@ -16,18 +16,14 @@ */ 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.RequestHandlerExecutor.ReplaceHandlerException; -import org.apache.wicket.request.component.IRequestableComponent; import org.apache.wicket.core.request.handler.ListenerInvocationNotAllowedException; +import org.apache.wicket.request.component.IRequestableComponent; import org.apache.wicket.util.lang.Classes; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -175,7 +171,7 @@ public class RequestListenerInterface // 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, + throw new ListenerInvocationNotAllowedException(component, null, "Component rejected interface invocation"); } @@ -200,7 +196,7 @@ public class RequestListenerInterface { log.warn("behavior not enabled; ignore call. Behavior {} at component {}", behavior, component); - throw new ListenerInvocationNotAllowedException(this, component, behavior, + throw new ListenerInvocationNotAllowedException(component, behavior, "Behavior rejected interface invocation. "); } http://git-wip-us.apache.org/repos/asf/wicket/blob/d1710298/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/d1710298/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 55517d2..2267e74 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.lambda.WicketConsumer; import org.apache.wicket.lambda.WicketFunction; @@ -153,7 +154,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/d1710298/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/d1710298/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/d1710298/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/d1710298/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/d1710298/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/d1710298/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/d1710298/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/d1710298/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/d1710298/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/d1710298/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/d1710298/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/d1710298/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/d1710298/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/d1710298/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/d1710298/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/d1710298/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/d1710298/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/d1710298/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/d1710298/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/d1710298/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/d1710298/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/d1710298/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/d1710298/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/d1710298/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/d1710298/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/d1710298/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/d1710298/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 413698c..cfc23ec 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.WicketConsumer; @@ -75,7 +76,7 @@ import org.apache.wicket.util.lang.Args; * @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; @@ -177,6 +178,12 @@ public abstract class Link<T> extends AbstractLink implements ILinkListener, IGe */ public abstract void onClick(); + @Override + public boolean includeRenderCount() + { + return true; + } + /** * THIS METHOD IS NOT PART OF THE WICKET API. DO NOT ATTEMPT TO OVERRIDE OR CALL IT. * @@ -326,7 +333,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/d1710298/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/d1710298/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()); } } http://git-wip-us.apache.org/repos/asf/wicket/blob/d1710298/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 e7d582a..8544339 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 @@ -1070,7 +1067,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(); } @@ -1084,14 +1081,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); @@ -1110,39 +1107,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 @@ -1988,7 +1965,7 @@ public class BaseWicketTester } else { - executeListener(link, ILinkListener.INTERFACE); + executeListener(link); } } // The link requires AJAX @@ -2029,7 +2006,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/d1710298/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)
