001/*
002 * The MIT License
003 * Copyright (c) 2012 Microsoft Corporation
004 *
005 * Permission is hereby granted, free of charge, to any person obtaining a copy
006 * of this software and associated documentation files (the "Software"), to deal
007 * in the Software without restriction, including without limitation the rights
008 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
009 * copies of the Software, and to permit persons to whom the Software is
010 * furnished to do so, subject to the following conditions:
011 *
012 * The above copyright notice and this permission notice shall be included in
013 * all copies or substantial portions of the Software.
014 *
015 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
016 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
017 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
018 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
019 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
020 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
021 * THE SOFTWARE.
022 */
023
024package microsoft.exchange.webservices.data.core.response;
025
026import microsoft.exchange.webservices.data.core.EwsServiceXmlReader;
027import microsoft.exchange.webservices.data.core.XmlElementNames;
028import microsoft.exchange.webservices.data.core.enumeration.misc.XmlNamespace;
029import microsoft.exchange.webservices.data.property.complex.EmailAddress;
030import microsoft.exchange.webservices.data.property.complex.EmailAddressCollection;
031
032/**
033 * Represents the response to a GetRoomLists operation.
034 */
035public final class GetRoomListsResponse extends ServiceResponse {
036
037  /**
038   * The room lists.
039   */
040  private EmailAddressCollection roomLists = new EmailAddressCollection();
041
042  /**
043   * Represents the response to a GetRoomLists operation.
044   */
045  public GetRoomListsResponse() {
046    super();
047  }
048
049  /**
050   * Gets all room list returned.
051   *
052   * @return the room lists
053   */
054  public EmailAddressCollection getRoomLists() {
055    return this.roomLists;
056  }
057
058  /**
059   * Reads response elements from XML.
060   *
061   * @param reader the reader
062   * @throws Exception the exception
063   */
064  @Override
065  protected void readElementsFromXml(EwsServiceXmlReader reader)
066      throws Exception {
067    this.roomLists.clear();
068    super.readElementsFromXml(reader);
069
070    reader.readStartElement(XmlNamespace.Messages,
071        XmlElementNames.RoomLists);
072
073    if (!reader.isEmptyElement()) {
074      // Because we don't have an element for count of returned object,
075      // we have to test the element to determine if it is return object
076      // or EndElement
077      reader.read();
078      while (reader.isStartElement(XmlNamespace.Types,
079          XmlElementNames.Address)) {
080        EmailAddress emailAddress = new EmailAddress();
081        emailAddress.loadFromXml(reader, XmlElementNames.Address);
082        this.roomLists.add(emailAddress);
083        reader.read();
084      }
085      reader.ensureCurrentNodeIsEndElement(XmlNamespace.Messages,
086          XmlElementNames.RoomLists);
087    } else {
088      reader.read();
089    }
090    return;
091  }
092
093}