You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2019/04/05 06:29:46 UTC
[wicket] branch master updated: WICKET-6649 Store the
applicationName,
sessionId and key in WebSocket Text/BinaryMessage and in
IWebSocketConnection
This is an automated email from the ASF dual-hosted git repository.
mgrigorov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/wicket.git
The following commit(s) were added to refs/heads/master by this push:
new 12b1fb2 WICKET-6649 Store the applicationName, sessionId and key in WebSocket Text/BinaryMessage and in IWebSocketConnection
12b1fb2 is described below
commit 12b1fb227564c22f4887dea23610be7cb8c5d977
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
AuthorDate: Fri Apr 5 09:29:24 2019 +0300
WICKET-6649 Store the applicationName, sessionId and key in WebSocket Text/BinaryMessage and in IWebSocketConnection
---
.../ws/api/AbstractWebSocketConnection.java | 28 +++++++++++++++++++++
.../ws/api/AbstractWebSocketProcessor.java | 6 ++---
.../protocol/ws/api/IWebSocketConnection.java | 18 ++++++++++++++
.../protocol/ws/api/message/BinaryMessage.java | 19 ++++++++++----
.../protocol/ws/api/message/TextMessage.java | 18 ++++++++++++--
.../ws/util/tester/TestWebSocketConnection.java | 29 ++++++++++++++++++++++
.../ws/util/tester/TestWebSocketProcessor.java | 2 +-
.../ws/util/tester/SendPayloadWithContextTest.java | 8 +++++-
8 files changed, 116 insertions(+), 12 deletions(-)
diff --git a/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/AbstractWebSocketConnection.java b/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/AbstractWebSocketConnection.java
index 02ae01c..8726d56 100644
--- a/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/AbstractWebSocketConnection.java
+++ b/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/AbstractWebSocketConnection.java
@@ -16,7 +16,9 @@
*/
package org.apache.wicket.protocol.ws.api;
+import org.apache.wicket.Application;
import org.apache.wicket.protocol.ws.api.message.IWebSocketPushMessage;
+import org.apache.wicket.protocol.ws.api.registry.IKey;
import org.apache.wicket.util.lang.Args;
/**
@@ -24,6 +26,11 @@ import org.apache.wicket.util.lang.Args;
*/
public abstract class AbstractWebSocketConnection implements IWebSocketConnection
{
+
+ private final String applicationName;
+ private final String sessionId;
+ private final IKey key;
+
private final AbstractWebSocketProcessor webSocketProcessor;
/**
@@ -34,6 +41,9 @@ public abstract class AbstractWebSocketConnection implements IWebSocketConnectio
*/
public AbstractWebSocketConnection(AbstractWebSocketProcessor webSocketProcessor)
{
+ this.applicationName = webSocketProcessor.getApplication().getName();
+ this.sessionId = webSocketProcessor.getSessionId();
+ this.key = webSocketProcessor.getRegistryKey();
this.webSocketProcessor = Args.notNull(webSocketProcessor, "webSocketProcessor");
}
@@ -42,4 +52,22 @@ public abstract class AbstractWebSocketConnection implements IWebSocketConnectio
{
webSocketProcessor.broadcastMessage(message);
}
+
+ @Override
+ public Application getApplication()
+ {
+ return Application.get(applicationName);
+ }
+
+ @Override
+ public String getSessionId()
+ {
+ return sessionId;
+ }
+
+ @Override
+ public IKey getKey()
+ {
+ return key;
+ }
}
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 90b7a44..1a86128 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
@@ -145,13 +145,13 @@ public abstract class AbstractWebSocketProcessor implements IWebSocketProcessor
@Override
public void onMessage(final String message)
{
- broadcastMessage(new TextMessage(message));
+ broadcastMessage(new TextMessage(getApplication(), getSessionId(), getRegistryKey(), message));
}
@Override
public void onMessage(byte[] data, int offset, int length)
{
- BinaryMessage binaryMessage = new BinaryMessage(data, offset, length);
+ BinaryMessage binaryMessage = new BinaryMessage(getApplication(), getSessionId(), getRegistryKey(), data, offset, length);
broadcastMessage(binaryMessage);
}
@@ -375,7 +375,7 @@ public abstract class AbstractWebSocketProcessor implements IWebSocketProcessor
return payload;
}
- private IKey getRegistryKey()
+ protected IKey getRegistryKey()
{
IKey key;
if (Strings.isEmpty(resourceName))
diff --git a/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/IWebSocketConnection.java b/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/IWebSocketConnection.java
index 7a492df..82cf6e9 100644
--- a/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/IWebSocketConnection.java
+++ b/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/IWebSocketConnection.java
@@ -17,7 +17,10 @@
package org.apache.wicket.protocol.ws.api;
import java.io.IOException;
+
+import org.apache.wicket.Application;
import org.apache.wicket.protocol.ws.api.message.IWebSocketPushMessage;
+import org.apache.wicket.protocol.ws.api.registry.IKey;
/**
* Common interface for native WebSocket connections
@@ -76,4 +79,19 @@ public interface IWebSocketConnection
* @since 6.4
*/
void sendMessage(IWebSocketPushMessage message);
+
+ /**
+ * @return The application for which this WebSocket connection is registered
+ */
+ Application getApplication();
+
+ /**
+ * @return The id of the session for which this WebSocket connection is registered
+ */
+ String getSessionId();
+
+ /**
+ * @return The registry key for which this WebSocket connection is registered
+ */
+ IKey getKey();
}
diff --git a/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/message/BinaryMessage.java b/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/message/BinaryMessage.java
index 9728e2b..8b1f92d 100644
--- a/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/message/BinaryMessage.java
+++ b/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/message/BinaryMessage.java
@@ -16,12 +16,15 @@
*/
package org.apache.wicket.protocol.ws.api.message;
+import org.apache.wicket.protocol.http.WebApplication;
+import org.apache.wicket.protocol.ws.api.registry.IKey;
+
/**
* A {@link IWebSocketMessage message} with binary data
*
* @since 6.0
*/
-public class BinaryMessage implements IWebSocketMessage
+public class BinaryMessage extends AbstractClientMessage
{
private final byte[] data;
private final int offset;
@@ -30,15 +33,21 @@ public class BinaryMessage implements IWebSocketMessage
/**
* Constructor.
*
+ * @param application
+ * the Wicket application
+ * @param sessionId
+ * the id of the http session
+ * @param key
+ * the page id or resource name
* @param data
* the binary message from the client
* @param offset
- * the offset to read from
+ * the offset to read from
* @param length
- * how much data to read
*/
- public BinaryMessage(byte[] data, int offset, int length)
+ public BinaryMessage(WebApplication application, String sessionId, IKey key, byte[] data, int offset, int length)
{
+ super(application, sessionId, key);
this.data = data;
this.offset = offset;
this.length = length;
@@ -58,4 +67,4 @@ public class BinaryMessage implements IWebSocketMessage
{
return length;
}
-}
\ No newline at end of file
+}
diff --git a/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/message/TextMessage.java b/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/message/TextMessage.java
index 5893b05..993c94d 100644
--- a/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/message/TextMessage.java
+++ b/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/message/TextMessage.java
@@ -16,6 +16,8 @@
*/
package org.apache.wicket.protocol.ws.api.message;
+import org.apache.wicket.Application;
+import org.apache.wicket.protocol.ws.api.registry.IKey;
import org.apache.wicket.util.lang.Args;
/**
@@ -23,12 +25,24 @@ import org.apache.wicket.util.lang.Args;
*
* @since 6.0
*/
-public class TextMessage implements IWebSocketMessage
+public class TextMessage extends AbstractClientMessage
{
private final CharSequence text;
- public TextMessage(final CharSequence text)
+ /**
+ *
+ * @param application
+ * the Wicket application
+ * @param sessionId
+ * the id of the http session
+ * @param key
+ * the page id or resource name
+ * @param text
+ * the message sent from the client
+ */
+ public TextMessage(Application application, String sessionId, IKey key, CharSequence text)
{
+ super(application, sessionId, key);
this.text = Args.notEmpty(text, "text");
}
diff --git a/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/util/tester/TestWebSocketConnection.java b/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/util/tester/TestWebSocketConnection.java
index a5c1544..1923f49 100644
--- a/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/util/tester/TestWebSocketConnection.java
+++ b/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/util/tester/TestWebSocketConnection.java
@@ -18,7 +18,10 @@ package org.apache.wicket.protocol.ws.util.tester;
import java.io.IOException;
+import org.apache.wicket.Application;
+import org.apache.wicket.protocol.http.WebApplication;
import org.apache.wicket.protocol.ws.api.IWebSocketConnection;
+import org.apache.wicket.protocol.ws.api.registry.IKey;
/**
* A WebSocketConnection used for the testing.
@@ -27,8 +30,18 @@ import org.apache.wicket.protocol.ws.api.IWebSocketConnection;
*/
abstract class TestWebSocketConnection implements IWebSocketConnection
{
+ private final WebApplication application;
+ private final String sessionId;
+ private final IKey registryKey;
private boolean isOpen = true;
+ public TestWebSocketConnection(WebApplication application, String sessionId, IKey registryKey)
+ {
+ this.application = application;
+ this.sessionId = sessionId;
+ this.registryKey = registryKey;
+ }
+
@Override
public boolean isOpen()
{
@@ -85,5 +98,21 @@ abstract class TestWebSocketConnection implements IWebSocketConnection
}
}
+ @Override
+ public Application getApplication()
+ {
+ return application;
+ }
+ @Override
+ public String getSessionId()
+ {
+ return sessionId;
+ }
+
+ @Override
+ public IKey getKey()
+ {
+ return registryKey;
+ }
}
diff --git a/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/util/tester/TestWebSocketProcessor.java b/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/util/tester/TestWebSocketProcessor.java
index f7b55e1..e48b908 100644
--- a/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/util/tester/TestWebSocketProcessor.java
+++ b/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/util/tester/TestWebSocketProcessor.java
@@ -126,7 +126,7 @@ abstract class TestWebSocketProcessor extends AbstractWebSocketProcessor
@Override
public void onOpen(Object connection)
{
- onConnect(new TestWebSocketConnection() {
+ onConnect(new TestWebSocketConnection(getApplication(), getSessionId(), getRegistryKey()) {
@Override
protected void onOutMessage(String message)
diff --git a/wicket-native-websocket/wicket-native-websocket-core/src/test/java/org/apache/wicket/protocol/ws/util/tester/SendPayloadWithContextTest.java b/wicket-native-websocket/wicket-native-websocket-core/src/test/java/org/apache/wicket/protocol/ws/util/tester/SendPayloadWithContextTest.java
index 53429d8..a81e8c8 100644
--- a/wicket-native-websocket/wicket-native-websocket-core/src/test/java/org/apache/wicket/protocol/ws/util/tester/SendPayloadWithContextTest.java
+++ b/wicket-native-websocket/wicket-native-websocket-core/src/test/java/org/apache/wicket/protocol/ws/util/tester/SendPayloadWithContextTest.java
@@ -33,6 +33,7 @@ import org.junit.jupiter.api.Test;
import java.util.concurrent.atomic.AtomicBoolean;
import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
/**
@@ -95,8 +96,13 @@ public class SendPayloadWithContextTest
add(new WebSocketBehavior()
{
@Override
- protected void onMessage(WebSocketRequestHandler handler, TextMessage ignored)
+ protected void onMessage(WebSocketRequestHandler handler, TextMessage message)
{
+ assertNotNull(message.getApplication(), "The application must be available");
+ assertNotNull(message.getSessionId(), "The session id must be available");
+ assertNotNull(message.getKey(), "The key must be available");
+ assertNotNull(message.getText(), "The text must be set");
+
// send an outbound message with the current context encoded as String
handler.push(String.valueOf(context.get()));
}