Class 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 of StreamWriterBase, 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.
    • 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 to StreamWriterBase.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.
    • 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 interface javax.xml.stream.XMLStreamWriter
        Specified by:
        setDefaultNamespace in class StreamWriterBase
        Throws:
        javax.xml.stream.XMLStreamException
      • _setPrefix

        public void _setPrefix​(java.lang.String prefix,
                               java.lang.String uri)
        Specified by:
        _setPrefix in class StreamWriterBase
      • 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 interface javax.xml.stream.XMLStreamWriter
        Specified by:
        writeAttribute in class StreamWriterBase
        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 interface javax.xml.stream.XMLStreamWriter
        Specified by:
        writeAttribute in class StreamWriterBase
        Throws:
        javax.xml.stream.XMLStreamException
      • writeDefaultNamespace

        public void writeDefaultNamespace​(java.lang.String nsURI)
                                   throws javax.xml.stream.XMLStreamException
        Specified by:
        writeDefaultNamespace in interface javax.xml.stream.XMLStreamWriter
        Specified by:
        writeDefaultNamespace in class StreamWriterBase
        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 interface javax.xml.stream.XMLStreamWriter
        Specified by:
        writeEmptyElement in class StreamWriterBase
        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 interface javax.xml.stream.XMLStreamWriter
        Specified by:
        writeEmptyElement in class StreamWriterBase
        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 interface javax.xml.stream.XMLStreamWriter
        Specified by:
        writeNamespace in class StreamWriterBase
        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 interface javax.xml.stream.XMLStreamWriter
        Specified by:
        writeStartElement in class StreamWriterBase
        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 interface javax.xml.stream.XMLStreamWriter
        Specified by:
        writeStartElement in class StreamWriterBase
        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 class StreamWriterBase
        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 class StreamWriterBase
        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