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:49:09 UTC
[wicket] 01/01: 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 WICKET-6649-downport-for-wicket-8.x
in repository https://gitbox.apache.org/repos/asf/wicket.git
commit b23ed1160ec1c3660b8e21cbe1d3dde6217a6be3
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
AuthorDate: Fri Apr 5 09:47:30 2019 +0300
WICKET-6649 Store the applicationName, sessionId and key in WebSocket Text/BinaryMessage and in IWebSocketConnection
Downport of 12b1fb227564c22f4887dea23610be7cb8c5d977 for Wicket 8.x.
It manages to trick maven-clirr-plugin (binary compatibility checker) by using dummy values for Application, session id and IKey
---
.../ws/api/AbstractWebSocketConnection.java | 25 +++++++++++++++
.../ws/api/AbstractWebSocketProcessor.java | 6 ++--
.../protocol/ws/api/IWebSocketConnection.java | 1 +
.../protocol/ws/api/message/BinaryMessage.java | 36 +++++++++++++++++++---
.../protocol/ws/api/message/TextMessage.java | 31 +++++++++++++++++--
.../ws/util/tester/TestWebSocketConnection.java | 26 ++++++++++++++++
.../ws/util/tester/TestWebSocketProcessor.java | 2 +-
.../ws/util/tester/SendPayloadWithContextTest.java | 7 ++++-
8 files changed, 123 insertions(+), 11 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..2ccd884 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,19 @@ public abstract class AbstractWebSocketConnection implements IWebSocketConnectio
{
webSocketProcessor.broadcastMessage(message);
}
+
+ public Application getApplication()
+ {
+ return Application.get(applicationName);
+ }
+
+ public String getSessionId()
+ {
+ return sessionId;
+ }
+
+ 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 e502d16..d1f24de 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..3e96ed9 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,6 +17,7 @@
package org.apache.wicket.protocol.ws.api;
import java.io.IOException;
+
import org.apache.wicket.protocol.ws.api.message.IWebSocketPushMessage;
/**
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..17073eb 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,29 +16,57 @@
*/
package org.apache.wicket.protocol.ws.api.message;
+import org.apache.wicket.Application;
+import org.apache.wicket.Session;
+import org.apache.wicket.mock.MockApplication;
+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;
private final int length;
/**
- * Constructor.
+ * Not used by Wicket since 8.5.0!
*
* @param data
* the binary message from the client
* @param offset
* the offset to read from
* @param length
- * how much data to read
+ * the length of the data to read
*/
+ @Deprecated
public BinaryMessage(byte[] data, int offset, int length)
{
+ this(new MockApplication(), "", new IKey() {}, data, offset, length);
+ }
+
+ /**
+ * 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
+ * @param length
+ * the length of the data to read
+ */
+ public BinaryMessage(Application 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 +86,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..216b74e 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,9 @@
*/
package org.apache.wicket.protocol.ws.api.message;
+import org.apache.wicket.Application;
+import org.apache.wicket.mock.MockApplication;
+import org.apache.wicket.protocol.ws.api.registry.IKey;
import org.apache.wicket.util.lang.Args;
/**
@@ -23,12 +26,36 @@ 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)
+ /**
+ * Not used by Wicket since 8.5.0!
+ *
+ * @param text
+ * the message sent from the client
+ */
+ @Deprecated
+ public TextMessage(CharSequence text)
{
+ this(new MockApplication(), "", new IKey() {}, 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..5be35ba 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,18 @@ abstract class TestWebSocketConnection implements IWebSocketConnection
}
}
+ public Application getApplication()
+ {
+ return application;
+ }
+
+ public String getSessionId()
+ {
+ return sessionId;
+ }
+ 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 db4f6c3..6b7a6a5 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
@@ -96,8 +96,13 @@ public class SendPayloadWithContextTest extends Assert
add(new WebSocketBehavior()
{
@Override
- protected void onMessage(WebSocketRequestHandler handler, TextMessage ignored)
+ protected void onMessage(WebSocketRequestHandler handler, TextMessage message)
{
+ assertNotNull("The application must be available", message.getApplication());
+ assertNotNull("The session id must be available", message.getSessionId());
+ assertNotNull("The key must be available", message.getKey());
+ assertNotNull("The text must be set", message.getText());
+
// send an outbound message with the current context encoded as String
handler.push(String.valueOf(context.get()));
}