Modified: camel/trunk/components/camel-cometd/src/test/resources/webapp/dojo/dojox/cometd.xd.js.uncompressed.js URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cometd/src/test/resources/webapp/dojo/dojox/cometd.xd.js.uncompressed.js?rev=1087994&r1=1087993&r2=1087994&view=diff ============================================================================== --- camel/trunk/components/camel-cometd/src/test/resources/webapp/dojo/dojox/cometd.xd.js.uncompressed.js (original) +++ camel/trunk/components/camel-cometd/src/test/resources/webapp/dojo/dojox/cometd.xd.js.uncompressed.js Sat Apr 2 10:31:37 2011 @@ -1,1149 +0,0 @@ -dojo._xdResourceLoaded({ -depends: [["provide", "dojo.AdapterRegistry"], -["provide", "dojo.io.script"], -["provide", "dojox.cometd._base"], -["provide", "dojox.cometd"]], -defineResource: function(dojo){/* - Copyright (c) 2004-2007, The Dojo Foundation - All Rights Reserved. - - Licensed under the Academic Free License version 2.1 or above OR the - modified BSD license. For more information on Dojo licensing, see: - - http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing -*/ - -/* - This is a compiled version of Dojo, built for deployment and not for - development. To get an editable version, please visit: - - http://dojotoolkit.org - - for documentation and information on getting the source. -*/ - -if(!dojo._hasResource["dojo.AdapterRegistry"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code. -dojo._hasResource["dojo.AdapterRegistry"] = true; -dojo.provide("dojo.AdapterRegistry"); - -dojo.AdapterRegistry = function(/*Boolean?*/ returnWrappers){ - // summary: - // A registry to make contextual calling/searching easier. - // description: - // Objects of this class keep list of arrays in the form [name, check, - // wrap, directReturn] that are used to determine what the contextual - // result of a set of checked arguments is. All check/wrap functions - // in this registry should be of the same arity. - // example: - // | // create a new registry - // | var reg = new dojo.AdapterRegistry(); - // | reg.register("handleString", - // | dojo.isString, - // | function(str){ - // | // do something with the string here - // | } - // | ); - // | reg.register("handleArr", - // | dojo.isArray, - // | function(arr){ - // | // do something with the array here - // | } - // | ); - // | - // | // now we can pass reg.match() *either* an array or a string and - // | // the value we pass will get handled by the right function - // | reg.match("someValue"); // will call the first function - // | reg.match(["someValue"]); // will call the second - - this.pairs = []; - this.returnWrappers = returnWrappers || false; // Boolean -} - -dojo.extend(dojo.AdapterRegistry, { - register: function(/*String*/ name, /*Function*/ check, /*Function*/ wrap, /*Boolean?*/ directReturn, /*Boolean?*/ override){ - // summary: - // register a check function to determine if the wrap function or - // object gets selected - // name: - // a way to identify this matcher. - // check: - // a function that arguments are passed to from the adapter's - // match() function. The check function should return true if the - // given arguments are appropriate for the wrap function. - // directReturn: - // If directReturn is true, the value passed in for wrap will be - // returned instead of being called. Alternately, the - // AdapterRegistry can be set globally to "return not call" using - // the returnWrappers property. Either way, this behavior allows - // the registry to act as a "search" function instead of a - // function interception library. - // override: - // If override is given and true, the check function will be given - // highest priority. Otherwise, it will be the lowest priority - // adapter. - this.pairs[((override) ? "unshift" : "push")]([name, check, wrap, directReturn]); - }, - - match: function(/* ... */){ - // summary: - // Find an adapter for the given arguments. If no suitable adapter - // is found, throws an exception. match() accepts any number of - // arguments, all of which are passed to all matching functions - // from the registered pairs. - for(var i = 0; i < this.pairs.length; i++){ - var pair = this.pairs[i]; - if(pair[1].apply(this, arguments)){ - if((pair[3])||(this.returnWrappers)){ - return pair[2]; - }else{ - return pair[2].apply(this, arguments); - } - } - } - throw new Error("No match found"); - }, - - unregister: function(name){ - // summary: Remove a named adapter from the registry - - // FIXME: this is kind of a dumb way to handle this. On a large - // registry this will be slow-ish and we can use the name as a lookup - // should we choose to trade memory for speed. - for(var i = 0; i < this.pairs.length; i++){ - var pair = this.pairs[i]; - if(pair[0] == name){ - this.pairs.splice(i, 1); - return true; - } - } - return false; - } -}); - -} - -if(!dojo._hasResource["dojo.io.script"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code. -dojo._hasResource["dojo.io.script"] = true; -dojo.provide("dojo.io.script"); - -/*===== -dojo.io.script.__ioArgs = function(kwArgs){ - // summary: - // All the properties described in the dojo.__ioArgs type, apply to this - // type as well, EXCEPT "handleAs". It is not applicable to - // dojo.io.script.get() calls, since it is implied by the usage of - // "callbackParamName" (response will be a JSONP call returning JSON) - // or "checkString" (response is pure JavaScript defined in - // the body of the script that was attached). The following additional - // properties are allowed for dojo.io.script.get(): - // callbackParamName: String - // The URL parameter name that indicates the JSONP callback string. - // For instance, when using Yahoo JSONP calls it is normally, - // callbackParamName: "callback". For AOL JSONP calls it is normally - // callbackParamName: "c". - // checkString: String - // A string of JavaScript that when evaluated like so: - // "typeof(" + checkString + ") != 'undefined'" - // being true means that the script fetched has been loaded. - // Do not use this if doing a JSONP type of call (use callbackParamName instead). -} -=====*/ - -dojo.io.script = { - get: function(/*dojo.io.script.__ioArgs*/args){ - // summary: - // sends a get request using a dynamically created script tag. - var dfd = this._makeScriptDeferred(args); - var ioArgs = dfd.ioArgs; - dojo._ioAddQueryToUrl(ioArgs); - - this.attach(ioArgs.id, ioArgs.url); - dojo._ioWatch(dfd, this._validCheck, this._ioCheck, this._resHandle); - return dfd; - }, - - attach: function(/*String*/id, /*String*/url){ - // summary: - // creates a new <script> tag pointing to the specified URL and - // adds it to the document. - // description: - // Attaches the script element to the DOM. Use this method if you - // just want to attach a script to the DOM and do not care when or - // if it loads. - var element = dojo.doc.createElement("script"); - element.type = "text/javascript"; - element.src = url; - element.id = id; - dojo.doc.getElementsByTagName("head")[0].appendChild(element); - }, - - remove: function(/*String*/id){ - //summary: removes the script element with the given id. - dojo._destroyElement(dojo.byId(id)); - - //Remove the jsonp callback on dojo.io.script, if it exists. - if(this["jsonp_" + id]){ - delete this["jsonp_" + id]; - } - }, - - _makeScriptDeferred: function(/*Object*/args){ - //summary: - // sets up a Deferred object for an IO request. - var dfd = dojo._ioSetArgs(args, this._deferredCancel, this._deferredOk, this._deferredError); - - var ioArgs = dfd.ioArgs; - ioArgs.id = "dojoIoScript" + (this._counter++); - ioArgs.canDelete = false; - - //Special setup for jsonp case - if(args.callbackParamName){ - //Add the jsonp parameter. - ioArgs.query = ioArgs.query || ""; - if(ioArgs.query.length > 0){ - ioArgs.query += "&"; - } - ioArgs.query += args.callbackParamName + "=dojo.io.script.jsonp_" + ioArgs.id + "._jsonpCallback"; - - //Setup the Deferred to have the jsonp callback. - ioArgs.canDelete = true; - dfd._jsonpCallback = this._jsonpCallback; - this["jsonp_" + ioArgs.id] = dfd; - } - return dfd; // dojo.Deferred - }, - - _deferredCancel: function(/*Deferred*/dfd){ - //summary: canceller function for dojo._ioSetArgs call. - - //DO NOT use "this" and expect it to be dojo.io.script. - dfd.canceled = true; - if(dfd.ioArgs.canDelete){ - dojo.io.script._deadScripts.push(dfd.ioArgs.id); - } - }, - - _deferredOk: function(/*Deferred*/dfd){ - //summary: okHandler function for dojo._ioSetArgs call. - - //DO NOT use "this" and expect it to be dojo.io.script. - - //Add script to list of things that can be removed. - if(dfd.ioArgs.canDelete){ - dojo.io.script._deadScripts.push(dfd.ioArgs.id); - } - - if(dfd.ioArgs.json){ - //Make sure to *not* remove the json property from the - //Deferred, so that the Deferred can still function correctly - //after the response is received. - return dfd.ioArgs.json; - }else{ - //FIXME: cannot return the dfd here, otherwise that stops - //the callback chain in Deferred. So return the ioArgs instead. - //This doesn't feel right. - return dfd.ioArgs; - } - }, - - _deferredError: function(/*Error*/error, /*Deferred*/dfd){ - //summary: errHandler function for dojo._ioSetArgs call. - - if(dfd.ioArgs.canDelete){ - //DO NOT use "this" and expect it to be dojo.io.script. - if(error.dojoType == "timeout"){ - //For timeouts, remove the script element immediately to - //avoid a response from it coming back later and causing trouble. - dojo.io.script.remove(dfd.ioArgs.id); - }else{ - dojo.io.script._deadScripts.push(dfd.ioArgs.id); - } - } - console.debug("dojo.io.script error", error); - return error; - }, - - _deadScripts: [], - _counter: 1, - - _validCheck: function(/*Deferred*/dfd){ - //summary: inflight check function to see if dfd is still valid. - - //Do script cleanup here. We wait for one inflight pass - //to make sure we don't get any weird things by trying to remove a script - //tag that is part of the call chain (IE 6 has been known to - //crash in that case). - var _self = dojo.io.script; - var deadScripts = _self._deadScripts; - if(deadScripts && deadScripts.length > 0){ - for(var i = 0; i < deadScripts.length; i++){ - //Remove the script tag - _self.remove(deadScripts[i]); - } - dojo.io.script._deadScripts = []; - } - - return true; - }, - - _ioCheck: function(/*Deferred*/dfd){ - //summary: inflight check function to see if IO finished. - - //Check for finished jsonp - if(dfd.ioArgs.json){ - return true; - } - - //Check for finished "checkString" case. - var checkString = dfd.ioArgs.args.checkString; - if(checkString && eval("typeof(" + checkString + ") != 'undefined'")){ - return true; - } - - return false; - }, - - _resHandle: function(/*Deferred*/dfd){ - //summary: inflight function to handle a completed response. - if(dojo.io.script._ioCheck(dfd)){ - dfd.callback(dfd); - }else{ - //This path should never happen since the only way we can get - //to _resHandle is if _ioCheck is true. - dfd.errback(new Error("inconceivable dojo.io.script._resHandle error")); - } - }, - - _jsonpCallback: function(/*JSON Object*/json){ - //summary: - // generic handler for jsonp callback. A pointer to this function - // is used for all jsonp callbacks. NOTE: the "this" in this - // function will be the Deferred object that represents the script - // request. - this.ioArgs.json = json; - } -} - -} - -if(!dojo._hasResource["dojox.cometd._base"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code. -dojo._hasResource["dojox.cometd._base"] = true; -dojo.provide("dojox.cometd._base"); - - - - -/* - * this file defines Comet protocol client. Actual message transport is - * deferred to one of several connection type implementations. The default is a - * long-polling implementation. A single global object named "dojox.cometd" is - * used to mediate for these connection types in order to provide a stable - * interface. - * - * extensions modules may be loaded (eg "dojox.cometd.timestamp", that use - * the cometd._extendInList and cometd._extendOutList fields to provide functions - * that extend and handling incoming and outgoing messages. - */ - -dojox.cometd = new function(){ - - // cometd states: - this.DISCONNECTED="DISCONNECTED"; // _initialized==false && _connected==false - this.CONNECTING="CONNECTING"; // _initialized==true && _connected==false (handshake sent) - this.CONNECTED="CONNECTED"; // _initialized==true && _connected==true (first successful connect) - this.DISCONNECTING="DISCONNECING"; // _initialized==false && _connected==true (disconnect sent) - - this._initialized = false; - this._connected = false; - this._polling = false; - - this.connectionTypes = new dojo.AdapterRegistry(true); - - this.version="1.0"; - this.minimumVersion="0.9"; - this.clientId=null; - this.messageId=0; - this.batch=0; - - this._isXD = false; - this.handshakeReturn=null; - this.currentTransport=null; - this.url = null; - this.lastMessage=null; - this._messageQ=[]; - this.handleAs="json-comment-optional"; - this._advice={}; - this._maxInterval=30000; - this._backoffInterval=1000; - this._deferredSubscribes={}; - this._deferredUnsubscribes={}; - this._subscriptions=[]; - this._extendInList=[]; // List of functions invoked before delivering messages - this._extendOutList=[]; // List of functions invoked before sending messages - - this.state = function() { - return this._initialized?(this._connected?this.CONNECTED:this.CONNECTING):(this._connected?this.DISCONNECTING:this.DISCONNECTED); - } - - this.init = function( /*String*/ root, - /*Object|null */ props, - /*Object|null */ bargs){ // return: dojo.Deferred - // summary: - // Initialize the cometd implementation of the Bayeux protocol - // description: - // Initialize the cometd implementation of the Bayeux protocol by - // sending a handshake message. The cometd state will be changed to CONNECTING - // until a handshake response is received and the first successful connect message - // has returned. - // The protocol state changes may be monitored - // by subscribing to the dojo topic "/cometd/meta" where events are - // published in the form {cometd:this,action:"handshake",successful:true,state:this.state()} - // root: - // The URL of the cometd server. If the root is absolute, the host - // is examined to determine if xd transport is needed. Otherwise the - // same domain is assumed. - // props: - // An optional object that is used as the basis of the handshake message - // bargs: - // An optional object of bind args mixed in with the send of the handshake - // example: - // | dojox.cometd.init("/cometd"); - // | dojox.cometd.init("http://xdHost/cometd",{ext:{user:"fred",pwd:"secret"}}); - - - // FIXME: if the root isn't from the same host, we should automatically - // try to select an XD-capable transport - props = props||{}; - // go ask the short bus server what we can support - props.version = this.version; - props.minimumVersion = this.minimumVersion; - props.channel = "/meta/handshake"; - props.id = ""+this.messageId++; - - this.url = root||djConfig["cometdRoot"]; - if(!this.url){ - console.debug("no cometd root specified in djConfig and no root passed"); - return null; - } - - // Are we x-domain? borrowed from dojo.uri.Uri in lieu of fixed host and port properties - var regexp = "^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$"; - var parts = (""+window.location).match(new RegExp(regexp)); - if(parts[4]){ - var tmp = parts[4].split(":"); - var thisHost = tmp[0]; - var thisPort = tmp[1]||"80"; // FIXME: match 443 - - parts = this.url.match(new RegExp(regexp)); - if(parts[4]){ - tmp = parts[4].split(":"); - var urlHost = tmp[0]; - var urlPort = tmp[1]||"80"; - this._isXD = ((urlHost != thisHost)||(urlPort != thisPort)); - } - } - - if(!this._isXD){ - if(props.ext){ - if(props.ext["json-comment-filtered"]!==true && props.ext["json-comment-filtered"]!==false){ - props.ext["json-comment-filtered"] = true; - } - }else{ - props.ext = { "json-comment-filtered": true }; - } - } - - props=this._extendOut(props); - - var bindArgs = { - url: this.url, - handleAs: this.handleAs, - content: { "message": dojo.toJson([props]) }, - load: dojo.hitch(this,function(msg){ - this._finishInit(msg); - }), - error: dojo.hitch(this,function(e){ - console.debug("handshake error!:",e); - this._finishInit([{}]); - }) - }; - - if(bargs){ - dojo.mixin(bindArgs, bargs); - } - this._props=props; - for(var tname in this._subscriptions){ - for(var sub in this._subscriptions[tname]){ - if(this._subscriptions[tname][sub].topic){ - dojo.unsubscribe(this._subscriptions[tname][sub].topic); - } - } - } - this._messageQ = []; - this._subscriptions = []; - this._initialized=true; - this.batch=0; - this.startBatch(); - - var r; - // if xdomain, then we assume jsonp for handshake - if(this._isXD){ - bindArgs.callbackParamName="jsonp"; - r= dojo.io.script.get(bindArgs); - } else - r = dojo.xhrPost(bindArgs); - dojo.publish("/cometd/meta", [{cometd:this,action:"handshake",successful:true,state:this.state()}]); - return r; - } - - - this.publish = function(/*String*/channel, /*Object */data, /*Object|null */properties){ - // summary: - // publishes the passed message to the cometd server for delivery - // on the specified topic - // channel: - // the destination channel for the message - // data: - // a JSON object containing the message "payload" - // properties: - // Optional. Other meta-data to be mixed into the top-level of the - // message - var message = { - data: data, - channel: channel - }; - if(properties){ - dojo.mixin(message, properties); - } - this._sendMessage(message); - } - - - this.subscribe = function( /*String */ channel, - /*Object */ objOrFunc, - /*String */ funcName){ // return: dojo.Deferred - // summary: - // inform the server of this client's interest in channel - // channel: - // name of the cometd channel to subscribe to - // objOrFunc: - // an object scope for funcName or the name or reference to a - // function to be called when messages are delivered to the - // channel - // funcName: - // the second half of the objOrFunc/funcName pair for identifying - // a callback function to notifiy upon channel message delivery - - if(objOrFunc){ - var tname = "/cometd"+channel; - var subs=this._subscriptions[tname]; - if(!subs || subs.length==0){ - subs=[]; - this._sendMessage({ - channel: "/meta/subscribe", - subscription: channel - }); - - var _ds = this._deferredSubscribes; - _ds[channel] = new dojo.Deferred(); - if(_ds[channel]){ - _ds[channel].cancel(); - delete _ds[channel]; - } - } - - for (var i in subs){ - if (subs[i].objOrFunc===objOrFunc&&(!subs[i].funcName&&!funcName||subs[i].funcName==funcName)) - return null; - } - - var topic = dojo.subscribe(tname, objOrFunc, funcName); - subs.push({ - topic: topic, - objOrFunc: objOrFunc, - funcName: funcName - }); - this._subscriptions[tname] =subs; - } - return this._deferredSubscribes[channel]; - } - - - - this.unsubscribe = function( /*string*/ channel, - /*object|null*/ objOrFunc, - /*string|null*/ funcName){ - // summary: - // inform the server of this client's disinterest in channel - // channel: - // name of the cometd channel to unsubscribe from - // objOrFunc: - // an object scope for funcName or the name or reference to a - // function to be called when messages are delivered to the - // channel. If null then all subscribers to the channel are unsubscribed. - // funcName: - // the second half of the objOrFunc/funcName pair for identifying - // a callback function to notifiy upon channel message delivery - - var tname = "/cometd"+channel; - var subs=this._subscriptions[tname]; - if(!subs || subs.length==0){ - return null; - } - - var s=0; - for(var i in subs){ - var sb=subs[i]; - if( (!objOrFunc) || - ( - sb.objOrFunc===objOrFunc && - (!sb.funcName && !funcName || sb.funcName==funcName) - ) - ){ - dojo.unsubscribe(subs[i].topic); - delete subs[i]; - }else{ - s++; - } - } - - if(s==0){ - delete this._subscriptions[tname]; - this._sendMessage({ - channel: "/meta/unsubscribe", - subscription: channel - }); - this._deferredUnsubscribes[channel] = new dojo.Deferred(); - if (this._deferredSubscribes[channel]){ - this._deferredSubscribes[channel].cancel(); - delete this._deferredSubscribes[channel]; - } - } - return this._deferredUnsubscribes[channel]; - } - - - this.disconnect = function(){ - // summary: - // Disconnect from the server. - // description: - // Disconnect from the server by sending a disconnect message - // example: - // | dojox.cometd.disconnect(); - - for(var tname in this._subscriptions){ - for(var sub in this._subscriptions[tname]){ - if(this._subscriptions[tname][sub].topic){ - dojo.unsubscribe(this._subscriptions[tname][sub].topic); - } - } - } - this._subscriptions = []; - this._messageQ = []; - if(this._initialized && this.currentTransport){ - this._initialized=false; - this.currentTransport.disconnect(); - } - if(!this._polling) { - this._connected=false; - dojo.publish("/cometd/meta", [{cometd:this,action:"connect",successful:false,state:this.state()}]); - } - this._initialized=false; - dojo.publish("/cometd/meta", [{cometd:this,action:"disconnect",successful:true,state:this.state()}]); - } - - - // public extension points - - this.subscribed = function( /*String*/channel, /*Object*/message){ } - - this.unsubscribed = function(/*String*/channel, /*Object*/message){ } - - - // private methods (TODO name all with leading _) - - this.tunnelInit = function(childLocation, childDomain){ - // placeholder - replaced by _finishInit - } - - this.tunnelCollapse = function(){ - // placeholder - replaced by _finishInit - } - - this._backoff = function(){ - if(!this._advice || !this._advice.interval){ - this._advice={reconnect:"retry",interval:0}; // TODO Is this good advice? - } - if(this._advice.interval<this._maxInterval){ - this._advice.interval+=this._backoffInterval; - } - } - - this._finishInit = function(data){ - // summary: - // Handle the handshake return from the server and initialize - // connection if all is OK - data = data[0]; - this.handshakeReturn = data; - - // remember any advice - if(data["advice"]){ - this._advice = data.advice; - } - - var successful=data.successful?data.successful:false; - - // check version - if(data.version < this.minimumVersion){ - console.debug("cometd protocol version mismatch. We wanted", this.minimumVersion, "but got", data.version); - successful=false; - this._advice.reconnect="none"; - } - - // If all OK - if(successful){ - // pick a transport - this.currentTransport = this.connectionTypes.match( - data.supportedConnectionTypes, - data.version, - this._isXD - ); - // initialize the transport - this.currentTransport._cometd = this; - this.currentTransport.version = data.version; - this.clientId = data.clientId; - this.tunnelInit = dojo.hitch(this.currentTransport, "tunnelInit"); - this.tunnelCollapse = dojo.hitch(this.currentTransport, "tunnelCollapse"); - this.currentTransport.startup(data); - } - - dojo.publish("/cometd/meta", [{cometd:this,action:"handshook",successful:successful,state:this.state()}]); - - // If there is a problem - if(!successful){ - console.debug("cometd init failed"); - this._backoff(); - // follow advice - if(this._advice && this._advice["reconnect"]=="none"){ - console.debug("cometd reconnect: none"); - }else if(this._advice && this._advice["interval"] && this._advice.interval>0 ){ - setTimeout( - dojo.hitch(this, function(){ this.init(cometd.url,this._props); }), - this._advice.interval - ); - }else{ - this.init(this.url,this._props); - } - } - } - - this._extendIn = function(message){ - // Handle extensions for inbound messages - var m=message; - dojo.forEach(dojox.cometd._extendInList, function(f){ - var n=f(m); - if(n)m=n; - }); - return m; - } - - this._extendOut= function(message){ - // Handle extensions for inbound messages - var m=message; - dojo.forEach(dojox.cometd._extendOutList, function(f){ - var n=f(m); - if(n)m=n; - }); - return m; - } - - - this.deliver = function(messages){ - dojo.forEach(messages, this._deliver, this); - return messages; - } - - this._deliver = function(message){ - // dipatch events along the specified path - - message=this._extendIn(message); - - if(!message["channel"]){ - if(message["success"] !== true){ - console.debug("cometd error: no channel for message!", message); - return; - } - } - this.lastMessage = message; - - if(message.advice){ - this._advice = message.advice; // TODO maybe merge? - } - - // check to see if we got a /meta channel message that we care about - var deferred=null; - if( (message["channel"]) && - (message.channel.length > 5)&& - (message.channel.substr(0, 5) == "/meta")){ - // check for various meta topic actions that we need to respond to - switch(message.channel){ - case "/meta/connect": - if(message.successful && !this._connected){ - this._connected = this._initialized; - this.endBatch(); - } else if(!this._initialized){ - this._connected = false; // finish disconnect - } - dojo.publish("/cometd/meta",[{cometd:this,action:"connect",successful:message.successful,state:this.state()}]); - break; - case "/meta/subscribe": - deferred = this._deferredSubscribes[message.subscription]; - if(!message.successful){ - if(deferred){ - deferred.errback(new Error(message.error)); - } - return; - } - dojox.cometd.subscribed(message.subscription, message); - if(deferred){ - deferred.callback(true); - } - break; - case "/meta/unsubscribe": - deferred = this._deferredUnsubscribes[message.subscription]; - if(!message.successful){ - if(deferred){ - deferred.errback(new Error(message.error)); - } - return; - } - this.unsubscribed(message.subscription, message); - if(deferred){ - deferred.callback(true); - } - break; - } - } - - // send the message down for processing by the transport - this.currentTransport.deliver(message); - - if(message.data){ - // dispatch the message to any locally subscribed listeners - try { - var tname = "/cometd"+message.channel; - dojo.publish(tname, [ message ]); - }catch(e){ - console.debug(e); - } - } - } - - this._sendMessage = function(/* object */ message){ - if(this.currentTransport && this._connected && this.batch==0){ - return this.currentTransport.sendMessages([message]); - } - else{ - this._messageQ.push(message); - return null; - } - } - - this.startBatch = function(){ - this.batch++; - } - - this.endBatch = function(){ - if(--this.batch <= 0 && this.currentTransport && this._connected){ - this.batch=0; - - var messages=this._messageQ; - this._messageQ=[]; - if(messages.length>0){ - this.currentTransport.sendMessages(messages); - } - } - } - - this._onUnload = function(){ - // make this the last of the onUnload method - dojo.addOnUnload(dojox.cometd,"disconnect"); - } -} - -/* -transport objects MUST expose the following methods: - - check - - startup - - sendMessages - - deliver - - disconnect -optional, standard but transport dependent methods are: - - tunnelCollapse - - tunnelInit - -Transports SHOULD be namespaced under the cometd object and transports MUST -register themselves with cometd.connectionTypes - -here's a stub transport defintion: - -cometd.blahTransport = new function(){ - this._connectionType="my-polling"; - this._cometd=null; - this.lastTimestamp = null; - - this.check = function(types, version, xdomain){ - // summary: - // determines whether or not this transport is suitable given a - // list of transport types that the server supports - return dojo.lang.inArray(types, "blah"); - } - - this.startup = function(){ - if(dojox.cometd._polling){ return; } - // FIXME: fill in startup routine here - dojox.cometd._polling = true; - } - - this.sendMessages = function(message){ - // FIXME: fill in message array sending logic - } - - this.deliver = function(message){ - } - - this.disconnect = function(){ - } -} -cometd.connectionTypes.register("blah", cometd.blahTransport.check, cometd.blahTransport); -*/ - -dojox.cometd.longPollTransport = new function(){ - this._connectionType="long-polling"; - this._cometd=null; - - this.check = function(types, version, xdomain){ - return ((!xdomain)&&(dojo.indexOf(types, "long-polling") >= 0)); - } - - this.tunnelInit = function(){ - var message = { - channel: "/meta/connect", - clientId: this._cometd.clientId, - connectionType: this._connectionType, - id: ""+this._cometd.messageId++ - }; - message=this._cometd._extendOut(message); - this.openTunnelWith({message: dojo.toJson([message])}); - } - - this.tunnelCollapse = function(){ - // TODO handle transport specific advice - - if(!this._cometd._initialized){ return; } - - if(this._cometd._advice){ - if(this._cometd._advice["reconnect"]=="none"){ - return; - } - if( (this._cometd._advice["interval"])&& - (this._cometd._advice.interval>0) ){ - setTimeout(dojo.hitch(this,function(){ this._connect(); }),this._cometd._advice.interval); - }else{ - this._connect(); - } - }else{ - this._connect(); - } - } - - this._connect = function(){ - if(!this._cometd._initialized){ return; } - if(this._cometd._polling) { - console.debug("wait for poll to complete or fail"); - return; - } - - if( (this._cometd._advice) && - (this._cometd._advice["reconnect"]=="handshake") - ){ - this._cometd._connected=false; - this._initialized = false; - this._cometd.init(this._cometd.url,this._cometd._props); - }else if(this._cometd._connected){ - var message={ - channel: "/meta/connect", - connectionType: this._connectionType, - clientId: this._cometd.clientId, - id: ""+this._cometd.messageId++ - }; - message=this._cometd._extendOut(message); - this.openTunnelWith({message: dojo.toJson([message])}); - } - } - - this.deliver = function(message){ - // Nothing to do - } - - this.openTunnelWith = function(content, url){ - this._cometd._polling = true; - var d = dojo.xhrPost({ - url: (url||this._cometd.url), - content: content, - handleAs: this._cometd.handleAs, - load: dojo.hitch(this, function(data){ - this._cometd._polling = false; - this._cometd.deliver(data); - this.tunnelCollapse(); - }), - error: dojo.hitch(this, function(err){ - this._cometd._polling = false; - console.debug("tunnel opening failed:", err); - dojo.publish("/cometd/meta", [{cometd:this._cometd,action:"connect",successful:false,state:this._cometd.state()}]); - this._cometd._backoff(); - this.tunnelCollapse(); - }) - }); - } - - this.sendMessages = function(messages){ - for(var i=0; i<messages.length; i++){ - messages[i].clientId = this._cometd.clientId; - messages[i].id = ""+this._cometd.messageId++; - messages[i]=this._cometd._extendOut(messages[i]); - } - return dojo.xhrPost({ - url: this._cometd.url||djConfig["cometdRoot"], - handleAs: this._cometd.handleAs, - load: dojo.hitch(this._cometd, "deliver"), - content: { - message: dojo.toJson(messages) - } - }); - } - - this.startup = function(handshakeData){ - if(this._cometd._connected){ return; } - this.tunnelInit(); - } - - this.disconnect = function(){ - var message={ - channel: "/meta/disconnect", - clientId: this._cometd.clientId, - id: ""+this._cometd.messageId++ - }; - message=this._cometd._extendOut(message); - dojo.xhrPost({ - url: this._cometd.url||djConfig["cometdRoot"], - handleAs: this._cometd.handleAs, - content: { - message: dojo.toJson([message]) - } - }); - } -} - -dojox.cometd.callbackPollTransport = new function(){ - this._connectionType = "callback-polling"; - this._cometd = null; - - this.check = function(types, version, xdomain){ - // we handle x-domain! - return (dojo.indexOf(types, "callback-polling") >= 0); - } - - this.tunnelInit = function(){ - var message = { - channel: "/meta/connect", - clientId: this._cometd.clientId, - connectionType: this._connectionType, - id: ""+this._cometd.messageId++ - }; - message = this._cometd._extendOut(message); - this.openTunnelWith({ - message: dojo.toJson([message]) - }); - } - - this.tunnelCollapse = dojox.cometd.longPollTransport.tunnelCollapse; - this._connect = dojox.cometd.longPollTransport._connect; - this.deliver = dojox.cometd.longPollTransport.deliver; - - this.openTunnelWith = function(content, url){ - this._cometd._polling = true; - dojo.io.script.get({ - load: dojo.hitch(this, function(data){ - this._cometd._polling = false; - this._cometd.deliver(data); - this.tunnelCollapse(); - }), - error: dojo.hitch(this, function(err){ - this._cometd._polling = false; - console.debug("tunnel opening failed:", err); - dojo.publish("/cometd/meta", [{cometd:this._cometd,action:"connect",successful:false,state:this._cometd.state()}]); - this._cometd._backoff(); - this.tunnelCollapse(); - }), - url: (url||this._cometd.url), - content: content, - callbackParamName: "jsonp" - }); - } - - this.sendMessages = function(/*array*/ messages){ - for(var i=0; i<messages.length; i++){ - messages[i].clientId = this._cometd.clientId; - messages[i].id = ""+this._cometd.messageId++; - messages[i]=this._cometd._extendOut(messages[i]); - } - var bindArgs = { - url: this._cometd.url||djConfig["cometdRoot"], - load: dojo.hitch(this._cometd, "deliver"), - callbackParamName: "jsonp", - content: { message: dojo.toJson( messages ) } - }; - return dojo.io.script.get(bindArgs); - } - - this.startup = function(handshakeData){ - if(this._cometd._connected){ return; } - this.tunnelInit(); - } - - this.disconnect = dojox.cometd.longPollTransport.disconnect; - - this.disconnect = function(){ - var message={ - channel:"/meta/disconnect", - clientId:this._cometd.clientId, - id:""+this._cometd.messageId++ - }; - message=this._cometd._extendOut(message); - dojo.io.script.get({ - url: this._cometd.url||djConfig["cometdRoot"], - callbackParamName: "jsonp", - content: { - message: dojo.toJson([message]) - } - }); - } -} -dojox.cometd.connectionTypes.register("long-polling", dojox.cometd.longPollTransport.check, dojox.cometd.longPollTransport); -dojox.cometd.connectionTypes.register("callback-polling", dojox.cometd.callbackPollTransport.check, dojox.cometd.callbackPollTransport); - -dojo.addOnUnload(dojox.cometd,"_onUnload"); - -} - -if(!dojo._hasResource["dojox.cometd"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code. -dojo._hasResource["dojox.cometd"] = true; -// stub loader for the cometd module since no implementation code is allowed to live in top-level files -dojo.provide("dojox.cometd"); - - -} - - -}});
Added: camel/trunk/components/camel-cometd/src/test/resources/webapp/dojo/dojox/cometd/ack.js URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cometd/src/test/resources/webapp/dojo/dojox/cometd/ack.js?rev=1087994&view=auto ============================================================================== --- camel/trunk/components/camel-cometd/src/test/resources/webapp/dojo/dojox/cometd/ack.js (added) +++ camel/trunk/components/camel-cometd/src/test/resources/webapp/dojo/dojox/cometd/ack.js Sat Apr 2 10:31:37 2011 @@ -0,0 +1,11 @@ +/** + * Dual licensed under the Apache License 2.0 and the MIT license. + * $Revision$ $Date: 2009-05-10 13:06:45 +1000 (Sun, 10 May 2009) $ + */ + +dojo.provide("dojox.cometd.ack"); +dojo.require("dojox.cometd"); + +dojo.require("org.cometd.AckExtension"); + +dojox.cometd.registerExtension('ack', new org.cometd.AckExtension()); \ No newline at end of file Propchange: camel/trunk/components/camel-cometd/src/test/resources/webapp/dojo/dojox/cometd/ack.js ------------------------------------------------------------------------------ svn:eol-style = native Added: camel/trunk/components/camel-cometd/src/test/resources/webapp/dojo/dojox/cometd/reload.js URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cometd/src/test/resources/webapp/dojo/dojox/cometd/reload.js?rev=1087994&view=auto ============================================================================== --- camel/trunk/components/camel-cometd/src/test/resources/webapp/dojo/dojox/cometd/reload.js (added) +++ camel/trunk/components/camel-cometd/src/test/resources/webapp/dojo/dojox/cometd/reload.js Sat Apr 2 10:31:37 2011 @@ -0,0 +1,18 @@ +/** + * Dual licensed under the Apache License 2.0 and the MIT license. + * $Revision$ $Date: 2009-05-10 13:06:45 +1000 (Sun, 10 May 2009) $ + */ + +dojo.provide("dojox.cometd.reload"); +dojo.require("dojox.cometd"); + +dojo.require("dojo.cookie"); +dojo.require("org.cometd.ReloadExtension"); + +// Remap cometd COOKIE functions to dojo cookie functions +org.cometd.COOKIE.set = dojo.cookie; +org.cometd.COOKIE.get = dojo.cookie; + +dojox.cometd.registerExtension('reload', new org.cometd.ReloadExtension()); + + Propchange: camel/trunk/components/camel-cometd/src/test/resources/webapp/dojo/dojox/cometd/reload.js ------------------------------------------------------------------------------ svn:eol-style = native Modified: camel/trunk/components/camel-cometd/src/test/resources/webapp/dojo/dojox/cometd/timestamp.js URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cometd/src/test/resources/webapp/dojo/dojox/cometd/timestamp.js?rev=1087994&r1=1087993&r2=1087994&view=diff ============================================================================== --- camel/trunk/components/camel-cometd/src/test/resources/webapp/dojo/dojox/cometd/timestamp.js (original) +++ camel/trunk/components/camel-cometd/src/test/resources/webapp/dojo/dojox/cometd/timestamp.js Sat Apr 2 10:31:37 2011 @@ -1,9 +1,10 @@ -if(!dojo._hasResource["dojox.cometd.timestamp"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code. -dojo._hasResource["dojox.cometd.timestamp"] = true; +/** + * Dual licensed under the Apache License 2.0 and the MIT license. + * $Revision$ $Date: 2009-05-10 13:06:45 +1000 (Sun, 10 May 2009) $ + */ + dojo.provide("dojox.cometd.timestamp"); dojo.require("dojox.cometd"); +dojo.require("org.cometd.TimeStampExtension"); -// A cometd extension that adds a timestamp to every message -dojox.cometd._extendOutList.push(function(msg){msg.timestamp=new Date().toUTCString();return msg}); - -} +dojox.cometd.registerExtension('timestamp', new org.cometd.TimeStampExtension()); \ No newline at end of file Modified: camel/trunk/components/camel-cometd/src/test/resources/webapp/dojo/dojox/cometd/timesync.js URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cometd/src/test/resources/webapp/dojo/dojox/cometd/timesync.js?rev=1087994&r1=1087993&r2=1087994&view=diff ============================================================================== --- camel/trunk/components/camel-cometd/src/test/resources/webapp/dojo/dojox/cometd/timesync.js (original) +++ camel/trunk/components/camel-cometd/src/test/resources/webapp/dojo/dojox/cometd/timesync.js Sat Apr 2 10:31:37 2011 @@ -1,39 +1,10 @@ +/** + * Dual licensed under the Apache License 2.0 and the MIT license. + * $Revision$ $Date: 2009-05-10 13:06:45 +1000 (Sun, 10 May 2009) $ + */ dojo.provide("dojox.cometd.timesync"); dojo.require("dojox.cometd"); +dojo.require("org.cometd.TimeSyncExtension"); -dojox.cometd.timesync= new function(){ - - this._lastOut=new Date().getTime(); - this._lastIn=this._lastOut; - this._lastInterval=-1; - this._lastPoll=-1; - - this._in=function(msg){ - var channel=msg.channel; - if (channel=="/meta/handshake" || channel=="/meta/connect"){ - this._lastIn=new Date().getTime(); - this._lastPoll=this._lastIn-this._lastOut; - } - return msg; - } - - this._out=function(msg){ - var channel=msg.channel; - if (channel=="/meta/handshake" || channel=="/meta/connect"){ - this._lastOut=new Date().getTime(); - this._lastInterval=(this._lastOut-this._lastIn); - - if (!msg.ext) - msg.ext={}; - msg.ext.timesync={ - ts: this._lastOut, - i: this._lastInterval - }; - - } - return msg; - } -}; - -dojox.cometd._extendInList.push(dojo.hitch(dojox.cometd.timesync,"_in")); -dojox.cometd._extendOutList.push(dojo.hitch(dojox.cometd.timesync,"_out")); \ No newline at end of file +dojox.cometd.timesync=new org.cometd.TimeSyncExtension(); +dojox.cometd.registerExtension('timesync', dojox.cometd.timesync); \ No newline at end of file