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