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:08 UTC

[wicket] branch WICKET-6649-downport-for-wicket-8.x created (now b23ed11)

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

mgrigorov pushed a change to branch WICKET-6649-downport-for-wicket-8.x
in repository https://gitbox.apache.org/repos/asf/wicket.git.


      at b23ed11  WICKET-6649 Store the applicationName, sessionId and key in WebSocket Text/BinaryMessage and in IWebSocketConnection

This branch includes the following new commits:

     new b23ed11  WICKET-6649 Store the applicationName, sessionId and key in WebSocket Text/BinaryMessage and in IWebSocketConnection

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[wicket] 01/01: WICKET-6649 Store the applicationName, sessionId and key in WebSocket Text/BinaryMessage and in IWebSocketConnection

Posted by mg...@apache.org.
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()));
 				}