Package com.fasterxml.aalto.out
Class RepairingStreamWriter
- java.lang.Object
-
- org.codehaus.stax2.ri.Stax2WriterImpl
-
- com.fasterxml.aalto.out.StreamWriterBase
-
- com.fasterxml.aalto.out.RepairingStreamWriter
-
- All Implemented Interfaces:
javax.xml.namespace.NamespaceContext
,javax.xml.stream.XMLStreamConstants
,javax.xml.stream.XMLStreamWriter
,org.codehaus.stax2.typed.TypedXMLStreamWriter
,org.codehaus.stax2.validation.Validatable
,org.codehaus.stax2.validation.ValidationContext
,org.codehaus.stax2.XMLStreamWriter2
public final class RepairingStreamWriter extends StreamWriterBase
Concrete implementation ofStreamWriterBase
, which implements the "namespace repairing" mode of operation. This means that the writer ensures correctness and validity of namespace bindings, as based on namespace URIs caller passes, by adding necessary namespace declarations and using prefixes as required to obtain expected results.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class com.fasterxml.aalto.out.StreamWriterBase
StreamWriterBase.State
-
-
Field Summary
Fields Modifier and Type Field Description (package private) int[]
_autoNsSeq
Sequence number used for generating dynamic namespace prefixes.(package private) java.lang.String
_cfgAutomaticNsPrefix
(package private) java.lang.String
_suggestedDefNs
(package private) java.util.HashMap<java.lang.String,java.lang.String>
_suggestedPrefixes
Map that contains URI-to-prefix entries that point out suggested prefixes for URIs.-
Fields inherited from class com.fasterxml.aalto.out.StreamWriterBase
_cfgCDataAsText, _cfgCheckAttrs, _cfgCheckContent, _cfgCheckStructure, _config, _currElem, _dtdRootElemName, _outputElemPool, _poolSize, _rootNsContext, _state, _stateAnyOutput, _stateEmptyElement, _stateStartElementOpen, _symbols, _validator, _valueEncoderFactory, _vldContent, _vldProblemHandler, _xmlWriter, MAX_POOL_SIZE
-
-
Constructor Summary
Constructors Constructor Description RepairingStreamWriter(WriterConfig cfg, XmlWriter writer, WNameTable symbols)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected WName
_generateAttrName(java.lang.String suggPrefix, java.lang.String localName, java.lang.String uri)
protected java.lang.String
_generateElemPrefix(java.lang.String uri)
Method called if given URI is not yet bound, and no suggested prefix is given (or one given can't be used).protected java.lang.String
_serializeQName(javax.xml.namespace.QName name)
void
_setPrefix(java.lang.String prefix, java.lang.String uri)
private boolean
_writeStartAndVerify(java.lang.String prefix, java.lang.String localName, java.lang.String nsURI, boolean isEmpty)
void
_writeStartOrEmpty(java.lang.String prefix, java.lang.String localName, java.lang.String nsURI, boolean isEmpty)
void
setDefaultNamespace(java.lang.String uri)
With repairing writer, this is only taken as a suggestion as to how the caller would prefer prefixes to be mapped.void
writeAttribute(java.lang.String nsURI, java.lang.String localName, java.lang.String value)
void
writeAttribute(java.lang.String prefix, java.lang.String nsURI, java.lang.String localName, java.lang.String value)
void
writeDefaultNamespace(java.lang.String nsURI)
void
writeEmptyElement(java.lang.String nsURI, java.lang.String localName)
void
writeEmptyElement(java.lang.String prefix, java.lang.String localName, java.lang.String nsURI)
void
writeNamespace(java.lang.String prefix, java.lang.String nsURI)
void
writeStartElement(java.lang.String nsURI, java.lang.String localName)
void
writeStartElement(java.lang.String prefix, java.lang.String localName, java.lang.String nsURI)
void
writeTypedAttribute(java.lang.String prefix, java.lang.String nsURI, java.lang.String localName, org.codehaus.stax2.ri.typed.AsciiValueEncoder enc)
Need to leave implementation of this method abstract, because repairing and non-repairing modes differ in how names are handled.-
Methods inherited from class com.fasterxml.aalto.out.StreamWriterBase
_closeStartElement, _reportInvalidContent, _reportNwfAttr, _reportNwfAttr, _reportNwfContent, _reportNwfContent, _reportNwfName, _reportNwfStructure, _reportNwfStructure, _reportValidationProblem, _verifyRootElement, _verifyStartElement, _verifyWriteAttr, _verifyWriteCData, _verifyWriteDTD, _writeAttribute, _writeAttribute, _writeDefaultNamespace, _writeNamespace, _writeStartDocument, _writeStartTag, _writeStartTag, addDefaultAttribute, close, closeCompletely, findAttributeIndex, flush, getAttributeCount, getAttributeLocalName, getAttributeNamespace, getAttributePrefix, getAttributeType, getAttributeValue, getAttributeValue, getBaseUri, getCurrentElementName, getEncoding, getLocation, getNamespaceContext, getNamespaceURI, getPrefix, getPrefixes, getProperty, getValidationLocation, getXmlVersion, inPrologOrEpilog, isNotationDeclared, isPropertySupported, isUnparsedEntityDeclared, reportIllegalArg, reportIllegalMethod, reportProblem, setNamespaceContext, setPrefix, setProperty, setValidationProblemHandler, stopValidatingAgainst, stopValidatingAgainst, throwFromIOE, throwOutputError, throwOutputError, toString, validateAgainst, valueEncoderFactory, writeAttribute, writeBinary, writeBinary, writeBinaryAttribute, writeBinaryAttribute, writeBoolean, writeBooleanAttribute, writeCData, writeCData, writeCharacters, writeCharacters, writeComment, writeDecimal, writeDecimalAttribute, writeDouble, writeDoubleArray, writeDoubleArrayAttribute, writeDoubleAttribute, writeDTD, writeDTD, writeDTD, writeEmptyElement, writeEndDocument, writeEndElement, writeEntityRef, writeFloat, writeFloatArray, writeFloatArrayAttribute, writeFloatAttribute, writeFullEndElement, writeInt, writeIntArray, writeIntArrayAttribute, writeIntAttribute, writeInteger, writeIntegerAttribute, writeLong, writeLongArray, writeLongArrayAttribute, writeLongAttribute, writeProcessingInstruction, writeProcessingInstruction, writeQName, writeQNameAttribute, writeRaw, writeRaw, writeRaw, writeSpace, writeSpace, writeStartDocument, writeStartDocument, writeStartDocument, writeStartDocument, writeStartElement
-
-
-
-
Field Detail
-
_cfgAutomaticNsPrefix
final java.lang.String _cfgAutomaticNsPrefix
-
_autoNsSeq
int[] _autoNsSeq
Sequence number used for generating dynamic namespace prefixes. Array used as a wrapper to allow for easy sharing of the sequence number.
-
_suggestedDefNs
java.lang.String _suggestedDefNs
-
_suggestedPrefixes
java.util.HashMap<java.lang.String,java.lang.String> _suggestedPrefixes
Map that contains URI-to-prefix entries that point out suggested prefixes for URIs. These are populated by calls toStreamWriterBase.setPrefix(java.lang.String, java.lang.String)
, and they are only used as hints for binding; if there are conflicts, repairing writer can just use some other prefix.
-
-
Constructor Detail
-
RepairingStreamWriter
public RepairingStreamWriter(WriterConfig cfg, XmlWriter writer, WNameTable symbols)
-
-
Method Detail
-
setDefaultNamespace
public void setDefaultNamespace(java.lang.String uri) throws javax.xml.stream.XMLStreamException
With repairing writer, this is only taken as a suggestion as to how the caller would prefer prefixes to be mapped.- Specified by:
setDefaultNamespace
in interfacejavax.xml.stream.XMLStreamWriter
- Specified by:
setDefaultNamespace
in classStreamWriterBase
- Throws:
javax.xml.stream.XMLStreamException
-
_setPrefix
public void _setPrefix(java.lang.String prefix, java.lang.String uri)
- Specified by:
_setPrefix
in classStreamWriterBase
-
writeAttribute
public void writeAttribute(java.lang.String nsURI, java.lang.String localName, java.lang.String value) throws javax.xml.stream.XMLStreamException
- Specified by:
writeAttribute
in interfacejavax.xml.stream.XMLStreamWriter
- Specified by:
writeAttribute
in classStreamWriterBase
- Throws:
javax.xml.stream.XMLStreamException
-
writeAttribute
public void writeAttribute(java.lang.String prefix, java.lang.String nsURI, java.lang.String localName, java.lang.String value) throws javax.xml.stream.XMLStreamException
- Specified by:
writeAttribute
in interfacejavax.xml.stream.XMLStreamWriter
- Specified by:
writeAttribute
in classStreamWriterBase
- Throws:
javax.xml.stream.XMLStreamException
-
writeDefaultNamespace
public void writeDefaultNamespace(java.lang.String nsURI) throws javax.xml.stream.XMLStreamException
- Specified by:
writeDefaultNamespace
in interfacejavax.xml.stream.XMLStreamWriter
- Specified by:
writeDefaultNamespace
in classStreamWriterBase
- Throws:
javax.xml.stream.XMLStreamException
-
writeEmptyElement
public void writeEmptyElement(java.lang.String nsURI, java.lang.String localName) throws javax.xml.stream.XMLStreamException
- Specified by:
writeEmptyElement
in interfacejavax.xml.stream.XMLStreamWriter
- Specified by:
writeEmptyElement
in classStreamWriterBase
- Throws:
javax.xml.stream.XMLStreamException
-
writeEmptyElement
public void writeEmptyElement(java.lang.String prefix, java.lang.String localName, java.lang.String nsURI) throws javax.xml.stream.XMLStreamException
- Specified by:
writeEmptyElement
in interfacejavax.xml.stream.XMLStreamWriter
- Specified by:
writeEmptyElement
in classStreamWriterBase
- Throws:
javax.xml.stream.XMLStreamException
-
writeNamespace
public void writeNamespace(java.lang.String prefix, java.lang.String nsURI) throws javax.xml.stream.XMLStreamException
- Specified by:
writeNamespace
in interfacejavax.xml.stream.XMLStreamWriter
- Specified by:
writeNamespace
in classStreamWriterBase
- Throws:
javax.xml.stream.XMLStreamException
-
writeStartElement
public void writeStartElement(java.lang.String nsURI, java.lang.String localName) throws javax.xml.stream.XMLStreamException
- Specified by:
writeStartElement
in interfacejavax.xml.stream.XMLStreamWriter
- Specified by:
writeStartElement
in classStreamWriterBase
- Throws:
javax.xml.stream.XMLStreamException
-
writeStartElement
public void writeStartElement(java.lang.String prefix, java.lang.String localName, java.lang.String nsURI) throws javax.xml.stream.XMLStreamException
- Specified by:
writeStartElement
in interfacejavax.xml.stream.XMLStreamWriter
- Specified by:
writeStartElement
in classStreamWriterBase
- Throws:
javax.xml.stream.XMLStreamException
-
writeTypedAttribute
public void writeTypedAttribute(java.lang.String prefix, java.lang.String nsURI, java.lang.String localName, org.codehaus.stax2.ri.typed.AsciiValueEncoder enc) throws javax.xml.stream.XMLStreamException
Description copied from class:StreamWriterBase
Need to leave implementation of this method abstract, because repairing and non-repairing modes differ in how names are handled.- Specified by:
writeTypedAttribute
in classStreamWriterBase
- Throws:
javax.xml.stream.XMLStreamException
-
_serializeQName
protected java.lang.String _serializeQName(javax.xml.namespace.QName name) throws javax.xml.stream.XMLStreamException
- Specified by:
_serializeQName
in classStreamWriterBase
- Throws:
javax.xml.stream.XMLStreamException
-
_generateAttrName
protected WName _generateAttrName(java.lang.String suggPrefix, java.lang.String localName, java.lang.String uri) throws javax.xml.stream.XMLStreamException
- Parameters:
uri
- Non-empty namespace URI that will be used for the attribute- Throws:
javax.xml.stream.XMLStreamException
-
_writeStartOrEmpty
public void _writeStartOrEmpty(java.lang.String prefix, java.lang.String localName, java.lang.String nsURI, boolean isEmpty) throws javax.xml.stream.XMLStreamException
- Throws:
javax.xml.stream.XMLStreamException
-
_writeStartAndVerify
private final boolean _writeStartAndVerify(java.lang.String prefix, java.lang.String localName, java.lang.String nsURI, boolean isEmpty) throws javax.xml.stream.XMLStreamException
- Returns:
- True, if prefix indicates default namespace (is null or empty); false otherwise
- Throws:
javax.xml.stream.XMLStreamException
-
_generateElemPrefix
protected final java.lang.String _generateElemPrefix(java.lang.String uri) throws javax.xml.stream.XMLStreamException
Method called if given URI is not yet bound, and no suggested prefix is given (or one given can't be used). If so, methods is to create a not-yet-bound-prefix for the namespace.- Throws:
javax.xml.stream.XMLStreamException
-
-