/** * 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(); } }
/** * 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)); } }