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) {

Reply via email to