This is an automated email from the ASF dual-hosted git repository. reiern70 pushed a commit to branch improvement/reiern70/remove-duplication-on-super-classes-of-IPartialRequestHandler in repository https://gitbox.apache.org/repos/asf/wicket.git
commit 2dc9bd121c62aab1b742e55ce9c2675a8439f6df Author: reiern70 <[email protected]> AuthorDate: Sat Feb 22 11:27:20 2020 +0200 [NO_ISSUE] roll an abstract class that contains common functionality for AJAX and Web-socket request handlers --- .../org/apache/wicket/ajax/AjaxRequestHandler.java | 127 ++--------------- .../handler/AbstractPartialPageRequestHandler.java | 155 +++++++++++++++++++++ .../protocol/ws/api/WebSocketRequestHandler.java | 121 +--------------- 3 files changed, 171 insertions(+), 232 deletions(-) diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxRequestHandler.java b/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxRequestHandler.java index 230aead..bf64a80 100644 --- a/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxRequestHandler.java +++ b/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxRequestHandler.java @@ -26,8 +26,8 @@ import java.util.Set; import org.apache.wicket.Application; import org.apache.wicket.Component; -import org.apache.wicket.MarkupContainer; import org.apache.wicket.Page; +import org.apache.wicket.core.request.handler.AbstractPartialPageRequestHandler; import org.apache.wicket.core.request.handler.PageProvider; import org.apache.wicket.core.request.handler.RenderPageRequestHandler; import org.apache.wicket.core.request.handler.logger.PageLogData; @@ -42,7 +42,6 @@ import org.apache.wicket.request.component.IRequestablePage; import org.apache.wicket.request.cycle.RequestCycle; import org.apache.wicket.request.http.WebRequest; import org.apache.wicket.request.http.WebResponse; -import org.apache.wicket.request.mapper.parameter.PageParameters; import org.apache.wicket.response.StringResponse; import org.apache.wicket.response.filter.IResponseFilter; import org.apache.wicket.util.encoding.UrlDecoder; @@ -50,8 +49,6 @@ import org.apache.wicket.util.lang.Args; import org.apache.wicket.util.lang.Classes; import org.apache.wicket.util.string.AppendingStringBuffer; import org.apache.wicket.util.string.Strings; -import org.apache.wicket.util.visit.IVisit; -import org.apache.wicket.util.visit.IVisitor; /** * A request target that produces ajax response envelopes used on the client side to update @@ -80,7 +77,7 @@ import org.apache.wicket.util.visit.IVisitor; * @author Igor Vaynberg (ivaynberg) * @author Eelco Hillenius */ -public class AjaxRequestHandler implements AjaxRequestTarget +public class AjaxRequestHandler extends AbstractPartialPageRequestHandler implements AjaxRequestTarget { /** * Collector of page updates. @@ -97,9 +94,6 @@ public class AjaxRequestHandler implements AjaxRequestTarget protected transient boolean respondersFrozen; protected transient boolean listenersFrozen; - /** The associated Page */ - private final Page page; - private PageLogData logData; /** @@ -110,7 +104,7 @@ public class AjaxRequestHandler implements AjaxRequestTarget */ public AjaxRequestHandler(final Page page) { - this.page = Args.notNull(page, "page"); + super(page); update = new XmlPartialPageUpdate(page) { @@ -172,15 +166,6 @@ public class AjaxRequestHandler implements AjaxRequestTarget }; } - /** - * @see org.apache.wicket.core.request.handler.IPageRequestHandler#getPage() - */ - @Override - public Page getPage() - { - return page; - } - @Override public void addListener(AjaxRequestTarget.IListener listener) throws IllegalStateException { @@ -199,44 +184,9 @@ public class AjaxRequestHandler implements AjaxRequestTarget } @Override - public final void addChildren(MarkupContainer parent, Class<?> childCriteria) + public PartialPageUpdate getUpdate() { - Args.notNull(parent, "parent"); - Args.notNull(childCriteria, "childCriteria"); - - parent.visitChildren(childCriteria, new IVisitor<Component, Void>() - { - @Override - public void component(final Component component, final IVisit<Void> visit) - { - add(component); - visit.dontGoDeeper(); - } - }); - } - - @Override - public void add(Component... components) - { - for (final Component component : components) - { - Args.notNull(component, "component"); - - if (component.getOutputMarkupId() == false && !(component instanceof Page)) - { - throw new IllegalArgumentException( - "Cannot update component that does not have setOutputMarkupId property set to true. Component: " + - component.toString()); - } - - add(component, component.getMarkupId()); - } - } - - @Override - public void add(Component component, String markupId) - { - update.add(component, markupId); + return update; } @Override @@ -245,25 +195,6 @@ public class AjaxRequestHandler implements AjaxRequestTarget return update.getComponents(); } - @Override - public final void focusComponent(Component component) - { - if (component != null && component.getOutputMarkupId() == false) - { - throw new IllegalArgumentException( - "cannot update component that does not have setOutputMarkupId property set to true. Component: " + - component.toString()); - } - final String id = component != null ? ("'" + component.getMarkupId() + "'") : "null"; - appendJavaScript("Wicket.Focus.setFocusOnId(" + id + ");"); - } - - @Override - public final void appendJavaScript(CharSequence javascript) - { - update.appendJavaScript(javascript); - } - /** * @see org.apache.wicket.core.request.handler.IPageRequestHandler#detach(org.apache.wicket.request.IRequestCycle) */ @@ -272,7 +203,7 @@ public class AjaxRequestHandler implements AjaxRequestTarget { if (logData == null) { - logData = new PageLogData(page); + logData = new PageLogData(getPage()); } update.detach(requestCycle); @@ -304,12 +235,6 @@ public class AjaxRequestHandler implements AjaxRequestTarget } @Override - public final void prependJavaScript(CharSequence javascript) - { - update.prependJavaScript(javascript); - } - - @Override public void registerRespondListener(ITargetRespondListener listener) { assertRespondersNotFrozen(); @@ -325,6 +250,8 @@ public class AjaxRequestHandler implements AjaxRequestTarget final RequestCycle rc = (RequestCycle)requestCycle; final WebResponse response = (WebResponse)requestCycle.getResponse(); + Page page = getPage(); + if (shouldRedirectToPage(requestCycle)) { // the page itself has been added to the request target, we simply issue a redirect @@ -414,19 +341,13 @@ public class AjaxRequestHandler implements AjaxRequestTarget return "[AjaxRequestHandler@" + hashCode() + " responseObject [" + update + "]"; } - @Override - public IHeaderResponse getHeaderResponse() - { - return update.getHeaderResponse(); - } - /** * @return the markup id of the focused element in the browser */ @Override public String getLastFocusedElementId() { - WebRequest request = (WebRequest)page.getRequest(); + WebRequest request = (WebRequest)getPage().getRequest(); String id = request.getHeader("Wicket-FocusedElementId"); @@ -435,36 +356,6 @@ public class AjaxRequestHandler implements AjaxRequestTarget } @Override - public Class<? extends IRequestablePage> getPageClass() - { - return page.getPageClass(); - } - - @Override - public Integer getPageId() - { - return page.getPageId(); - } - - @Override - public PageParameters getPageParameters() - { - return page.getPageParameters(); - } - - @Override - public final boolean isPageInstanceCreated() - { - return true; - } - - @Override - public final Integer getRenderCount() - { - return page.getRenderCount(); - } - - @Override public PageLogData getLogData() { return logData; diff --git a/wicket-core/src/main/java/org/apache/wicket/core/request/handler/AbstractPartialPageRequestHandler.java b/wicket-core/src/main/java/org/apache/wicket/core/request/handler/AbstractPartialPageRequestHandler.java new file mode 100644 index 0000000..14d8358 --- /dev/null +++ b/wicket-core/src/main/java/org/apache/wicket/core/request/handler/AbstractPartialPageRequestHandler.java @@ -0,0 +1,155 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.wicket.core.request.handler; + +import org.apache.wicket.Component; +import org.apache.wicket.MarkupContainer; +import org.apache.wicket.Page; +import org.apache.wicket.markup.head.IHeaderResponse; +import org.apache.wicket.page.PartialPageUpdate; +import org.apache.wicket.request.component.IRequestablePage; +import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.apache.wicket.util.lang.Args; +import org.apache.wicket.util.visit.IVisit; +import org.apache.wicket.util.visit.IVisitor; + +/** + * Abstract {@link IPartialPageRequestHandler} that implements common methods for Ajax and Web-sockets + * specializations of {@link IPartialPageRequestHandler} + */ +public abstract class AbstractPartialPageRequestHandler implements IPartialPageRequestHandler +{ + /** The associated Page */ + private final Page page; + + protected AbstractPartialPageRequestHandler(Page page) { + this.page = Args.notNull(page, "page"); + } + + @Override + public final void addChildren(MarkupContainer parent, Class<?> childCriteria) + { + Args.notNull(parent, "parent"); + Args.notNull(childCriteria, "childCriteria"); + + parent.visitChildren(childCriteria, new IVisitor<Component, Void>() + { + @Override + public void component(final Component component, final IVisit<Void> visit) + { + add(component); + visit.dontGoDeeper(); + } + }); + } + + @Override + public final void add(Component... components) + { + for (final Component component : components) + { + Args.notNull(component, "component"); + + if (component.getOutputMarkupId() == false) + { + throw new IllegalArgumentException( + "cannot update component that does not have setOutputMarkupId property set to true. Component: " + + component.toString()); + } + + add(component, component.getMarkupId()); + } + } + + @Override + public final Integer getPageId() + { + return page.getPageId(); + } + + @Override + public final Integer getRenderCount() + { + return page.getRenderCount(); + } + + @Override + public final PageParameters getPageParameters() + { + return page.getPageParameters(); + } + + @Override + public final void add(Component component, String markupId) + { + getUpdate().add(component, markupId); + } + + @Override + public final void prependJavaScript(CharSequence javascript) + { + getUpdate().prependJavaScript(javascript); + } + + @Override + public final void appendJavaScript(CharSequence javascript) + { + getUpdate().appendJavaScript(javascript); + } + + @Override + public final void focusComponent(Component component) + { + if (component != null && component.getOutputMarkupId() == false) + { + throw new IllegalArgumentException( + "cannot update component that does not have setOutputMarkupId property set to true. Component: " + + component.toString()); + } + final String id = component != null ? ("'" + component.getMarkupId() + "'") : "null"; + appendJavaScript("Wicket.Focus.setFocusOnId(" + id + ");"); + } + + @Override + public final boolean isPageInstanceCreated() + { + return true; + } + + @Override + public final IHeaderResponse getHeaderResponse() + { + return getUpdate().getHeaderResponse(); + } + + protected abstract PartialPageUpdate getUpdate(); + + /** + * @see org.apache.wicket.core.request.handler.IPageRequestHandler#getPage() + */ + @Override + public final Page getPage() + { + return page; + } + + @Override + public final Class<? extends IRequestablePage> getPageClass() + { + return page.getPageClass(); + } +} diff --git a/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/WebSocketRequestHandler.java b/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/WebSocketRequestHandler.java index 641844f..7df3735 100644 --- a/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/WebSocketRequestHandler.java +++ b/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/WebSocketRequestHandler.java @@ -21,8 +21,8 @@ import java.util.Collection; import java.util.Collections; import org.apache.wicket.Component; -import org.apache.wicket.MarkupContainer; import org.apache.wicket.Page; +import org.apache.wicket.core.request.handler.AbstractPartialPageRequestHandler; import org.apache.wicket.core.request.handler.logger.PageLogData; import org.apache.wicket.markup.head.IHeaderResponse; import org.apache.wicket.page.PartialPageUpdate; @@ -32,8 +32,6 @@ import org.apache.wicket.request.IRequestCycle; import org.apache.wicket.request.component.IRequestablePage; import org.apache.wicket.request.mapper.parameter.PageParameters; import org.apache.wicket.util.lang.Args; -import org.apache.wicket.util.visit.IVisit; -import org.apache.wicket.util.visit.IVisitor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -42,11 +40,10 @@ import org.slf4j.LoggerFactory; * * @since 6.0 */ -public class WebSocketRequestHandler implements IWebSocketRequestHandler +public class WebSocketRequestHandler extends AbstractPartialPageRequestHandler implements IWebSocketRequestHandler { private static final Logger LOG = LoggerFactory.getLogger(WebSocketRequestHandler.class); - private final Page page; private final IWebSocketConnection connection; @@ -56,7 +53,7 @@ public class WebSocketRequestHandler implements IWebSocketRequestHandler public WebSocketRequestHandler(final Component component, final IWebSocketConnection connection) { - this.page = Args.notNull(component, "component").getPage(); + super(Args.notNull(component, "component").getPage()); this.connection = Args.notNull(connection, "connection"); } @@ -100,65 +97,15 @@ public class WebSocketRequestHandler implements IWebSocketRequestHandler } } - @Override - public void add(Component component, String markupId) - { - getUpdate().add(component, markupId); - } - private PartialPageUpdate getUpdate() { + + protected PartialPageUpdate getUpdate() { if (update == null) { - update = new XmlPartialPageUpdate(page); + update = new XmlPartialPageUpdate(getPage()); } return update; } - @Override - public void add(Component... components) - { - for (final Component component : components) - { - Args.notNull(component, "component"); - - if (component.getOutputMarkupId() == false) - { - throw new IllegalArgumentException( - "cannot update component that does not have setOutputMarkupId property set to true. Component: " + - component.toString()); - } - - add(component, component.getMarkupId()); - } - } - - @Override - public final void addChildren(MarkupContainer parent, Class<?> childCriteria) - { - Args.notNull(parent, "parent"); - Args.notNull(childCriteria, "childCriteria"); - - parent.visitChildren(childCriteria, new IVisitor<Component, Void>() - { - @Override - public void component(final Component component, final IVisit<Void> visit) - { - add(component); - visit.dontGoDeeper(); - } - }); - } - - @Override - public void appendJavaScript(CharSequence javascript) - { - getUpdate().appendJavaScript(javascript); - } - - @Override - public void prependJavaScript(CharSequence javascript) - { - getUpdate().prependJavaScript(javascript); - } @Override public Collection<? extends Component> getComponents() @@ -171,65 +118,11 @@ public class WebSocketRequestHandler implements IWebSocketRequestHandler } @Override - public final void focusComponent(Component component) - { - if (component != null && component.getOutputMarkupId() == false) - { - throw new IllegalArgumentException( - "cannot update component that does not have setOutputMarkupId property set to true. Component: " + - component.toString()); - } - final String id = component != null ? ("'" + component.getMarkupId() + "'") : "null"; - appendJavaScript("Wicket.Focus.setFocusOnId(" + id + ");"); - } - - @Override - public IHeaderResponse getHeaderResponse() - { - return getUpdate().getHeaderResponse(); - } - - @Override - public Page getPage() - { - return page; - } - - @Override - public Integer getPageId() - { - return page.getPageId(); - } - - @Override - public boolean isPageInstanceCreated() - { - return true; - } - - @Override - public Integer getRenderCount() - { - return page.getRenderCount(); - } - - @Override public ILogData getLogData() { return logData; } - @Override - public Class<? extends IRequestablePage> getPageClass() - { - return page.getPageClass(); - } - - @Override - public PageParameters getPageParameters() - { - return page.getPageParameters(); - } @Override public void respond(IRequestCycle requestCycle) @@ -245,7 +138,7 @@ public class WebSocketRequestHandler implements IWebSocketRequestHandler { if (logData == null) { - logData = new PageLogData(page); + logData = new PageLogData(getPage()); } if (update != null) {
