protected void serializeNode()

in impl/src/main/java/org/apache/tuscany/sdo/util/resource/XMLStreamSerializer.java [70:118]


    protected void serializeNode(XMLStreamReader reader, XMLStreamWriter writer) throws XMLStreamException {
        // TODO We get the StAXWriter at this point and uses it hereafter assuming that this is the only entry point to this class.
        // If there can be other classes calling methodes of this we might need to change methode signatures to OMOutputer
        while (reader.hasNext()) {
            int event = reader.next();
            if (event == START_ELEMENT) {
            	if(options == null){
            		serializeElement(reader, writer);
            	}
            	else{
            		serializeElementWithOptions(reader, writer);
            	}
                depth++;
            } else if (event == ATTRIBUTE) {
                serializeAttributes(reader, writer);
            } else if (event == CHARACTERS) {
                serializeText(reader, writer);
            } else if (event == COMMENT) {
                serializeComment(reader, writer);
            } else if (event == CDATA) {
                serializeCData(reader, writer);
            } else if (event == END_ELEMENT) {
            	if(options == null){
            		serializeEndElement(writer);
            	}else{
            		serializeEndElementWithOptions(writer);
            	}
                depth--;
            } else if (event == START_DOCUMENT) {
                depth++; // if a start document is found then increment the depth
            } else if (event == END_DOCUMENT) {
                if (depth != 0)
                    depth--; // for the end document - reduce the depth
                try {
                	if(options == null){
                		serializeEndElement(writer);
                	}
                	else{
                		serializeEndElementWithOptions(writer);	
                	}                    
                } catch (Exception e) {
                    // TODO: log exceptions
                }
            }
            if (depth == 0) {
                break;
            }
        }
    }