All Downloads are FREE. Search and download functionalities are using the official Maven repository.

microsoft.exchange.webservices.data.ExecuteDiagnosticMethodResponse Maven / Gradle / Ivy

/**************************************************************************
 * copyright file="ExecuteDiagnosticMethodResponse.java" company="Microsoft"
 *     Copyright (c) Microsoft Corporation.  All rights reserved.
 * 
 * Defines the ExecuteDiagnosticMethodResponse.java.
 **************************************************************************/
package microsoft.exchange.webservices.data;

import java.util.Iterator;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.events.Attribute;
import javax.xml.stream.events.Namespace;
import javax.xml.stream.events.StartElement;
import javax.xml.stream.events.XMLEvent;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;


/**
 * Represents the response to a ExecuteDiagnosticMethod operation
 */
final class ExecuteDiagnosticMethodResponse extends ServiceResponse {


	/**
	 * Initializes a new instance of the ExecuteDiagnosticMethodResponse class.
	 * @param service The service
	 */
	protected ExecuteDiagnosticMethodResponse(ExchangeService service) {
		super();
		EwsUtilities.EwsAssert(service != null,
				"ExecuteDiagnosticMethodResponse.ctor",
		"service is null");
	}

	/**
	 * Reads response elements from XML.
	 * @throws Exception 
	 */
	@Override
	protected void readElementsFromXml(EwsServiceXmlReader reader) 
	throws Exception {
		reader.readStartElement(XmlNamespace.Messages, 
				XmlElementNames.ReturnValue);

		XMLEventReader returnValueReader = reader.getXmlReaderForNode();
		{
			this.returnValue = retriveDocument(returnValueReader);
		}

		reader.skipCurrentElement();
		reader.readEndElementIfNecessary(XmlNamespace.Messages, 
				XmlElementNames.ReturnValue);
	}


	/**
	 * 
	 * @param xmlEventReader
	 * @return document
	 * @throws ParserConfigurationException
	 */
	public Document retriveDocument(XMLEventReader xmlEventReader)
			throws ParserConfigurationException {
		DocumentBuilderFactory dbfInstance = DocumentBuilderFactory
				.newInstance();
		DocumentBuilder documentBuilder = dbfInstance.newDocumentBuilder();
		Document document = documentBuilder.newDocument();

		Element currentElement = document.getDocumentElement();

		while (xmlEventReader.hasNext()) {
			XMLEvent xmleve = (XMLEvent) xmlEventReader.next();

			if (xmleve.getEventType() == XMLNodeType.END_ELEMENT) {
				Node node = currentElement.getParentNode();
				if (node instanceof Document) {
					currentElement = ((Document) node).getDocumentElement();
				} else {
					currentElement = (Element) currentElement.getParentNode();
				}
			}

			if (xmleve.getEventType() == XMLNodeType.START_ELEMENT) {
				// startElement((StartElement) xmleve,doc);
				StartElement ele = (StartElement) xmleve;
				Element element = null;
				element = document.createElementNS(ele.getName()
						.getNamespaceURI(), ele.getName().getLocalPart());

				Iterator ite = ele.getAttributes();

				while (ite.hasNext()) {
					Attribute attr = (Attribute) ite.next();
					element.setAttribute(attr.getName().getLocalPart(),
							attr.getValue());
				}

				String xmlns = EwsUtilities.WSTrustFebruary2005Namespace;//"http://schemas.xmlsoap.org/wsdl/";
				ite = ele.getNamespaces();
				while (ite.hasNext()) {
					Namespace ns = (Namespace) ite.next();
					String name = ns.getPrefix();
					if (!name.isEmpty()) {
						element.setAttributeNS(xmlns, name,
								ns.getNamespaceURI());
					} else {
						xmlns = ns.getNamespaceURI();
					}
				}

				if (currentElement == null) {
					document.appendChild(element);
				} else {
					currentElement.appendChild(element);
				}

				currentElement = element;
				element.setUserData("location", ele.getLocation(), null);
			}
		}
		return document;
	}

	private Document returnValue;

	/**
	 * Gets the return value.
	 */
	protected Document getReturnValue() {
		return returnValue;
	}

	/**
	 * Sets the return value.
	 */
	private void setReturnValue(Document value) {
		returnValue = value;
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy