in lib/client-core/src/main/java/org/apache/olingo/client/core/serialization/AtomDeserializer.java [476:565]
private Delta delta(final XMLEventReader reader, final StartElement start)
throws XMLStreamException, EdmPrimitiveTypeException {
if (!Constants.QNAME_ATOM_ELEM_FEED.equals(start.getName())) {
return null;
}
final Delta delta = new Delta();
final Attribute xmlBase = start.getAttributeByName(Constants.QNAME_ATTR_XML_BASE);
if (xmlBase != null) {
delta.setBaseURI(URI.create(xmlBase.getValue()));
}
boolean foundEndFeed = false;
while (reader.hasNext() && !foundEndFeed) {
final XMLEvent event = reader.nextEvent();
if (event.isStartElement()) {
if (countQName.equals(event.asStartElement().getName())) {
count(reader, event.asStartElement(), delta);
} else if (Constants.QNAME_ATOM_ELEM_ID.equals(event.asStartElement().getName())) {
common(reader, event.asStartElement(), delta, "id");
} else if (Constants.QNAME_ATOM_ELEM_TITLE.equals(event.asStartElement().getName())) {
common(reader, event.asStartElement(), delta, "title");
} else if (Constants.QNAME_ATOM_ELEM_SUMMARY.equals(event.asStartElement().getName())) {
common(reader, event.asStartElement(), delta, "summary");
} else if (Constants.QNAME_ATOM_ELEM_UPDATED.equals(event.asStartElement().getName())) {
common(reader, event.asStartElement(), delta, "updated");
} else if (Constants.QNAME_ATOM_ELEM_LINK.equals(event.asStartElement().getName())) {
final Attribute rel = event.asStartElement().getAttributeByName(QName.valueOf(Constants.ATTR_REL));
if (rel != null) {
if (Constants.NEXT_LINK_REL.equals(rel.getValue())) {
final Attribute href = event.asStartElement().getAttributeByName(QName.valueOf(Constants.ATTR_HREF));
if (href != null) {
delta.setNext(URI.create(href.getValue()));
}
}
if (Constants.NS_DELTA_LINK_REL.equals(rel.getValue())) {
final Attribute href = event.asStartElement().getAttributeByName(QName.valueOf(Constants.ATTR_HREF));
if (href != null) {
delta.setDeltaLink(URI.create(href.getValue()));
}
}
}
} else if (Constants.QNAME_ATOM_ELEM_ENTRY.equals(event.asStartElement().getName())) {
delta.getEntities().add(entity(reader, event.asStartElement()));
} else if (deletedEntryQName.equals(event.asStartElement().getName())) {
final DeletedEntity deletedEntity = new DeletedEntity();
final Attribute ref = event.asStartElement().getAttributeByName(QName.valueOf(Constants.ATTR_REF));
if (ref != null) {
deletedEntity.setId(URI.create(ref.getValue()));
}
final Attribute reason = event.asStartElement().getAttributeByName(reasonQName);
if (reason != null) {
deletedEntity.setReason(Reason.valueOf(reason.getValue()));
}
delta.getDeletedEntities().add(deletedEntity);
} else if (linkQName.equals(event.asStartElement().getName())
|| deletedLinkQName.equals(event.asStartElement().getName())) {
final DeltaLink link = new DeltaLink();
final Attribute source = event.asStartElement().getAttributeByName(QName.valueOf(Constants.ATTR_SOURCE));
if (source != null) {
link.setSource(URI.create(source.getValue()));
}
final Attribute relationship =
event.asStartElement().getAttributeByName(QName.valueOf(Constants.ATTR_RELATIONSHIP));
if (relationship != null) {
link.setRelationship(relationship.getValue());
}
final Attribute target = event.asStartElement().getAttributeByName(QName.valueOf(Constants.ATTR_TARGET));
if (target != null) {
link.setTarget(URI.create(target.getValue()));
}
if (linkQName.equals(event.asStartElement().getName())) {
delta.getAddedLinks().add(link);
} else {
delta.getDeletedLinks().add(link);
}
}
}
if (event.isEndElement() && start.getName().equals(event.asEndElement().getName())) {
foundEndFeed = true;
}
}
return delta;
}