You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by pa...@apache.org on 2012/05/04 14:12:22 UTC

[13/24] git commit: upgrade to atmosphere 0.9.1

upgrade to atmosphere 0.9.1


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

Branch: refs/heads/master
Commit: d197a90afd602b693973ca8705a66e63af5224d2
Parents: 93993ea
Author: Emond Papegaaij <pa...@apache.org>
Authored: Thu Apr 26 14:27:50 2012 +0200
Committer: Emond Papegaaij <pa...@apache.org>
Committed: Thu Apr 26 14:27:50 2012 +0200

----------------------------------------------------------------------
 wicket-atmosphere/pom.xml                          |    2 +-
 .../apache/wicket/atmosphere/jquery.atmosphere.js  |   84 ++++++++++++---
 .../examples/atmosphere/AtmosphereApplication.java |    2 -
 3 files changed, 71 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/d197a90a/wicket-atmosphere/pom.xml
----------------------------------------------------------------------
diff --git a/wicket-atmosphere/pom.xml b/wicket-atmosphere/pom.xml
index 5b7bf19..41626a8 100644
--- a/wicket-atmosphere/pom.xml
+++ b/wicket-atmosphere/pom.xml
@@ -26,7 +26,7 @@
 	<artifactId>wicket-atmosphere</artifactId>
 	<packaging>jar</packaging>
 	<properties>
-		<atmosphere.version>0.9.0.RC3</atmosphere.version>
+		<atmosphere.version>0.9.1</atmosphere.version>
 	</properties>
 	<name>Wicket-Atmosphere</name>
 	<description>Wicket-Atmosphere provides integration of the Atmosphere Framework in Wicket.</description>

http://git-wip-us.apache.org/repos/asf/wicket/blob/d197a90a/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/jquery.atmosphere.js
----------------------------------------------------------------------
diff --git a/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/jquery.atmosphere.js b/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/jquery.atmosphere.js
index 20d292a..07e14fe 100644
--- a/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/jquery.atmosphere.js
+++ b/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/jquery.atmosphere.js
@@ -88,6 +88,7 @@ jQuery.atmosphere = function() {
                 withCredentials : false,
                 trackMessageLength : false ,
                 messageDelimiter : '|',
+                connectTimeout : -1,
                 onError : function(response) {},
                 onClose : function(response) {},
                 onOpen : function(response) {},
@@ -244,7 +245,7 @@ jQuery.atmosphere = function() {
                         _open('opening', _request.fallbackTransport);
                         _reconnectWithFallbackTransport();
                     } else {
-                        _executeWebSocket();
+                        _executeWebSocket(false);
                     }
                 }
             }
