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/01/07 14:29:38 UTC
git commit: WICKET-4928 Error adding links to WebSocketRequestHandler
Updated Branches:
refs/heads/master f20b2d706 -> 3a9477845
WICKET-4928 Error adding links to WebSocketRequestHandler
Set the base Url for Ajax/WebSocket requests. It is needed if relative urls are needed to be calculated.
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/3a947784
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/3a947784
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/3a947784
Branch: refs/heads/master
Commit: 3a94778459e01472387603e307107cc47e02fa5a
Parents: f20b2d7
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Mon Jan 7 15:18:40 2013 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Mon Jan 7 15:18:40 2013 +0200
----------------------------------------------------------------------
.../ws/api/AbstractWebSocketProcessor.java | 7 +++++++
.../wicket/protocol/ws/api/WebSocketBehavior.java | 6 ++++++
.../ws/api/res/js/wicket-websocket-jquery.js | 1 +
.../ws/api/res/js/wicket-websocket-setup.js.tmpl | 2 +-
.../ws/util/tester/TestWebSocketProcessor.java | 2 ++
5 files changed, 17 insertions(+), 1 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/3a947784/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 a61ec34..277dc81 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
@@ -37,6 +37,7 @@ import org.apache.wicket.protocol.ws.api.message.ConnectedMessage;
import org.apache.wicket.protocol.ws.api.message.IWebSocketMessage;
import org.apache.wicket.protocol.ws.api.message.IWebSocketPushMessage;
import org.apache.wicket.protocol.ws.api.message.TextMessage;
+import org.apache.wicket.request.Url;
import org.apache.wicket.request.cycle.RequestCycle;
import org.apache.wicket.request.cycle.RequestCycleContext;
import org.apache.wicket.request.http.WebRequest;
@@ -58,6 +59,7 @@ public abstract class AbstractWebSocketProcessor implements IWebSocketProcessor
private final WebRequest webRequest;
private final int pageId;
+ private final Url baseUrl;
private final Application application;
private final String sessionId;
private final IWebSocketConnectionRegistry connectionRegistry;
@@ -79,6 +81,10 @@ public abstract class AbstractWebSocketProcessor implements IWebSocketProcessor
Checks.notEmpty(pageId, "Request parameter 'pageId' is required!");
this.pageId = Integer.parseInt(pageId, 10);
+ String baseUrl = request.getParameter(WebRequest.PARAM_AJAX_BASE_URL);
+ 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));
this.application = Args.notNull(application, "application");
@@ -152,6 +158,7 @@ public abstract class AbstractWebSocketProcessor implements IWebSocketProcessor
application.getRootRequestMapper(), application.getExceptionMapperProvider().get());
requestCycle = application.getRequestCycleProvider().get(context);
+ requestCycle.getUrlRenderer().setBaseUrl(baseUrl);
ThreadContext.setRequestCycle(requestCycle);
}
else
http://git-wip-us.apache.org/repos/asf/wicket/blob/3a947784/wicket-experimental/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/WebSocketBehavior.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/WebSocketBehavior.java b/wicket-experimental/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/WebSocketBehavior.java
index 4da8da0..ec2bbd5 100644
--- a/wicket-experimental/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/WebSocketBehavior.java
+++ b/wicket-experimental/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/WebSocketBehavior.java
@@ -33,7 +33,9 @@ import org.apache.wicket.protocol.ws.api.message.BinaryMessage;
import org.apache.wicket.protocol.ws.api.message.ClosedMessage;
import org.apache.wicket.protocol.ws.api.message.ConnectedMessage;
import org.apache.wicket.protocol.ws.api.message.TextMessage;
+import org.apache.wicket.request.Url;
import org.apache.wicket.util.lang.Generics;
+import org.apache.wicket.util.string.Strings;
import org.apache.wicket.util.template.PackageTextTemplate;
/**
@@ -108,6 +110,10 @@ public abstract class WebSocketBehavior extends Behavior
Map<String, Object> variables = Generics.newHashMap();
int pageId = component.getPage().getPageId();
variables.put("pageId", Integer.valueOf(pageId));
+
+ Url baseUrl = component.getRequestCycle().getUrlRenderer().getBaseUrl();
+ CharSequence ajaxBaseUrl = Strings.escapeMarkup(baseUrl.toString());
+ variables.put("baseUrl", ajaxBaseUrl);
String webSocketSetupScript = webSocketSetupTemplate.asString(variables);
response.render(OnDomReadyHeaderItem.forScript(webSocketSetupScript));
http://git-wip-us.apache.org/repos/asf/wicket/blob/3a947784/wicket-experimental/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/res/js/wicket-websocket-jquery.js
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/res/js/wicket-websocket-jquery.js b/wicket-experimental/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/res/js/wicket-websocket-jquery.js
index d9acc26..d1d9495 100644
--- a/wicket-experimental/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/res/js/wicket-websocket-jquery.js
+++ b/wicket-experimental/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/res/js/wicket-websocket-jquery.js
@@ -50,6 +50,7 @@
}
delim = url.indexOf('?') > -1 ? '&' : '?';
url += delim + 'pageId=' + Wicket.WebSocket.pageId;
+ url += '&wicket-ajax-baseurl=' + Wicket.WebSocket.baseUrl;
self.ws = new WebSocket(url);
self.ws.onopen = function (evt) {
http://git-wip-us.apache.org/repos/asf/wicket/blob/3a947784/wicket-experimental/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/res/js/wicket-websocket-setup.js.tmpl
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/res/js/wicket-websocket-setup.js.tmpl b/wicket-experimental/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/res/js/wicket-websocket-setup.js.tmpl
index fbfe93b..3d8950a 100644
--- a/wicket-experimental/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/res/js/wicket-websocket-setup.js.tmpl
+++ b/wicket-experimental/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/res/js/wicket-websocket-setup.js.tmpl
@@ -2,7 +2,7 @@
'use strict';
if (!Wicket.WebSocket.pageId) {
- jQuery.extend(Wicket.WebSocket, { pageId: ${pageId} });
+ jQuery.extend(Wicket.WebSocket, { pageId: ${pageId}, baseUrl: '${baseUrl}' });
Wicket.WebSocket.createDefaultConnection();
}
})();
http://git-wip-us.apache.org/repos/asf/wicket/blob/3a947784/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 7afe82f..69ab800 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
@@ -24,6 +24,7 @@ import org.apache.wicket.Page;
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;
+import org.apache.wicket.request.http.WebRequest;
import org.apache.wicket.util.lang.Args;
import org.apache.wicket.util.tester.WicketTester;
@@ -59,6 +60,7 @@ abstract class TestWebSocketProcessor extends AbstractWebSocketProcessor
HttpSession httpSession = wicketTester.getHttpSession();
MockHttpServletRequest request = new MockHttpServletRequest(application, httpSession, null);
request.addParameter("pageId", page.getId());
+ request.addParameter(WebRequest.PARAM_AJAX_BASE_URL, ".");
return request;
}