You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2011/04/02 12:31:38 UTC
svn commit: r1087994 [7/8] - in /camel/trunk/components/camel-cometd/src:
main/java/org/apache/camel/component/cometd/
test/java/org/apache/camel/component/cometd/ test/resources/webapp/
test/resources/webapp/dojo/dojo/ test/resources/webapp/dojo/dojo/...
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