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 2015/12/24 14:53:16 UTC

wicket git commit: WICKET-6054 Provide a factory method for the WebSocketResponse & WebSocketRequest WICKET-5737 Log a warning when WebSocketResponse#sendError() is used

Repository: wicket
Updated Branches:
  refs/heads/wicket-6.x 1d9c6b955 -> 1c6484869


WICKET-6054 Provide a factory method for the WebSocketResponse & WebSocketRequest
WICKET-5737 Log a warning when WebSocketResponse#sendError() is used

Backport r8a5508e


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/1c648486
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/1c648486
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/1c648486

Branch: refs/heads/wicket-6.x
Commit: 1c64848693f46b3c8d18cfe9b11a9c71482bd93d
Parents: 1d9c6b9
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Tue Oct 28 11:36:03 2014 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Thu Dec 24 14:51:38 2015 +0100

----------------------------------------------------------------------
 .../wicket/protocol/ws/WebSocketSettings.java   | 16 +++++++++++++
 .../ws/api/AbstractWebSocketProcessor.java      | 24 +++++++++++++++++---
 .../protocol/ws/api/WebSocketResponse.java      |  6 ++++-
 3 files changed, 42 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/1c648486/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/WebSocketSettings.java
----------------------------------------------------------------------
diff --git a/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/WebSocketSettings.java b/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/WebSocketSettings.java
index 4df75a6..4198d44 100644
--- a/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/WebSocketSettings.java
+++ b/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/WebSocketSettings.java
@@ -18,9 +18,12 @@ package org.apache.wicket.protocol.ws;
 
 import java.util.concurrent.Callable;
 
+import org.apache.wicket.protocol.ws.api.IWebSocketConnection;
+import org.apache.wicket.protocol.ws.api.WebSocketResponse;
 import org.apache.wicket.protocol.ws.api.registry.IWebSocketConnectionRegistry;
 import org.apache.wicket.protocol.ws.api.registry.SimpleWebSocketConnectionRegistry;
 import org.apache.wicket.protocol.ws.concurrent.Executor;
+import org.apache.wicket.request.http.WebResponse;
 import org.apache.wicket.util.lang.Args;
 
 /**
@@ -104,6 +107,19 @@ public class WebSocketSettings implements IWebSocketSettings
 	}
 
 	/**
+	 * A factory method for the {@link org.apache.wicket.request.http.WebResponse}
+	 * that should be used to write the response back to the client/browser
+	 *
+	 * @param connection
+	 *              The active web socket connection
+	 * @return the response object that should be used to write the response back to the client
+	 */
+	public WebResponse newWebSocketResponse(IWebSocketConnection connection)
+	{
+		return new WebSocketResponse(connection);
+	}
+
+	/**
 	 * Simple executor that runs the tasks in the caller thread.
 	 */
 	public static class SameThreadExecutor implements Executor

http://git-wip-us.apache.org/repos/asf/wicket/blob/1c648486/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/AbstractWebSocketProcessor.java
----------------------------------------------------------------------
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 fea34a9..d79809b 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
@@ -31,6 +31,7 @@ import org.apache.wicket.page.IPageManager;
 import org.apache.wicket.protocol.http.WebApplication;
 import org.apache.wicket.protocol.http.WicketFilter;
 import org.apache.wicket.protocol.ws.IWebSocketSettings;
+import org.apache.wicket.protocol.ws.WebSocketSettings;
 import org.apache.wicket.protocol.ws.api.event.WebSocketBinaryPayload;
 import org.apache.wicket.protocol.ws.api.event.WebSocketClosedPayload;
 import org.apache.wicket.protocol.ws.api.event.WebSocketConnectedPayload;
@@ -53,6 +54,7 @@ import org.apache.wicket.request.cycle.AbstractRequestCycleListener;
 import org.apache.wicket.request.cycle.RequestCycle;
 import org.apache.wicket.request.cycle.RequestCycleContext;
 import org.apache.wicket.request.http.WebRequest;
+import org.apache.wicket.request.http.WebResponse;
 import org.apache.wicket.session.ISessionStore;
 import org.apache.wicket.util.lang.Args;
 import org.apache.wicket.util.lang.Checks;
@@ -98,6 +100,7 @@ public abstract class AbstractWebSocketProcessor implements IWebSocketProcessor
 	private final Url baseUrl;
 	private final WebApplication application;
 	private final String sessionId;
+	private final IWebSocketSettings webSocketSettings;
 	private final IWebSocketConnectionRegistry connectionRegistry;
 
 	/**
@@ -135,7 +138,7 @@ public abstract class AbstractWebSocketProcessor implements IWebSocketProcessor
 		this.webRequest = new WebSocketRequest(new ServletRequestCopy(request), getFilterPath(wicketFilter));
 
 		this.application = Args.notNull(application, "application");
-		IWebSocketSettings webSocketSettings = IWebSocketSettings.Holder.get(application);
+		this.webSocketSettings = IWebSocketSettings.Holder.get(application);
 		this.connectionRegistry = webSocketSettings.getConnectionRegistry();
 	}
 
@@ -213,7 +216,8 @@ public abstract class AbstractWebSocketProcessor implements IWebSocketProcessor
 			Session oldSession = ThreadContext.getSession();
 			RequestCycle oldRequestCycle = ThreadContext.getRequestCycle();
 
-			WebSocketResponse webResponse = new WebSocketResponse(connection);
+			WebResponse webResponse = createWebSocketResponse(connection);
+
 			try
 			{
 				WebSocketRequestMapper requestMapper = new WebSocketRequestMapper(application.getRootRequestMapper());
@@ -274,7 +278,21 @@ public abstract class AbstractWebSocketProcessor implements IWebSocketProcessor
 		}
 	}
 
-	private RequestCycle createRequestCycle(WebSocketRequestMapper requestMapper, WebSocketResponse webResponse)
+	private WebResponse createWebSocketResponse(IWebSocketConnection connection)
+	{
+		WebResponse webResponse;
+		if (webSocketSettings instanceof WebSocketSettings)
+		{
+			webResponse = ((WebSocketSettings)webSocketSettings).newWebSocketResponse(connection);
+		}
+		else
+		{
+			webResponse = new WebSocketResponse(connection);
+		}
+		return webResponse;
+	}
+
+	private RequestCycle createRequestCycle(WebSocketRequestMapper requestMapper, WebResponse webResponse)
 	{
 		RequestCycleContext context = new RequestCycleContext(webRequest, webResponse,
 				requestMapper, application.getExceptionMapperProvider().get());

http://git-wip-us.apache.org/repos/asf/wicket/blob/1c648486/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/WebSocketResponse.java
----------------------------------------------------------------------
diff --git a/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/WebSocketResponse.java b/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/WebSocketResponse.java
index d5f36bf..fee187f 100644
--- a/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/WebSocketResponse.java
+++ b/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/WebSocketResponse.java
@@ -190,7 +190,11 @@ public class WebSocketResponse extends WebResponse
 	@Override
 	public void sendError(int sc, String msg)
 	{
-		throw new UnsupportedOperationException();
+		LOG.warn("An HTTP error response in WebSocket communication would not be processed by the browser! " +
+				"If you need to send the error code and message to the client then configure custom WebSocketResponse " +
+				"via WebSocketSettings#newWebSocketResponse() factory method and override #sendError() method to write " +
+				"them in an appropriate format for your application. " +
+				"The ignored error code is '{}' and the message: '{}'.", sc, msg);
 	}
 
 	@Override