in testing/axiom-truth/src/main/java/org/apache/axiom/truth/AxiomTraverser.java [54:109]
public Event next() throws TraverserException {
if (node == null) {
if (root instanceof OMDocument) {
node = ((OMDocument) root).getFirstOMChild();
} else {
node = (OMElement) root;
}
} else if (!visited && node instanceof OMElement) {
OMNode firstChild = ((OMElement) node).getFirstOMChild();
if (firstChild != null) {
node = firstChild;
} else {
visited = true;
}
} else {
OMNode nextSibling = node.getNextOMSibling();
if (node == root) {
return null;
} else if (nextSibling != null) {
node = nextSibling;
visited = false;
} else {
OMContainer parent = node.getParent();
if (parent instanceof OMDocument) {
return null;
} else {
node = (OMElement) parent;
visited = true;
}
}
}
switch (node.getType()) {
case OMNode.DTD_NODE:
return Event.DOCUMENT_TYPE;
case OMNode.ELEMENT_NODE:
return visited ? Event.END_ELEMENT : Event.START_ELEMENT;
case OMNode.TEXT_NODE:
return Event.TEXT;
case OMNode.SPACE_NODE:
return Event.WHITESPACE;
case OMNode.ENTITY_REFERENCE_NODE:
if (expandEntityReferences) {
throw new UnsupportedOperationException();
} else {
return Event.ENTITY_REFERENCE;
}
case OMNode.COMMENT_NODE:
return Event.COMMENT;
case OMNode.CDATA_SECTION_NODE:
return Event.CDATA_SECTION;
case OMNode.PI_NODE:
return Event.PROCESSING_INSTRUCTION;
default:
throw new IllegalStateException();
}
}