/**
 * domhandler.js - WebDAV Client dom handler.
 *
 * This is a xml dom parse handler.
 *
 * @license Copyright 2011 The xhrdavclient library authors.
 * All rights reserved.
 */

goog.provide('xhrdav.parser.DomHandler');
goog.require('goog.Disposable');

/**
 * XML Dom handler
 *
 * @constructor
 * @extends {goog.Disposable}
 */
xhrdav.parser.DomHandler = function() {
  /**
   * @private
   * @type {Object}
   */
  this.resources_ = null;
};
goog.inherits(xhrdav.parser.DomHandler, goog.Disposable);

/** @override */
xhrdav.parser.DomHandler.prototype.disposeInternal = function() {
  goog.base(this, 'disposeInternal');
  this.resources_ = null;
};

/**
 * Handle start document
 */
xhrdav.parser.DomHandler.prototype.startDocument = function() {
  this.resources_ = {};
};

/**
 * Handle end document
 */
xhrdav.parser.DomHandler.prototype.endDocument = function() {};

/**
 * Execute parse Document
 *
 * @param {xhrdav.DomParser} parser Xml dom parser object.
 * @param {Object} xml  parsing xml.
 * @see xhrdav.DomParser
 */
xhrdav.parser.DomHandler.prototype.execute = function(parser, xml) {
  this.resources_ = parser.parseDocument(xml);
};

/**
 * Get object
 *
 * @return {Object} converted response xml to object.
 */
xhrdav.parser.DomHandler.prototype.getObject = function() {
  return this.resources_;
};

/* Entry Point for closure compiler */
goog.exportSymbol('xhrdav.parser.DomHandler', xhrdav.parser.DomHandler);
goog.exportProperty(xhrdav.parser.DomHandler.prototype, 'startDocument',
  xhrdav.parser.DomHandler.prototype.startDocument);
goog.exportProperty(xhrdav.parser.DomHandler.prototype, 'endDocument',
  xhrdav.parser.DomHandler.prototype.endDocument);
goog.exportProperty(xhrdav.parser.DomHandler.prototype, 'execute',
  xhrdav.parser.DomHandler.prototype.execute);
goog.exportProperty(xhrdav.parser.DomHandler.prototype, 'getObject',
  xhrdav.parser.DomHandler.prototype.getObject);