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;
 	}