You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by kw...@apache.org on 2019/12/20 13:23:32 UTC
svn commit: r1871858 -
/jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/util/xml/serialize/FormattingXmlStreamWriter.java
Author: kwin
Date: Fri Dec 20 13:23:31 2019
New Revision: 1871858
URL: http://svn.apache.org/viewvc?rev=1871858&view=rev
Log:
JCRVLT-391 make sure to not export private classes
Hide the usage of IndentingXMLStreamWriter by using composition instead
of inheritance
Modified:
jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/util/xml/serialize/FormattingXmlStreamWriter.java
Modified: jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/util/xml/serialize/FormattingXmlStreamWriter.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/util/xml/serialize/FormattingXmlStreamWriter.java?rev=1871858&r1=1871857&r2=1871858&view=diff
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/util/xml/serialize/FormattingXmlStreamWriter.java (original)
+++ jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/util/xml/serialize/FormattingXmlStreamWriter.java Fri Dec 20 13:23:31 2019
@@ -21,6 +21,7 @@ import java.io.OutputStream;
import java.io.Writer;
import java.nio.charset.StandardCharsets;
+import javax.xml.namespace.NamespaceContext;
import javax.xml.stream.FactoryConfigurationError;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamException;
@@ -28,6 +29,7 @@ import javax.xml.stream.XMLStreamWriter;
import com.ctc.wstx.api.WstxOutputProperties;
import com.ctc.wstx.stax.WstxOutputFactory;
+import com.sun.xml.txw2.output.IndentingXMLStreamWriter;
/** StAX XML Stream Writer filter. Adds the following functionality:
* <ul>
@@ -36,11 +38,12 @@ import com.ctc.wstx.stax.WstxOutputFacto
* <li>indentation for elements and comments</li>
* </ul>
*/
-public class FormattingXmlStreamWriter extends com.sun.xml.txw2.output.IndentingXMLStreamWriter implements AutoCloseable {
+public class FormattingXmlStreamWriter implements XMLStreamWriter, AutoCloseable {
private final Writer rawWriter;
private final XMLStreamWriter writer;
private final OutputFormat output;
+ private final IndentingXMLStreamWriter elementIndentingXmlWriter;
int numNamespaceDeclarations = 0;
int numAttributes = 0;
@@ -61,39 +64,39 @@ public class FormattingXmlStreamWriter e
}
private FormattingXmlStreamWriter(XMLStreamWriter writer, OutputFormat output) {
- super(writer);
- super.setIndentStep(output.getIndent());
this.output = output;
this.writer = writer;
this.rawWriter = (Writer) writer.getProperty(WstxOutputProperties.P_OUTPUT_UNDERLYING_WRITER);
if (this.rawWriter == null) {
throw new IllegalStateException("Could not get underlying writer!");
}
+ this.elementIndentingXmlWriter = new IndentingXMLStreamWriter(writer);
+ this.elementIndentingXmlWriter.setIndentStep(output.getIndent());
}
@Override
public void writeEndDocument() throws XMLStreamException {
// nothing can be written after writeEndDocument() has been called, therefore call the additional new line before
- super.writeEndDocument();
+ elementIndentingXmlWriter.writeEndDocument();
addLineBreak(true);
}
@Override
public void writeStartElement(String localName) throws XMLStreamException {
onStartElement();
- super.writeStartElement(localName);
+ elementIndentingXmlWriter.writeStartElement(localName);
}
@Override
public void writeStartElement(String namespaceURI, String localName) throws XMLStreamException {
onStartElement();
- super.writeStartElement(namespaceURI, localName);
+ elementIndentingXmlWriter.writeStartElement(namespaceURI, localName);
}
@Override
public void writeStartElement(String prefix, String localName, String namespaceURI) throws XMLStreamException {
onStartElement();
- super.writeStartElement(prefix, localName, namespaceURI);
+ elementIndentingXmlWriter.writeStartElement(prefix, localName, namespaceURI);
}
@Override
@@ -101,7 +104,7 @@ public class FormattingXmlStreamWriter e
// is it new element or
flushBufferedAttribute();
depth--;
- super.writeEndElement();
+ elementIndentingXmlWriter.writeEndElement();
}
private void onStartElement() throws XMLStreamException {
@@ -114,27 +117,27 @@ public class FormattingXmlStreamWriter e
@Override
public void writeNamespace(String prefix, String namespaceURI) throws XMLStreamException {
numNamespaceDeclarations++;
- super.writeNamespace(prefix, namespaceURI);
+ elementIndentingXmlWriter.writeNamespace(prefix, namespaceURI);
}
@Override
public void writeAttribute(String localName, String value) throws XMLStreamException {
if (onAttribute(null, null, localName, value)) {
- super.writeAttribute(localName, value);
+ elementIndentingXmlWriter.writeAttribute(localName, value);
}
}
@Override
public void writeAttribute(String prefix, String namespaceURI, String localName, String value) throws XMLStreamException {
if (onAttribute(prefix, namespaceURI, localName, value)) {
- super.writeAttribute(prefix, namespaceURI, localName, value);
+ elementIndentingXmlWriter.writeAttribute(prefix, namespaceURI, localName, value);
}
}
@Override
public void writeAttribute(String namespaceURI, String localName, String value) throws XMLStreamException {
if (onAttribute(null, namespaceURI, localName, value)) {
- super.writeAttribute(namespaceURI, localName, value);
+ elementIndentingXmlWriter.writeAttribute(namespaceURI, localName, value);
}
}
@@ -238,7 +241,103 @@ public class FormattingXmlStreamWriter e
flushBufferedAttribute();
addLineBreak(false);
indent(false);
- super.writeComment(data);
- //addLineBreak(false);
+ elementIndentingXmlWriter.writeComment(data);
}
+
+ public void close() throws XMLStreamException {
+ elementIndentingXmlWriter.close();
+ }
+
+ public void setIndentStep(String s) {
+ elementIndentingXmlWriter.setIndentStep(s);
+ }
+
+ public void flush() throws XMLStreamException {
+ elementIndentingXmlWriter.flush();
+ }
+
+ public void writeDefaultNamespace(String namespaceURI) throws XMLStreamException {
+ elementIndentingXmlWriter.writeDefaultNamespace(namespaceURI);
+ }
+
+ public void writeProcessingInstruction(String target) throws XMLStreamException {
+ elementIndentingXmlWriter.writeProcessingInstruction(target);
+ }
+
+ public void writeProcessingInstruction(String target, String data) throws XMLStreamException {
+ elementIndentingXmlWriter.writeProcessingInstruction(target, data);
+ }
+
+ public void writeStartDocument() throws XMLStreamException {
+ elementIndentingXmlWriter.writeStartDocument();
+ }
+
+ public void writeStartDocument(String version) throws XMLStreamException {
+ elementIndentingXmlWriter.writeStartDocument(version);
+ }
+
+ public void writeDTD(String dtd) throws XMLStreamException {
+ elementIndentingXmlWriter.writeDTD(dtd);
+ }
+
+ public void writeStartDocument(String encoding, String version) throws XMLStreamException {
+ elementIndentingXmlWriter.writeStartDocument(encoding, version);
+ }
+
+ public void writeEntityRef(String name) throws XMLStreamException {
+ elementIndentingXmlWriter.writeEntityRef(name);
+ }
+
+ public void writeEmptyElement(String namespaceURI, String localName) throws XMLStreamException {
+ elementIndentingXmlWriter.writeEmptyElement(namespaceURI, localName);
+ }
+
+ public String getPrefix(String uri) throws XMLStreamException {
+ return elementIndentingXmlWriter.getPrefix(uri);
+ }
+
+ public void setPrefix(String prefix, String uri) throws XMLStreamException {
+ elementIndentingXmlWriter.setPrefix(prefix, uri);
+ }
+
+ public void writeEmptyElement(String prefix, String localName, String namespaceURI) throws XMLStreamException {
+ elementIndentingXmlWriter.writeEmptyElement(prefix, localName, namespaceURI);
+ }
+
+ public void setDefaultNamespace(String uri) throws XMLStreamException {
+ elementIndentingXmlWriter.setDefaultNamespace(uri);
+ }
+
+ public void writeEmptyElement(String localName) throws XMLStreamException {
+ elementIndentingXmlWriter.writeEmptyElement(localName);
+ }
+
+ public void setNamespaceContext(NamespaceContext context) throws XMLStreamException {
+ elementIndentingXmlWriter.setNamespaceContext(context);
+ }
+
+ public NamespaceContext getNamespaceContext() {
+ return elementIndentingXmlWriter.getNamespaceContext();
+ }
+
+ public Object getProperty(String name) throws IllegalArgumentException {
+ return elementIndentingXmlWriter.getProperty(name);
+ }
+
+ public void writeCharacters(String text) throws XMLStreamException {
+ elementIndentingXmlWriter.writeCharacters(text);
+ }
+
+ public void writeCharacters(char[] text, int start, int len) throws XMLStreamException {
+ elementIndentingXmlWriter.writeCharacters(text, start, len);
+ }
+
+ public void writeCData(String data) throws XMLStreamException {
+ elementIndentingXmlWriter.writeCData(data);
+ }
+
+ public String toString() {
+ return elementIndentingXmlWriter.toString();
+ }
+
}