You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by re...@apache.org on 2020/02/22 09:27:35 UTC
[wicket] 01/01: [NO_ISSUE] roll an abstract class that contains
common functionality for AJAX and Web-socket request handlers
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 <re...@gmail.com>
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) {