예제 #1
0
  /**
   * Read items from XML.
   *
   * @param reader The reader
   * @param propertySet The property set
   * @param destinationList The list in which to add the read items.
   * @throws javax.xml.stream.XMLStreamException the xML stream exception
   * @throws ServiceXmlDeserializationException the service xml deserialization exception
   * @throws Exception the exception
   */
  private void internalReadItemsFromXml(
      EwsServiceXmlReader reader, PropertySet propertySet, List<TItem> destinationList)
      throws XMLStreamException, ServiceXmlDeserializationException, Exception {
    EwsUtilities.EwsAssert(
        destinationList != null,
        "FindItemResponse.InternalReadItemsFromXml",
        "destinationList is null.");

    reader.readStartElement(XmlNamespace.Types, XmlElementNames.Items);
    if (!reader.isEmptyElement()) {
      do {
        reader.read();

        if (reader.getNodeType().nodeType == XmlNodeType.START_ELEMENT) {
          Item item =
              EwsUtilities.createEwsObjectFromXmlElementName(
                  Item.class, reader.getService(), reader.getLocalName());

          if (item == null) {
            reader.skipCurrentElement();
          } else {
            item.loadFromXml(
                reader, true, /* clearPropertyBag */ propertySet, true /* summaryPropertiesOnly */);

            destinationList.add((TItem) item);
          }
        }
      } while (!reader.isEndElement(XmlNamespace.Types, XmlElementNames.Items));
    } else {
      reader.read();
    }
  }
예제 #2
0
  /**
   * Reads response elements from XML.
   *
   * @param reader ,The reader
   * @throws Exception the exception
   */
  @Override
  protected void readElementsFromXml(EwsServiceXmlReader reader) throws Exception {
    reader.readStartElement(XmlNamespace.Messages, XmlElementNames.RootFolder);

    int totalItemsInView =
        reader.readAttributeValue(Integer.class, XmlAttributeNames.TotalItemsInView);
    boolean moreItemsAvailable =
        !reader.readAttributeValue(Boolean.class, XmlAttributeNames.IncludesLastItemInRange);

    // Ignore IndexedPagingOffset attribute if moreItemsAvailable is false.
    Integer nextPageOffset =
        moreItemsAvailable
            ? reader.readNullableAttributeValue(
                Integer.class, XmlAttributeNames.IndexedPagingOffset)
            : null;

    if (!this.isGrouped) {
      this.results = new FindItemsResults<TItem>();
      this.results.setTotalCount(totalItemsInView);
      this.results.setNextPageOffset(nextPageOffset);
      this.results.setMoreAvailable(moreItemsAvailable);
      internalReadItemsFromXml(reader, this.propertySet, this.results.getItems());
    } else {
      this.groupedFindResults = new GroupedFindItemsResults<TItem>();
      this.groupedFindResults.setTotalCount(totalItemsInView);
      this.groupedFindResults.setNextPageOffset(nextPageOffset);
      this.groupedFindResults.setMoreAvailable(moreItemsAvailable);

      reader.readStartElement(XmlNamespace.Types, XmlElementNames.Groups);

      if (!reader.isEmptyElement()) {
        do {
          reader.read();

          if (reader.isStartElement(XmlNamespace.Types, XmlElementNames.GroupedItems)) {
            String groupIndex =
                reader.readElementValue(XmlNamespace.Types, XmlElementNames.GroupIndex);

            ArrayList<TItem> itemList = new ArrayList<TItem>();
            internalReadItemsFromXml(reader, this.propertySet, itemList);

            reader.readEndElement(XmlNamespace.Types, XmlElementNames.GroupedItems);

            this.groupedFindResults.getItemGroups().add(new ItemGroup<TItem>(groupIndex, itemList));
          }
        } while (!reader.isEndElement(XmlNamespace.Types, XmlElementNames.Groups));
      } else {
        reader.read();
      }
    }

    reader.readEndElement(XmlNamespace.Messages, XmlElementNames.RootFolder);
  }
  /**
   * * Loads from XML.
   *
   * @param reader the reader
   * @param localElementName the local element name
   * @throws Exception the exception
   */
  @Override
  protected void loadFromXml(EwsServiceXmlReader reader, String localElementName) throws Exception {
    reader.ensureCurrentNodeIsStartElement(XmlNamespace.Types, localElementName);

    reader.readStartElement(XmlNamespace.Types, this.getInnerCollectionXmlElementName());
    super.loadFromXml(reader, this.getInnerCollectionXmlElementName());
    reader.readEndElementIfNecessary(XmlNamespace.Types, this.getInnerCollectionXmlElementName());

    reader.read();

    if (reader.isStartElement(XmlNamespace.Types, XmlElementNames.UnknownEntries)) {
      do {
        reader.read();

        if (reader.isStartElement(XmlNamespace.Types, XmlElementNames.UnknownEntry)) {
          this.unknownEntries.add(reader.readElementValue());
        }
      } while (!reader.isEndElement(XmlNamespace.Types, XmlElementNames.UnknownEntries));
    }
  }