@@ -301,7 +302,7 @@ jQuery.atmosphere = function() {
                     },
                     jsonp : "jsonpTransport",
                     success: function(json) {
-                        if (!rq.executeCallbackBeforeReconnect) {
+                        if (rq.executeCallbackBeforeReconnect) {
                             _reconnect(_jqxhr, rq);
                         }
 
@@ -316,7 +317,7 @@ jQuery.atmosphere = function() {
 
                         _prepareCallback(msg, "messageReceived", 200, rq.transport);
 
-                        if (rq.executeCallbackBeforeReconnect) {
+                        if (!rq.executeCallbackBeforeReconnect) {
                             _reconnect(_jqxhr, rq);
                         }
                     },
@@ -370,8 +371,7 @@ jQuery.atmosphere = function() {
              *
              * @private
              */
-            function _executeWebSocket() {
-                var webSocketOpened = false;
+            function _executeWebSocket(webSocketOpened) {
 
                 _response.transport = "websocket";
 
@@ -384,6 +384,19 @@ jQuery.atmosphere = function() {
 
                 _websocket = _getWebSocket(location);
 
+                if (_request.connectTimeout > 0) {
+                    _request.id = setTimeout(function() {
+                        if (!webSocketOpened) {
+                            var _message = {
+                                code : 1002,
+                                reason : "",
+                                wasClean : false
+                            };
+                            _websocket.onclose(_message);
+                        }
+                    }, _request.connectTimeout);
+                }
+
                 _websocket.onopen = function(message) {
                     if (_request.logLevel == 'debug') {
                         jQuery.atmosphere.debug("Websocket successfully opened");
@@ -479,7 +492,7 @@ jQuery.atmosphere = function() {
                         if (_requestCount++ < _request.maxRequest) {
                             _request.requestCount = _requestCount;
                             _response.responseBody = "";
-                            _executeWebSocket();
+                            _executeWebSocket(true);
                         } else {
                             jQuery.atmosphere.log(_request.logLevel, ["Websocket reconnect maximum try reached " + _request.requestCount]);
                         }
@@ -708,7 +721,6 @@ jQuery.atmosphere = function() {
 
                         } else if (!jQuery.browser.msie && ajaxRequest.readyState == 3 && ajaxRequest.status == 200 && rq.transport != 'long-polling') {
                             update = true;
-
                         } else {
                             clearTimeout(rq.id);
                         }
@@ -752,6 +764,16 @@ jQuery.atmosphere = function() {
                                             try {
                                                 _response.status = ajaxRequest.status;
                                                 _response.headers = parseHeaders(ajaxRequest.getAllResponseHeaders());
+
+                                                // HOTFIX for firefox bug: https://bugzilla.mozilla.org/show_bug.cgi?id=608735
+                                                if (_request.headers) {
+                                                    jQuery.each(_request.headers, function(name) {
+                                                        var v = ajaxRequest.getResponseHeader(name);
+                                                        if (v) {
+                                                            _response.headers[name] = v;
+                                                        }
+                                                    });
+                                                }
                                             }
                                             catch(e) {
                                                 _response.status = 404;
@@ -781,6 +803,16 @@ jQuery.atmosphere = function() {
                             try {
                                 _response.status = ajaxRequest.status;
                                 _response.headers = parseHeaders(ajaxRequest.getAllResponseHeaders());
+
+                                // HOTFIX for firefox bug: https://bugzilla.mozilla.org/show_bug.cgi?id=608735
+                                if (_request.headers) {
+                                    jQuery.each(_request.headers, function(name) {
+                                        var v = ajaxRequest.getResponseHeader(name);
+                                        if (v) {
+                                            _response.headers[name] = v;
+                                        }
+                                    });
+                                }
                             } catch(e) {
                                 _response.status = 404;
                             }
@@ -818,9 +850,10 @@ jQuery.atmosphere = function() {
 
                     if (rq.suspend) {
                         rq.id = setTimeout(function() {
-                            ajaxRequest.abort();
-                            _subscribe(rq);
-
+                            if (_subscribed) {
+                                ajaxRequest.abort();
+                                _subscribe(rq);
+                            }
                         }, rq.timeout);
                     }
                     _subscribed = true;
@@ -842,9 +875,17 @@ jQuery.atmosphere = function() {
 
                 if (create) {
                     ajaxRequest.open(request.method, url, true);
+                    if (request.connectTimeout > -1) {
+                        request.id = setTimeout(function() {
+                            if (request.requestCount == 0) {
+                                ajaxRequest.abort();
+                                _prepareCallback("Connect timeout", "closed", 200, request.transport);
+                            }
+                        }, request.connectTimeout);
+                    }
                 }
 
-                if (request.withCredentials) {
+                if (_request.withCredentials) {
                     if ("withCredentials" in ajaxRequest) {
                         ajaxRequest.withCredentials = true;
                     }
@@ -868,7 +909,7 @@ jQuery.atmosphere = function() {
                 ajaxRequest.setRequestHeader("X-Atmosphere-tracking-id", _uuid);
 
                 jQuery.each(request.headers, function(name, value) {
-                    var h = jQuery.isFunction(value) ? value.call(this, ajaxRequest, request, create) : value;
+                    var h = jQuery.isFunction(value) ? value.call(this, ajaxRequest, request, create, _response) : value;
                     if (h) {
                         ajaxRequest.setRequestHeader(name, h);
                     }
@@ -971,6 +1012,14 @@ jQuery.atmosphere = function() {
                         }
                         xdr.open(rq.method, rewriteURL(url));
                         xdr.send();
+                        if (rq.connectTimeout > -1) {
+                            rq.id = setTimeout(function() {
+                                if (rq.requestCount == 0) {
+                                    xdr.abort();
+                                    _prepareCallback("Connect timeout", "closed", 200, rq.transport);
+                                }
+                            }, rq.connectTimeout);
+                        }
                     },
                     close: function() {
                         xdr.abort();
@@ -1094,7 +1143,8 @@ jQuery.atmosphere = function() {
                                 }
 
                                 if (cdoc.readyState === "complete") {
-                                    _prepareCallback("", "completed", 200, rq.transport);
+                                    _prepareCallback("", "re-opening", 200, rq.transport);
+                                    _ieStreaming(rq);
                                     return false;
                                 }
                             }, null);
@@ -1251,7 +1301,6 @@ jQuery.atmosphere = function() {
 
             function _prepareCallback(messageBody, state, errorCode, transport) {
 
-                var skipCallbackInvocation = false
                 if (state == "messageReceived") {
                     if (_trackMessageSize(messageBody, _request, _response)) return;
                 }
@@ -1338,6 +1387,7 @@ jQuery.atmosphere = function() {
              * @private
              */
             function _close() {
+                _subscribed = false;
                 _abordingConnection = true;
                 _response.state = 'unsubscribe';
                 _response.responseBody = "";
@@ -1426,6 +1476,7 @@ jQuery.atmosphere = function() {
             if (jQuery.atmosphere.requests.length > 0) {
                 for (var i = 0; i < jQuery.atmosphere.requests.length; i++) {
                     jQuery.atmosphere.requests[i].close();
+                    clearTimeout(jQuery.atmosphere.requests[i].id);
                 }
             }
             jQuery.atmosphere.requests = [];
@@ -1441,6 +1492,7 @@ jQuery.atmosphere = function() {
                     // Suppose you can subscribe once to an url
                     if (rq.getUrl() == url) {
                         rq.close();
+                        clearTimeout(rq.id);
                         idx = i;
                         break;
                     }
@@ -1619,6 +1671,10 @@ jQuery.atmosphere = function() {
 
         debug: function() {
             jQuery.atmosphere.log('debug', arguments);
+        },
+
+        error: function() {
+            jQuery.atmosphere.log('error', arguments);
         }
     };
 }();

http://git-wip-us.apache.org/repos/asf/wicket/blob/d197a90a/wicket-examples/src/main/java/org/apache/wicket/examples/atmosphere/AtmosphereApplication.java
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/atmosphere/AtmosphereApplication.java b/wicket-examples/src/main/java/org/apache/wicket/examples/atmosphere/AtmosphereApplication.java
index 762276d..d175ec0 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/atmosphere/AtmosphereApplication.java
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/atmosphere/AtmosphereApplication.java
@@ -28,8 +28,6 @@ import org.apache.wicket.protocol.http.WebApplication;
 /**
  * Application object for your web application. If you want to run this application without
  * deploying, run the Start class.
- * 
- * @see nl.topicus.onderwijs.Start#main(String[])
  */
 public class AtmosphereApplication extends WebApplication
 {