public Event next()

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