Ext.namespace('Zarafa.core.data'); /** * @class Zarafa.core.data.AbstractResponseHandler * @extends Object * * The main interface used by the {@link Zarafa.core.ResponseRouter ResponseRouter} * for handling responses recieved by the PHP-side. * * This class is used as 'scoped' object, containing all information for handling * a specific server-response or server-notification. * * The {@link #start} function will be called directly before the * {@link Zarafa.core.ResponseRouter ResponseRouter} starts processing * the Response from the server which is intended for this handler. * * After this function the {@link #handle} function will be invoked * for each object inside the responds. Subclasses should not overwrite * this function directly, instead they can implement the specific handles * they need. Each {@link Zarafa.core.Actions} action will invoke the handler * with the same name but with 'do' prefixed. For example, the action * {@link Zarafa.core.Actions#item} will cause the function 'doItem' to be * invoked. Likewise, the action {@link Zarafa.core.Actions#open} will cause * the function 'doOpen' to be invoked. * * Finally the {@link #done} function is called to indicate the entire * response has been processed. The handler can then complete the * transaction by updating the {@link Ext.data.Store}. */ Zarafa.core.data.AbstractResponseHandler = Ext.extend(Object, { /** * @constructor * @param {Object} config Configuration object */ constructor: function(config) { Ext.apply(this, config); }, /** * The handler which is invoked when no valid response was returned * for the Request. This could be a HTTP-404 error, or the PHP-side returned * an invalid object which could not be parsed by a {@link Ext.data.DataReader DataReader}. * @param {Object} responseObject The raw browser response object (e.g.: XMLHttpRequest) * @param {Object} args (optional) A Javascript error object if the response could not * have been parsed by a {@link Ext.data.DataReader DataReader}. */ responseFailure : Ext.emptyFn, /** * The main handler to begin a Response processing transaction. * @param {String} moduleName The name of the PHP module from which this response originated. * @param {String} moduleId The unique identifier for the PHP response. * @param {Object} data The entire response object which will be processed during this transaction. * @param {Number} timestamp The {@link Date#getTime timestamp} on which the response was received * @return {Boolean} False when the given data object cannot be handled by this response handler, * and the transaction must be canceled. */ start : Ext.emptyFn, /** * The handler for handling the given command from a Response. * @param {Zarafa.core.Actions} action The action which must be executed. * @param {Object} data The response object belonging to the given command. * @return {Boolean} False when action could not be handled successfully. This will * not cancel the transaction itself, but rather causes the 'success' argument for the * {@link #done} function to be false. */ handle : function(action, data) { var handler = this['do' + Ext.util.Format.capitalize(action)]; if (Ext.isFunction(handler)) { return handler.call(this, data); } }, /** * The main handler to complete a Response processing transaction. * @param {Boolean} success True if no errors were returned from the PHP-side. */ done : Ext.emptyFn });