diff options
Diffstat (limited to 'contexts/data/lib/closure-library/closure/goog/datasource/jsondatasource.js')
-rw-r--r-- | contexts/data/lib/closure-library/closure/goog/datasource/jsondatasource.js | 148 |
1 files changed, 0 insertions, 148 deletions
diff --git a/contexts/data/lib/closure-library/closure/goog/datasource/jsondatasource.js b/contexts/data/lib/closure-library/closure/goog/datasource/jsondatasource.js deleted file mode 100644 index 8e80000..0000000 --- a/contexts/data/lib/closure-library/closure/goog/datasource/jsondatasource.js +++ /dev/null @@ -1,148 +0,0 @@ -// Copyright 2006 The Closure Library Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS-IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/** - * @fileoverview Implementation of DataNode for wrapping JSON data. - * - */ - - -goog.provide('goog.ds.JsonDataSource'); - -goog.require('goog.Uri'); -goog.require('goog.dom'); -goog.require('goog.ds.DataManager'); -goog.require('goog.ds.JsDataSource'); -goog.require('goog.ds.LoadState'); -goog.require('goog.ds.logger'); - - - -/** - * Data source whose backing is a JSON-like service, in which - * retreiving the resource specified by URL with the additional parameter - * callback. The resource retreived is executable JavaScript that - * makes a call to the named function with a JavaScript object literal - * as the only parameter. - * - * Example URI could be: - * http://www.google.com/data/search?q=monkey&callback=mycb - * which might return the JS: - * mycb({searchresults: - * [{uri: 'http://www.monkey.com', title: 'Site About Monkeys'}]}); - * - * TODO(user): Evaluate using goog.net.Jsonp here. - * - * A URI of an empty string will mean that no request is made - * and the data source will be a data source with no child nodes - * - * @param {string|goog.Uri} uri URI for the request. - * @param {string} name Name of the datasource. - * @param {string=} opt_callbackParamName The parameter name that is used to - * specify the callback. Defaults to 'callback'. - * - * @extends {goog.ds.JsDataSource} - * @constructor - */ -goog.ds.JsonDataSource = function(uri, name, opt_callbackParamName) { - goog.ds.JsDataSource.call(this, null, name, null); - if (uri) { - this.uri_ = new goog.Uri(uri); - } else { - this.uri_ = null; - } - - /** - * This is the callback parameter name that is added to the uri. - * @type {string} - * @private - */ - this.callbackParamName_ = opt_callbackParamName || 'callback'; - -}; -goog.inherits(goog.ds.JsonDataSource, goog.ds.JsDataSource); - - -/** - * Default load state is NOT_LOADED - * @private - */ -goog.ds.JsonDataSource.prototype.loadState_ = goog.ds.LoadState.NOT_LOADED; - - -/** - * Map of all data sources, needed for callbacks - * Doesn't work unless dataSources is exported (not renamed) - */ -goog.ds.JsonDataSource['dataSources'] = {}; - - -/** - * Load or reload the backing data for this node. - * Fires the JsonDataSource - * @override - */ -goog.ds.JsonDataSource.prototype.load = function() { - if (this.uri_) { - // NOTE: "dataSources" is expose above by name so that it will not be - // renamed. It should therefore be accessed via array notation here so - // that it also doesn't get renamed and stops the compiler from complaining - goog.ds.JsonDataSource['dataSources'][this.dataName_] = this; - goog.ds.logger.info('Sending JS request for DataSource ' + - this.getDataName() + ' to ' + this.uri_); - - this.loadState_ = goog.ds.LoadState.LOADING; - - var uriToCall = new goog.Uri(this.uri_); - uriToCall.setParameterValue(this.callbackParamName_, - 'JsonReceive.' + this.dataName_); - - goog.global['JsonReceive'][this.dataName_] = - goog.bind(this.receiveData, this); - - var scriptEl = goog.dom.createDom('script', {'src': uriToCall}); - goog.dom.getElementsByTagNameAndClass('head')[0].appendChild(scriptEl); - } else { - this.root_ = {}; - this.loadState_ = goog.ds.LoadState.NOT_LOADED; - } -}; - - -/** - * Gets the state of the backing data for this node - * @return {goog.ds.LoadState} The state. - * @override - */ -goog.ds.JsonDataSource.prototype.getLoadState = function() { - return this.loadState_; -}; - - -/** - * Receives data from a Json request - * @param {Object} obj The JSON data. - */ -goog.ds.JsonDataSource.prototype.receiveData = function(obj) { - this.setRoot(obj); - this.loadState_ = goog.ds.LoadState.LOADED; - goog.ds.DataManager.getInstance().fireDataChange(this.getDataName()); -}; - - -/** -* Temp variable to hold callbacks -* until BUILD supports multiple externs.js files -*/ -goog.global['JsonReceive'] = {}; |