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 2013/02/20 16:35:19 UTC
[2/2] git commit: WICKET-5044: WebSocketRequest should extend from
ServletWebRequest to be able to use WebClientInfo when needed
Updated Branches:
refs/heads/master cf9d262f5 -> e8fca2405
WICKET-5044: WebSocketRequest should extend from ServletWebRequest to be able to use WebClientInfo when needed
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/e8fca240
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/e8fca240
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/e8fca240
Branch: refs/heads/master
Commit: e8fca2405be6c2691e0f24dee7ab8fc23b6189cf
Parents: d8ce394
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Wed Feb 20 17:33:20 2013 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Wed Feb 20 17:33:20 2013 +0200
----------------------------------------------------------------------
.../ws/api/AbstractWebSocketProcessor.java | 39 +++++++++++++--
.../wicket/protocol/ws/api/WebSocketRequest.java | 27 ++++------
.../ws/util/tester/TestWebSocketProcessor.java | 3 +-
.../protocol/ws/util/tester/WebSocketTester.java | 4 ++
.../protocol/ws/jetty/JettyWebSocketProcessor.java | 4 +-
.../ws/jetty9/Jetty9WebSocketProcessor.java | 4 +-
.../ws/tomcat7/Tomcat7WebSocketFilter.java | 4 +-
.../ws/tomcat7/TomcatWebSocketProcessor.java | 4 +-
8 files changed, 59 insertions(+), 30 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/e8fca240/wicket-experimental/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/AbstractWebSocketProcessor.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/AbstractWebSocketProcessor.java b/wicket-experimental/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/AbstractWebSocketProcessor.java
index 13818f3..16eeb5b 100644
--- a/wicket-experimental/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/AbstractWebSocketProcessor.java
+++ b/wicket-experimental/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/AbstractWebSocketProcessor.java
@@ -16,6 +16,8 @@
*/
package org.apache.wicket.protocol.ws.api;
+import java.lang.reflect.Method;
+
import javax.servlet.http.HttpServletRequest;
import org.apache.wicket.Application;
@@ -24,6 +26,8 @@ import org.apache.wicket.Session;
import org.apache.wicket.ThreadContext;
import org.apache.wicket.event.Broadcast;
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.api.event.WebSocketBinaryPayload;
import org.apache.wicket.protocol.ws.api.event.WebSocketClosedPayload;
@@ -57,10 +61,23 @@ public abstract class AbstractWebSocketProcessor implements IWebSocketProcessor
{
private static final Logger LOG = LoggerFactory.getLogger(AbstractWebSocketProcessor.class);
+ private static final Method GET_FILTER_PATH_METHOD;
+ static
+ {
+ try
+ {
+ GET_FILTER_PATH_METHOD = WicketFilter.class.getDeclaredMethod("getFilterPath", new Class[]{});
+ } catch (Exception e)
+ {
+ throw new RuntimeException(e);
+ }
+ GET_FILTER_PATH_METHOD.setAccessible(true);
+ }
+
private final WebRequest webRequest;
private final int pageId;
private final Url baseUrl;
- private final Application application;
+ private final WebApplication application;
private final String sessionId;
private final IWebSocketConnectionRegistry connectionRegistry;
@@ -72,7 +89,7 @@ public abstract class AbstractWebSocketProcessor implements IWebSocketProcessor
* @param application
* the current Wicket Application
*/
- public AbstractWebSocketProcessor(final HttpServletRequest request, final Application application)
+ public AbstractWebSocketProcessor(final HttpServletRequest request, final WebApplication application)
{
this.sessionId = request.getSession(true).getId();
Session.get().bind();
@@ -85,13 +102,27 @@ public abstract class AbstractWebSocketProcessor implements IWebSocketProcessor
Checks.notNull(baseUrl, String.format("Request parameter '%s' is required!", WebRequest.PARAM_AJAX_BASE_URL));
this.baseUrl = Url.parse(baseUrl);
- this.webRequest = new WebSocketRequest(new ServletRequestCopy(request));
+ WicketFilter wicketFilter = application.getWicketFilter();
+ this.webRequest = new WebSocketRequest(new ServletRequestCopy(request), getFilterPath(wicketFilter));
this.application = Args.notNull(application, "application");
IWebSocketSettings webSocketSettings = IWebSocketSettings.Holder.get(application);
this.connectionRegistry = webSocketSettings.getConnectionRegistry();
}
+ private String getFilterPath(WicketFilter wicketFilter)
+ {
+ String filterPath;
+ try
+ {
+ filterPath = (String) GET_FILTER_PATH_METHOD.invoke(wicketFilter);
+ } catch (Exception e)
+ {
+ throw new RuntimeException(e);
+ }
+ return filterPath;
+ }
+
@Override
public void onMessage(final String message)
{
@@ -224,7 +255,7 @@ public abstract class AbstractWebSocketProcessor implements IWebSocketProcessor
}
}
- protected final Application getApplication()
+ protected final WebApplication getApplication()
{
return application;
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/e8fca240/wicket-experimental/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/WebSocketRequest.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/WebSocketRequest.java b/wicket-experimental/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/WebSocketRequest.java
index c9ac95b..f7eaf5b 100644
--- a/wicket-experimental/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/WebSocketRequest.java
+++ b/wicket-experimental/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/WebSocketRequest.java
@@ -26,6 +26,7 @@ import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import org.apache.wicket.protocol.http.RequestUtils;
+import org.apache.wicket.protocol.http.servlet.ServletWebRequest;
import org.apache.wicket.request.Url;
import org.apache.wicket.request.http.WebRequest;
import org.apache.wicket.util.lang.Generics;
@@ -38,32 +39,30 @@ import org.apache.wicket.util.time.Time;
*
* @since 6.0
*/
-public class WebSocketRequest extends WebRequest
+public class WebSocketRequest extends ServletWebRequest
{
- private final HttpServletRequest request;
-
/**
* Constructor.
*
* @param req
* the copy of the HttpServletRequest used for the upgrade of the HTTP protocol
*/
- public WebSocketRequest(HttpServletRequest req)
+ public WebSocketRequest(HttpServletRequest req, String filterPrefix)
{
- this.request = req;
+ super(req, filterPrefix);
}
@Override
public List<Cookie> getCookies()
{
- List<Cookie> cookies = Arrays.asList(request.getCookies());
+ List<Cookie> cookies = Arrays.asList(getContainerRequest().getCookies());
return cookies;
}
@Override
public List<String> getHeaders(String name)
{
- Enumeration<String> headers = request.getHeaders(name);
+ Enumeration<String> headers = getContainerRequest().getHeaders(name);
List<String> h = Generics.newArrayList();
while (headers.hasMoreElements())
{
@@ -76,13 +75,13 @@ public class WebSocketRequest extends WebRequest
@Override
public String getHeader(String name)
{
- return request.getHeader(name);
+ return getContainerRequest().getHeader(name);
}
@Override
public Time getDateHeader(String name)
{
- long dateHeader = request.getDateHeader(name);
+ long dateHeader = getContainerRequest().getDateHeader(name);
return Time.millis(dateHeader);
}
@@ -101,19 +100,13 @@ public class WebSocketRequest extends WebRequest
@Override
public Locale getLocale()
{
- return request.getLocale();
+ return getContainerRequest().getLocale();
}
@Override
public Charset getCharset()
{
- return RequestUtils.getCharset(request);
- }
-
- @Override
- public Object getContainerRequest()
- {
- return request;
+ return RequestUtils.getCharset(getContainerRequest());
}
@Override
http://git-wip-us.apache.org/repos/asf/wicket/blob/e8fca240/wicket-experimental/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/util/tester/TestWebSocketProcessor.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/util/tester/TestWebSocketProcessor.java b/wicket-experimental/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/util/tester/TestWebSocketProcessor.java
index 69ab800..0d79e9e 100644
--- a/wicket-experimental/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/util/tester/TestWebSocketProcessor.java
+++ b/wicket-experimental/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/util/tester/TestWebSocketProcessor.java
@@ -21,6 +21,7 @@ import javax.servlet.http.HttpSession;
import org.apache.wicket.Application;
import org.apache.wicket.Page;
+import org.apache.wicket.protocol.http.WebApplication;
import org.apache.wicket.protocol.http.mock.MockHttpServletRequest;
import org.apache.wicket.protocol.ws.api.AbstractWebSocketProcessor;
import org.apache.wicket.protocol.ws.api.message.IWebSocketPushMessage;
@@ -43,7 +44,7 @@ abstract class TestWebSocketProcessor extends AbstractWebSocketProcessor
*/
public TestWebSocketProcessor(final WicketTester wicketTester, final Page page)
{
- super(createRequest(wicketTester, page), page.getApplication());
+ super(createRequest(wicketTester, page), (WebApplication) page.getApplication());
}
/**
http://git-wip-us.apache.org/repos/asf/wicket/blob/e8fca240/wicket-experimental/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/util/tester/WebSocketTester.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/util/tester/WebSocketTester.java b/wicket-experimental/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/util/tester/WebSocketTester.java
index 2cd6eeb..761690b 100644
--- a/wicket-experimental/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/util/tester/WebSocketTester.java
+++ b/wicket-experimental/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/util/tester/WebSocketTester.java
@@ -17,6 +17,7 @@
package org.apache.wicket.protocol.ws.util.tester;
import org.apache.wicket.Page;
+import org.apache.wicket.protocol.http.WebApplication;
import org.apache.wicket.protocol.ws.api.IWebSocketProcessor;
import org.apache.wicket.util.lang.Args;
import org.apache.wicket.util.tester.WicketTester;
@@ -43,6 +44,9 @@ public class WebSocketTester
Args.notNull(wicketTester, "wicketTester");
Args.notNull(page, "page");
+ WebApplication webApplication = wicketTester.getApplication();
+ webApplication.getWicketFilter().setFilterPath("");
+
socketProcessor = new TestWebSocketProcessor(wicketTester, page) {
@Override
http://git-wip-us.apache.org/repos/asf/wicket/blob/e8fca240/wicket-experimental/wicket-native-websocket/wicket-native-websocket-jetty/src/main/java/org/apache/wicket/protocol/ws/jetty/JettyWebSocketProcessor.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-native-websocket/wicket-native-websocket-jetty/src/main/java/org/apache/wicket/protocol/ws/jetty/JettyWebSocketProcessor.java b/wicket-experimental/wicket-native-websocket/wicket-native-websocket-jetty/src/main/java/org/apache/wicket/protocol/ws/jetty/JettyWebSocketProcessor.java
index 3665611..bab53e4 100644
--- a/wicket-experimental/wicket-native-websocket/wicket-native-websocket-jetty/src/main/java/org/apache/wicket/protocol/ws/jetty/JettyWebSocketProcessor.java
+++ b/wicket-experimental/wicket-native-websocket/wicket-native-websocket-jetty/src/main/java/org/apache/wicket/protocol/ws/jetty/JettyWebSocketProcessor.java
@@ -18,7 +18,7 @@ package org.apache.wicket.protocol.ws.jetty;
import javax.servlet.http.HttpServletRequest;
-import org.apache.wicket.Application;
+import org.apache.wicket.protocol.http.WebApplication;
import org.apache.wicket.protocol.ws.api.AbstractWebSocketProcessor;
import org.eclipse.jetty.websocket.WebSocket;
@@ -65,7 +65,7 @@ public class JettyWebSocketProcessor extends AbstractWebSocketProcessor
* @param application
* the current Wicket Application
*/
- public JettyWebSocketProcessor(final HttpServletRequest request, final Application application)
+ public JettyWebSocketProcessor(final HttpServletRequest request, final WebApplication application)
{
super(request, application);
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/e8fca240/wicket-experimental/wicket-native-websocket/wicket-native-websocket-jetty9/src/main/java/org/apache/wicket/protocol/ws/jetty9/Jetty9WebSocketProcessor.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-native-websocket/wicket-native-websocket-jetty9/src/main/java/org/apache/wicket/protocol/ws/jetty9/Jetty9WebSocketProcessor.java b/wicket-experimental/wicket-native-websocket/wicket-native-websocket-jetty9/src/main/java/org/apache/wicket/protocol/ws/jetty9/Jetty9WebSocketProcessor.java
index fbb7625..9f0f53f 100644
--- a/wicket-experimental/wicket-native-websocket/wicket-native-websocket-jetty9/src/main/java/org/apache/wicket/protocol/ws/jetty9/Jetty9WebSocketProcessor.java
+++ b/wicket-experimental/wicket-native-websocket/wicket-native-websocket-jetty9/src/main/java/org/apache/wicket/protocol/ws/jetty9/Jetty9WebSocketProcessor.java
@@ -19,7 +19,7 @@ package org.apache.wicket.protocol.ws.jetty9;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
-import org.apache.wicket.Application;
+import org.apache.wicket.protocol.http.WebApplication;
import org.apache.wicket.protocol.ws.api.AbstractWebSocketProcessor;
import org.eclipse.jetty.websocket.core.annotations.WebSocket;
import org.eclipse.jetty.websocket.core.api.UpgradeRequest;
@@ -53,7 +53,7 @@ public class Jetty9WebSocketProcessor extends AbstractWebSocketProcessor
* the current Wicket Application
*/
public Jetty9WebSocketProcessor(final UpgradeRequest upgradeRequest,
- final UpgradeResponse upgradeResponse, final Application application)
+ final UpgradeResponse upgradeResponse, final WebApplication application)
{
super((HttpServletRequest)((HttpServletRequestWrapper)upgradeRequest).getRequest(),
application);
http://git-wip-us.apache.org/repos/asf/wicket/blob/e8fca240/wicket-experimental/wicket-native-websocket/wicket-native-websocket-tomcat/src/main/java/org/apache/wicket/protocol/ws/tomcat7/Tomcat7WebSocketFilter.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-native-websocket/wicket-native-websocket-tomcat/src/main/java/org/apache/wicket/protocol/ws/tomcat7/Tomcat7WebSocketFilter.java b/wicket-experimental/wicket-native-websocket/wicket-native-websocket-tomcat/src/main/java/org/apache/wicket/protocol/ws/tomcat7/Tomcat7WebSocketFilter.java
index fbb4d0b..6d88d91 100644
--- a/wicket-experimental/wicket-native-websocket/wicket-native-websocket-tomcat/src/main/java/org/apache/wicket/protocol/ws/tomcat7/Tomcat7WebSocketFilter.java
+++ b/wicket-experimental/wicket-native-websocket/wicket-native-websocket-tomcat/src/main/java/org/apache/wicket/protocol/ws/tomcat7/Tomcat7WebSocketFilter.java
@@ -28,7 +28,7 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.catalina.connector.RequestFacade;
import org.apache.catalina.util.Base64;
import org.apache.tomcat.util.buf.B2CConverter;
-import org.apache.wicket.Application;
+import org.apache.wicket.protocol.http.WebApplication;
import org.apache.wicket.protocol.ws.AbstractUpgradeFilter;
/**
@@ -71,7 +71,7 @@ public class Tomcat7WebSocketFilter extends AbstractUpgradeFilter
String key = req.getHeader("Sec-WebSocket-Key");
resp.setHeader("Sec-WebSocket-Accept", getWebSocketAccept(key));
- Application application = getApplication();
+ WebApplication application = getApplication();
// Small hack until the Servlet API provides a way to do this.
TomcatWebSocketProcessor webSocketHandler = new TomcatWebSocketProcessor(req, application);
TomcatWebSocketProcessor.TomcatWebSocket tomcatWebSocket = webSocketHandler.new TomcatWebSocket();
http://git-wip-us.apache.org/repos/asf/wicket/blob/e8fca240/wicket-experimental/wicket-native-websocket/wicket-native-websocket-tomcat/src/main/java/org/apache/wicket/protocol/ws/tomcat7/TomcatWebSocketProcessor.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-native-websocket/wicket-native-websocket-tomcat/src/main/java/org/apache/wicket/protocol/ws/tomcat7/TomcatWebSocketProcessor.java b/wicket-experimental/wicket-native-websocket/wicket-native-websocket-tomcat/src/main/java/org/apache/wicket/protocol/ws/tomcat7/TomcatWebSocketProcessor.java
index 694b46d..b89a608 100644
--- a/wicket-experimental/wicket-native-websocket/wicket-native-websocket-tomcat/src/main/java/org/apache/wicket/protocol/ws/tomcat7/TomcatWebSocketProcessor.java
+++ b/wicket-experimental/wicket-native-websocket/wicket-native-websocket-tomcat/src/main/java/org/apache/wicket/protocol/ws/tomcat7/TomcatWebSocketProcessor.java
@@ -24,7 +24,7 @@ import javax.servlet.http.HttpServletRequest;
import org.apache.catalina.websocket.MessageInbound;
import org.apache.catalina.websocket.WsOutbound;
-import org.apache.wicket.Application;
+import org.apache.wicket.protocol.http.WebApplication;
import org.apache.wicket.protocol.ws.api.AbstractWebSocketProcessor;
/**
@@ -64,7 +64,7 @@ public class TomcatWebSocketProcessor extends AbstractWebSocketProcessor
TomcatWebSocketProcessor.this.onClose(status, "Connection closed by client");
}
}
- public TomcatWebSocketProcessor(final HttpServletRequest request, final Application application)
+ public TomcatWebSocketProcessor(final HttpServletRequest request, final WebApplication application)
{
super(request, application);
}