+<!DOCTYPE html>
<html>
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>The source code</title>
- <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
- <script type="text/javascript" src="../resources/prettify/prettify.js"></script>
+ <link href="../prettify/prettify.css" type="text/css" rel="stylesheet" />
+ <script type="text/javascript" src="../prettify/prettify.js"></script>
+ <style type="text/css">
+ .highlight { display: block; background-color: #ddd; }
+ </style>
+ <script type="text/javascript">
+ function highlight() {
+ document.getElementById(location.hash.replace(/#/, "")).className = "highlight";
+ }
+ </script>
</head>
-<body onload="prettyPrint();">
- <pre class="prettyprint lang-js">/*!
- * Ext JS Library 3.3.1
- * Copyright(c) 2006-2010 Sencha Inc.
- * licensing@sencha.com
- * http://www.sencha.com/license
- */
-<div id="cls-Ext.direct.JsonProvider"></div>/**
- * @class Ext.direct.JsonProvider
+<body onload="prettyPrint(); highlight();">
+ <pre class="prettyprint lang-js"><span id='Ext-direct-JsonProvider'>/**
+</span> * @class Ext.direct.JsonProvider
* @extends Ext.direct.Provider
+
+A base provider for communicating using JSON. This is an abstract class
+and should not be instanced directly.
+
+ * @markdown
+ * @abstract
*/
-Ext.direct.JsonProvider = Ext.extend(Ext.direct.Provider, {
- parseResponse: function(xhr){
- if(!Ext.isEmpty(xhr.responseText)){
- if(typeof xhr.responseText == 'object'){
- return xhr.responseText;
+
+Ext.define('Ext.direct.JsonProvider', {
+
+ /* Begin Definitions */
+
+ extend: 'Ext.direct.Provider',
+
+ alias: 'direct.jsonprovider',
+
+ uses: ['Ext.direct.ExceptionEvent'],
+
+ /* End Definitions */
+
+<span id='Ext-direct-JsonProvider-method-parseResponse'> /**
+</span> * Parse the JSON response
+ * @private
+ * @param {Object} response The XHR response object
+ * @return {Object} The data in the response.
+ */
+ parseResponse: function(response){
+ if (!Ext.isEmpty(response.responseText)) {
+ if (Ext.isObject(response.responseText)) {
+ return response.responseText;
}
- return Ext.decode(xhr.responseText);
+ return Ext.decode(response.responseText);
}
return null;
},
- getEvents: function(xhr){
- var data = null;
+<span id='Ext-direct-JsonProvider-method-createEvents'> /**
+</span> * Creates a set of events based on the XHR response
+ * @private
+ * @param {Object} response The XHR response
+ * @return {Array} An array of Ext.direct.Event
+ */
+ createEvents: function(response){
+ var data = null,
+ events = [],
+ event,
+ i = 0,
+ len;
+
try{
- data = this.parseResponse(xhr);
- }catch(e){
- var event = new Ext.Direct.ExceptionEvent({
+ data = this.parseResponse(response);
+ } catch(e) {
+ event = Ext.create('Ext.direct.ExceptionEvent', {
data: e,
- xhr: xhr,
- code: Ext.Direct.exceptions.PARSE,
+ xhr: response,
+ code: Ext.direct.Manager.self.exceptions.PARSE,
message: 'Error parsing json response: \n\n ' + data
});
return [event];
}
- var events = [];
- if(Ext.isArray(data)){
- for(var i = 0, len = data.length; i < len; i++){
- events.push(Ext.Direct.createEvent(data[i]));
+
+ if (Ext.isArray(data)) {
+ for (len = data.length; i < len; ++i) {
+ events.push(this.createEvent(data[i]));
}
- }else{
- events.push(Ext.Direct.createEvent(data));
+ } else {
+ events.push(this.createEvent(data));
}
return events;
+ },
+
+<span id='Ext-direct-JsonProvider-method-createEvent'> /**
+</span> * Create an event from a response object
+ * @param {Object} response The XHR response object
+ * @return {Ext.direct.Event} The event
+ */
+ createEvent: function(response){
+ return Ext.create('direct.' + response.type, response);
}
-});</pre>
+});</pre>
</body>
-</html>
\ No newline at end of file
+</html>