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 2016/04/22 22:50:54 UTC

wicket git commit: WICKET-6152 Allow to add more than one WebSocketBehavior in the component tree

Repository: wicket
Updated Branches:
  refs/heads/master bc99c7e09 -> b9a1ae901


WICKET-6152 Allow to add more than one WebSocketBehavior in the component tree

Contribute the WebSocketBehavior's JavaScript only once per non-Ajax request


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

Branch: refs/heads/master
Commit: b9a1ae901b8add3285d29a29d4a18ac2c23c8f86
Parents: bc99c7e
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Fri Apr 22 22:48:49 2016 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Fri Apr 22 22:48:49 2016 +0200

----------------------------------------------------------------------
 .../protocol/ws/api/WebSocketBehavior.java      | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/b9a1ae90/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/WebSocketBehavior.java
----------------------------------------------------------------------
diff --git a/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/WebSocketBehavior.java b/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/WebSocketBehavior.java
index 30a65e0..ca5189e 100644
--- a/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/WebSocketBehavior.java
+++ b/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/WebSocketBehavior.java
@@ -17,7 +17,10 @@
 package org.apache.wicket.protocol.ws.api;
 
 import org.apache.wicket.Component;
+import org.apache.wicket.MetaDataKey;
+import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import org.apache.wicket.event.IEvent;
+import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.protocol.ws.api.event.WebSocketAbortedPayload;
 import org.apache.wicket.protocol.ws.api.event.WebSocketBinaryPayload;
 import org.apache.wicket.protocol.ws.api.event.WebSocketClosedPayload;
@@ -33,6 +36,7 @@ import org.apache.wicket.protocol.ws.api.message.ConnectedMessage;
 import org.apache.wicket.protocol.ws.api.message.ErrorMessage;
 import org.apache.wicket.protocol.ws.api.message.IWebSocketPushMessage;
 import org.apache.wicket.protocol.ws.api.message.TextMessage;
+import org.apache.wicket.request.cycle.RequestCycle;
 
 /**
  * A behavior that provides optional callbacks for the WebSocket
@@ -42,8 +46,22 @@ import org.apache.wicket.protocol.ws.api.message.TextMessage;
  */
 public abstract class WebSocketBehavior extends BaseWebSocketBehavior
 {
-	public WebSocketBehavior()
+	private final static MetaDataKey<Object> IS_JAVA_SCRIPT_CONTRIBUTED = new MetaDataKey<Object>()
+	{};
+
+	@Override
+	public void renderHead(Component component, IHeaderResponse response)
 	{
+		RequestCycle cycle = component.getRequestCycle();
+		if (cycle.find(IPartialPageRequestHandler.class) == null)
+		{
+			Object contributed = cycle.getMetaData(IS_JAVA_SCRIPT_CONTRIBUTED);
+			if (contributed == null)
+			{
+				cycle.setMetaData(IS_JAVA_SCRIPT_CONTRIBUTED, new Object());
+				super.renderHead(component, response);
+			}
+		}
 	}
 
 	@Override