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:34 UTC

[wicket] branch improvement/reiern70/remove-duplication-on-super-classes-of-IPartialRequestHandler created (now 2dc9bd1)

This is an automated email from the ASF dual-hosted git repository.

reiern70 pushed a change to branch improvement/reiern70/remove-duplication-on-super-classes-of-IPartialRequestHandler
in repository https://gitbox.apache.org/repos/asf/wicket.git.


      at 2dc9bd1  [NO_ISSUE] roll an abstract class that contains common functionality for AJAX and Web-socket request handlers

This branch includes the following new commits:

     new 2dc9bd1  [NO_ISSUE] roll an abstract class that contains common functionality for AJAX and Web-socket request handlers

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[wicket] 01/01: [NO_ISSUE] roll an abstract class that contains common functionality for AJAX and Web-socket request handlers

Posted by re...@apache.org.
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) {