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

solomax pushed a commit to branch wicket-8.x
in repository https://gitbox.apache.org/repos/asf/wicket.git


The following commit(s) were added to refs/heads/wicket-8.x by this push:
     new a14cdb6  [WICKET-6782] error in sendMessage(String) handled as expected
a14cdb6 is described below

commit a14cdb633b195bb17514bee5de603694c035d6eb
Author: Maxim Solodovnik <[email protected]>
AuthorDate: Wed May 6 15:29:43 2020 +0700

    [WICKET-6782] error in sendMessage(String) handled as expected
---
 .../wicket/protocol/ws/api/AbstractWebSocketProcessor.java    | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

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 551aac9..ddc41cb 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
@@ -139,7 +139,7 @@ public abstract class AbstractWebSocketProcessor implements 
IWebSocketProcessor
                this.webSocketSettings = 
WebSocketSettings.Holder.get(application);
 
                this.webRequest = 
webSocketSettings.newWebSocketRequest(request, wicketFilter.getFilterPath());
-               
+
                this.connectionRegistry = 
webSocketSettings.getConnectionRegistry();
 
                this.connectionFilter = webSocketSettings.getConnectionFilter();
@@ -220,7 +220,7 @@ public abstract class AbstractWebSocketProcessor implements 
IWebSocketProcessor
                IKey key = getRegistryKey();
                IWebSocketConnection connection = 
connectionRegistry.getConnection(application, sessionId, key);
 
-               if (connection != null && (connection.isOpen() || message 
instanceof ClosedMessage))
+               if (connection != null && (connection.isOpen() || 
isSpecialMessage(message)))
                {
                        Application oldApplication = 
ThreadContext.getApplication();
                        Session oldSession = ThreadContext.getSession();
@@ -263,7 +263,7 @@ public abstract class AbstractWebSocketProcessor implements 
IWebSocketProcessor
 
                                        WebSocketPayload payload = 
createEventPayload(message, requestHandler);
 
-                                       if (!(message instanceof 
ConnectedMessage || message instanceof ClosedMessage || message instanceof 
AbortedMessage)) {
+                                       if (!(message instanceof 
ConnectedMessage || isSpecialMessage(message))) {
                                                
requestCycle.scheduleRequestHandlerAfterCurrent(requestHandler);
                                        }
 
@@ -300,6 +300,11 @@ public abstract class AbstractWebSocketProcessor 
implements IWebSocketProcessor
                }
        }
 
+       private static boolean isSpecialMessage(IWebSocketMessage message)
+       {
+               return message instanceof ClosedMessage || message instanceof 
ErrorMessage || message instanceof AbortedMessage;
+       }
+
        private RequestCycle createRequestCycle(WebSocketRequestMapper 
requestMapper, WebResponse webResponse)
        {
                RequestCycleContext context = new 
RequestCycleContext(webRequest, webResponse,

Reply via email to