/*
* Copyright 2011, 2012 Odysseus Software GmbH
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.synapse.commons.staxon.core.xml.util;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;
import org.apache.synapse.commons.staxon.core.util.StreamWriterDelegate;
/**
* Pretty printing XML stream writer.
*/
public class PrettyXMLStreamWriter extends StreamWriterDelegate {
private final PrettyXMLWhitespaceHandler handler;
/**
* Create instance using default indentation (\t) and line separator (\n).
*
* @param writer parent writer
*/
public PrettyXMLStreamWriter(XMLStreamWriter writer) {
this(writer, "\t", "\n");
}
/**
* Create instance.
*
* @param writer parent writer
* @param indentation line indentation
* @param newline line separator
*/
public PrettyXMLStreamWriter(XMLStreamWriter writer, String indentation, String newline) {
super(writer);
this.handler = new PrettyXMLWhitespaceHandler(writer, indentation, newline);
}
@Override
public void setParent(XMLStreamWriter parent) {
throw new UnsupportedOperationException();
}
@Override
public void writeStartDocument() throws XMLStreamException {
handler.preStartDocument();
super.writeStartDocument();
handler.postStartDocument();
}
@Override
public void writeStartDocument(String version) throws XMLStreamException {
handler.preStartDocument();
super.writeStartDocument(version);
handler.postStartDocument();
}
@Override
public void writeStartDocument(String encoding, String version) throws XMLStreamException {
handler.preStartDocument();
super.writeStartDocument(encoding, version);
handler.postStartDocument();
}
@Override
public void writeStartElement(String localName) throws XMLStreamException {
handler.preStartElement();
super.writeStartElement(localName);
handler.postStartElement();
}
@Override
public void writeStartElement(String namespaceURI, String localName) throws XMLStreamException {
handler.preStartElement();
super.writeStartElement(namespaceURI, localName);
handler.postStartElement();
}
@Override
public void writeStartElement(String prefix, String localName, String namespaceURI) throws XMLStreamException {
handler.preStartElement();
super.writeStartElement(prefix, localName, namespaceURI);
handler.postStartElement();
}
@Override
public void writeEmptyElement(String namespaceURI, String localName) throws XMLStreamException {
handler.preEmptyELement();
super.writeEmptyElement(namespaceURI, localName);
handler.postEmptyELement();
}
@Override
public void writeEmptyElement(String prefix, String localName, String namespaceURI) throws XMLStreamException {
handler.preEmptyELement();
super.writeEmptyElement(prefix, localName, namespaceURI);
handler.postEmptyELement();
}
@Override
public void writeEmptyElement(String localName) throws XMLStreamException {
handler.preEmptyELement();
super.writeEmptyElement(localName);
handler.postEmptyELement();
}
@Override
public void writeEndElement() throws XMLStreamException {
handler.preEndElement();
super.writeEndElement();
handler.postEndElement();
}
@Override
public void writeCData(String data) throws XMLStreamException {
handler.preCharacters();
super.writeCData(data);
handler.postCharacters();
}
@Override
public void writeCharacters(String text) throws XMLStreamException {
handler.preCharacters();
super.writeCharacters(text);
handler.postCharacters();
}
@Override
public void writeCharacters(char[] text, int start, int len) throws XMLStreamException {
handler.preCharacters();
super.writeCharacters(text, start, len);
handler.postCharacters();
}
@Override
public void writeComment(String data) throws XMLStreamException {
handler.preComment();
super.writeComment(data);
handler.postComment();
}
@Override
public void writeProcessingInstruction(String target) throws XMLStreamException {
handler.preProcessingInstruction();
super.writeProcessingInstruction(target);
handler.postProcessingInstruction();
}
@Override
public void writeProcessingInstruction(String target, String data) throws XMLStreamException {
handler.preProcessingInstruction();
super.writeProcessingInstruction(target, data);
handler.postProcessingInstruction();
}
}