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

reiern70 pushed a commit to branch WICKET-6930-websocket-improvements
in repository https://gitbox.apache.org/repos/asf/wicket.git

commit 7a4e4b204ab0f9c95c89b87e35152ab5a47276d5
Author: ernestosemedy <[email protected]>
AuthorDate: Sat Nov 6 10:41:57 2021 +0300

    introduce isEmpty() for partial update
---
 .../java/org/apache/wicket/page/PartialPageUpdate.java     |  8 ++++++++
 .../wicket/protocol/ws/api/AbstractWebSocketProcessor.java |  6 +++---
 .../wicket/protocol/ws/api/WebSocketRequestHandler.java    | 14 ++++++++++++--
 .../apache/wicket/protocol/ws/javax/WicketEndpoint.java    |  1 -
 4 files changed, 23 insertions(+), 6 deletions(-)

diff --git 
a/wicket-core/src/main/java/org/apache/wicket/page/PartialPageUpdate.java 
b/wicket-core/src/main/java/org/apache/wicket/page/PartialPageUpdate.java
index f95c959..f5cef02 100644
--- a/wicket-core/src/main/java/org/apache/wicket/page/PartialPageUpdate.java
+++ b/wicket-core/src/main/java/org/apache/wicket/page/PartialPageUpdate.java
@@ -150,6 +150,14 @@ public abstract class PartialPageUpdate
        }
 
        /**
+        * @return returns true if and only if nothing has being added to 
partial update.
+        */
+       public boolean isEmpty()
+       {
+               return prependJavaScripts.isEmpty() && 
appendJavaScripts.isEmpty() && domReadyJavaScripts.isEmpty() && 
markupIdToComponent.isEmpty();
+       }
+
+       /**
         * Serializes this object to the response.
         *
         * @param response
diff --git 
a/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/AbstractWebSocketProcessor.java
 
b/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/AbstractWebSocketProcessor.java
index f891751..82cd21a 100644
--- 
a/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/AbstractWebSocketProcessor.java
+++ 
b/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/AbstractWebSocketProcessor.java
@@ -261,7 +261,7 @@ public abstract class AbstractWebSocketProcessor implements 
IWebSocketProcessor
                                {
                                        WebSocketRequestHandler requestHandler 
= webSocketSettings.newWebSocketRequestHandler(page, connection);
 
-                                       WebSocketPayload payload = 
createEventPayload(message, requestHandler);
+                                       WebSocketPayload<?> payload = 
createEventPayload(message, requestHandler);
 
                                        if (!(message instanceof 
ConnectedMessage || isSpecialMessage(message))) {
                                                
requestCycle.scheduleRequestHandlerAfterCurrent(requestHandler);
@@ -356,9 +356,9 @@ public abstract class AbstractWebSocketProcessor implements 
IWebSocketProcessor
                return sessionId;
        }
 
-       private WebSocketPayload createEventPayload(IWebSocketMessage message, 
WebSocketRequestHandler handler)
+       private WebSocketPayload<?> createEventPayload(IWebSocketMessage 
message, WebSocketRequestHandler handler)
        {
-               final WebSocketPayload payload;
+               final WebSocketPayload<?> payload;
                if (message instanceof TextMessage)
                {
                        payload = new WebSocketTextPayload((TextMessage) 
message, handler);
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 7df3735..70a2603 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
@@ -97,7 +97,13 @@ public class WebSocketRequestHandler extends 
AbstractPartialPageRequestHandler i
                }
        }
 
-
+       /**
+        * @return if true then EMPTY partial updates will be ignored.
+        */
+       protected boolean pushOnEmptyUpdate()
+       {
+               return true;
+       }
 
        protected PartialPageUpdate getUpdate() {
                if (update == null) {
@@ -129,7 +135,11 @@ public class WebSocketRequestHandler extends 
AbstractPartialPageRequestHandler i
        {
                if (update != null)
                {
-                       update.writeTo(requestCycle.getResponse(), "UTF-8");
+                       // if the update is not empty or empty updates will be 
pushed anyway then write to response.
+                       if (pushOnEmptyUpdate() || !update.isEmpty())
+                       {
+                               update.writeTo(requestCycle.getResponse(), 
"UTF-8");
+                       }
                }
        }
 
diff --git 
a/wicket-native-websocket/wicket-native-websocket-javax/src/main/java/org/apache/wicket/protocol/ws/javax/WicketEndpoint.java
 
b/wicket-native-websocket/wicket-native-websocket-javax/src/main/java/org/apache/wicket/protocol/ws/javax/WicketEndpoint.java
index 0636831..4808dbd 100644
--- 
a/wicket-native-websocket/wicket-native-websocket-javax/src/main/java/org/apache/wicket/protocol/ws/javax/WicketEndpoint.java
+++ 
b/wicket-native-websocket/wicket-native-websocket-javax/src/main/java/org/apache/wicket/protocol/ws/javax/WicketEndpoint.java
@@ -123,7 +123,6 @@ public class WicketEndpoint extends Endpoint
        {
                String appName = null;
 
-               @SuppressWarnings("unchecked")
                Map<String, List<String>> parameters = 
session.getRequestParameterMap();
                if (parameters != null)
                {

Reply via email to