/** * error.js - xhrdavclient error object * * This is a Error object for Request and WebDAV resources. * * @license Copyright 2011 The xhrdavclient library authors. * All rights reserved. */ goog.provide('xhrdav.Errors'); goog.require('goog.array'); goog.require('goog.json'); goog.require('goog.object'); /** * xhrdavclient error object * * Structure: Json/Hash repr * {request: {message: 'Forbidden', path: '/mydav/foo/'}, * props: [ * {message: 'Not Found', path: '/mydav/foo/a.png'}, * {message: 'Locked', path: '/mydav/foo/b.txt'} * ]} * * @constructor */ xhrdav.Errors = function() { /** @type {Object} */ this.request = {}; /** @type {Array.<Object>} */ this.props = []; }; /** * Has request error? * * @return {boolean} has request error. */ xhrdav.Errors.prototype.hasRequest = function() { return !goog.object.isEmpty(this.request); }; /** * Has property errors?(Multi-status response content, etc.) * * @return {boolean} has request error. */ xhrdav.Errors.prototype.hasProps = function() { return !goog.array.isEmpty(this.props); }; /** * Serialize errors object. * * @param {xhrdav.Errors} errs Errors object. * @return {Object} serialized object(associated array). */ xhrdav.Errors.serialize = function(errs) { // return {request: errs.request(), props: errs.props()}; return goog.json.parse(goog.json.serialize(errs)); }; /** * Serialize errors object. * * @return {Object} serialized object(associated array). */ xhrdav.Errors.prototype.serialize = function() { // return xhrdav.Errors.serialize(this); return goog.json.parse(goog.json.serialize(this)); }; /** * Clear all errors. */ xhrdav.Errors.prototype.clear = function() { goog.object.clear(this.request); goog.array.clear(this.props); }; /** * Set request error. * * Structure: * {status: 403, * message: 'Forbidden', path: '/mydav/foo/'} * * @param {Object=} requestErr Request error object(associate array). */ xhrdav.Errors.prototype.setRequest = function(requestErr) { if (goog.object.getCount(requestErr) > 0) this.request = requestErr; }; /** * Add property error. * * Structure: * [{status: 404, message: 'Not Found', path: '/mydav/foo/a.png'}, * {status: 423, message: 'Locked', path: '/mydav/foo/b.txt'}] * * @param {Object} propsErr property error. */ xhrdav.Errors.prototype.addProps = function(propsErr) { if (goog.object.getCount(propsErr) > 0) { goog.array.extend(this.props, propsErr); } }; /* Entry point for closure compiler */ goog.exportSymbol('xhrdav.Errors', xhrdav.Errors); goog.exportProperty(xhrdav.Errors.prototype, 'hasRequest', xhrdav.Errors.prototype.hasRequest); goog.exportProperty(xhrdav.Errors.prototype, 'hasProps', xhrdav.Errors.prototype.hasProps); goog.exportSymbol('xhrdav.Errors.serialize', xhrdav.Errors.serialize); goog.exportProperty(xhrdav.Errors.prototype, 'serialize', xhrdav.Errors.prototype.serialize); goog.exportProperty(xhrdav.Errors.prototype, 'clear', xhrdav.Errors.prototype.clear); goog.exportProperty(xhrdav.Errors.prototype, 'setRequest', xhrdav.Errors.prototype.setRequest); goog.exportProperty(xhrdav.Errors.prototype, 'addProps', xhrdav.Errors.prototype.addProps);