Class BaseNsStreamWriter

  • All Implemented Interfaces:
    OutputConfigFlags, 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
    Direct Known Subclasses:
    RepairingNsStreamWriter, SimpleNsStreamWriter

    public abstract class BaseNsStreamWriter
    extends TypedStreamWriter
    Mid-level base class of namespace-aware stream writers. Contains shared functionality between repairing and non-repairing implementations.
    • Field Detail

      • sPrefixXml

        protected static final java.lang.String sPrefixXml
      • sPrefixXmlns

        protected static final java.lang.String sPrefixXmlns
      • ERR_NSDECL_WRONG_STATE

        protected static final java.lang.String ERR_NSDECL_WRONG_STATE
        See Also:
        Constant Field Values
      • mAutomaticNS

        protected final boolean mAutomaticNS
        True, if writer needs to automatically output namespace declarations (we are in repairing mode)
      • mRootNsContext

        protected javax.xml.namespace.NamespaceContext mRootNsContext
        Optional "root" namespace context that application can set. If so, it can be used to lookup namespace/prefix mappings
      • MAX_POOL_SIZE

        static final int MAX_POOL_SIZE
        Although pooled objects are small, let's limit the pool size nonetheless, to optimize memory usage for deeply nested documents. In general, even just low number like 4 levels gets decent return, but 8 should get 99% hit rate.
        See Also:
        Constant Field Values
      • mPoolSize

        protected int mPoolSize
    • Constructor Detail

      • BaseNsStreamWriter

        public BaseNsStreamWriter​(XmlWriter xw,
                                  java.lang.String enc,
                                  WriterConfig cfg,
                                  boolean repairing)
    • Method Detail

      • getNamespaceContext

        public javax.xml.namespace.NamespaceContext getNamespaceContext()
        Specified by:
        getNamespaceContext in interface javax.xml.stream.XMLStreamWriter
        Specified by:
        getNamespaceContext in class BaseStreamWriter
      • getPrefix

        public java.lang.String getPrefix​(java.lang.String uri)
        Specified by:
        getPrefix in interface javax.xml.stream.XMLStreamWriter
        Specified by:
        getPrefix in class BaseStreamWriter
      • setDefaultNamespace

        public abstract void setDefaultNamespace​(java.lang.String uri)
                                          throws javax.xml.stream.XMLStreamException
        Specified by:
        setDefaultNamespace in interface javax.xml.stream.XMLStreamWriter
        Specified by:
        setDefaultNamespace in class BaseStreamWriter
        Throws:
        javax.xml.stream.XMLStreamException
      • setNamespaceContext

        public void setNamespaceContext​(javax.xml.namespace.NamespaceContext ctxt)
                                 throws javax.xml.stream.XMLStreamException

        Note: Root namespace context works best if automatic prefix creation ("namespace/prefix repairing" in StAX lingo) is enabled.

        Specified by:
        setNamespaceContext in interface javax.xml.stream.XMLStreamWriter
        Specified by:
        setNamespaceContext in class BaseStreamWriter
        Throws:
        javax.xml.stream.XMLStreamException
      • setPrefix

        public void setPrefix​(java.lang.String prefix,
                              java.lang.String uri)
                       throws javax.xml.stream.XMLStreamException
        Specified by:
        setPrefix in interface javax.xml.stream.XMLStreamWriter
        Specified by:
        setPrefix in class BaseStreamWriter
        Throws:
        javax.xml.stream.XMLStreamException
      • writeAttribute

        public void writeAttribute​(java.lang.String localName,
                                   java.lang.String value)
                            throws javax.xml.stream.XMLStreamException
        It's assumed calling this method implies caller just wants to add an attribute that does not belong to any namespace; as such no namespace checking or prefix generation is needed.
        Specified by:
        writeAttribute in interface javax.xml.stream.XMLStreamWriter
        Specified by:
        writeAttribute in class BaseStreamWriter
        Throws:
        javax.xml.stream.XMLStreamException
      • writeAttribute

        public abstract 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 BaseStreamWriter
        Throws:
        javax.xml.stream.XMLStreamException
      • writeAttribute

        public abstract 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 BaseStreamWriter
        Throws:
        javax.xml.stream.XMLStreamException
      • writeEmptyElement

        public void writeEmptyElement​(java.lang.String localName)
                               throws javax.xml.stream.XMLStreamException

        Note: It is assumed caller just wants the element to belong to whatever is the current default namespace.

        Specified by:
        writeEmptyElement in interface javax.xml.stream.XMLStreamWriter
        Specified by:
        writeEmptyElement in class BaseStreamWriter
        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 BaseStreamWriter
        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 BaseStreamWriter
        Throws:
        javax.xml.stream.XMLStreamException
      • writeEndElement

        public void writeEndElement()
                             throws javax.xml.stream.XMLStreamException
        Specified by:
        writeEndElement in interface javax.xml.stream.XMLStreamWriter
        Specified by:
        writeEndElement in class BaseStreamWriter
        Throws:
        javax.xml.stream.XMLStreamException
      • writeStartElement

        public void writeStartElement​(java.lang.String localName)
                               throws javax.xml.stream.XMLStreamException
        This method is assumed to just use default namespace (if any), and no further checks should be done.
        Specified by:
        writeStartElement in interface javax.xml.stream.XMLStreamWriter
        Specified by:
        writeStartElement in class BaseStreamWriter
        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 BaseStreamWriter
        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 BaseStreamWriter
        Throws:
        javax.xml.stream.XMLStreamException
      • writeTypedAttribute

        protected 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: TypedStreamWriter
        Method that will write attribute with value that is known not to require additional escaping.
        Specified by:
        writeTypedAttribute in class TypedStreamWriter
        Throws:
        javax.xml.stream.XMLStreamException
      • writeFullEndElement

        public void writeFullEndElement()
                                 throws javax.xml.stream.XMLStreamException
        Similar to writeEndElement(), but never allows implicit creation of empty elements.
        Specified by:
        writeFullEndElement in interface org.codehaus.stax2.XMLStreamWriter2
        Specified by:
        writeFullEndElement in class BaseStreamWriter
        Throws:
        javax.xml.stream.XMLStreamException
      • getCurrentElementName

        public javax.xml.namespace.QName getCurrentElementName()
        Specified by:
        getCurrentElementName in interface org.codehaus.stax2.validation.ValidationContext
        Specified by:
        getCurrentElementName in class BaseStreamWriter
      • getNamespaceURI

        public java.lang.String getNamespaceURI​(java.lang.String prefix)
        Specified by:
        getNamespaceURI in interface org.codehaus.stax2.validation.ValidationContext
        Specified by:
        getNamespaceURI in class BaseStreamWriter
      • writeEndElement

        public void writeEndElement​(javax.xml.namespace.QName name)
                             throws javax.xml.stream.XMLStreamException
        Method called by XMLEventWriter implementation (instead of the version that takes no argument), so that we can verify it does match the start element, if necessary
        Specified by:
        writeEndElement in class BaseStreamWriter
        Throws:
        javax.xml.stream.XMLStreamException
      • closeStartElement

        protected void closeStartElement​(boolean emptyElem)
                                  throws javax.xml.stream.XMLStreamException
        Method called to close an open start element, when another main-level element (not namespace declaration or attribute) is being output; except for end element which is handled differently.
        Specified by:
        closeStartElement in class BaseStreamWriter
        Parameters:
        emptyElem - If true, the element being closed is an empty element; if false, a separate stand-alone start element.
        Throws:
        javax.xml.stream.XMLStreamException
      • checkStartElement

        protected void checkStartElement​(java.lang.String localName,
                                         java.lang.String prefix)
                                  throws javax.xml.stream.XMLStreamException
        Method that is called to ensure that we can start writing an element, both from structural point of view, and from syntactic (close previously open start element, if any).
        Throws:
        javax.xml.stream.XMLStreamException
      • doWriteAttr

        protected final void doWriteAttr​(java.lang.String localName,
                                         java.lang.String nsURI,
                                         java.lang.String prefix,
                                         java.lang.String value)
                                  throws javax.xml.stream.XMLStreamException
        Throws:
        javax.xml.stream.XMLStreamException
      • doWriteAttr

        protected final void doWriteAttr​(java.lang.String localName,
                                         java.lang.String nsURI,
                                         java.lang.String prefix,
                                         char[] buf,
                                         int start,
                                         int len)
                                  throws javax.xml.stream.XMLStreamException
        Throws:
        javax.xml.stream.XMLStreamException
      • doWriteNamespace

        protected void doWriteNamespace​(java.lang.String prefix,
                                        java.lang.String nsURI)
                                 throws javax.xml.stream.XMLStreamException
        Throws:
        javax.xml.stream.XMLStreamException
      • doWriteDefaultNs

        protected void doWriteDefaultNs​(java.lang.String nsURI)
                                 throws javax.xml.stream.XMLStreamException
        Throws:
        javax.xml.stream.XMLStreamException
      • doWriteStartTag

        protected final void doWriteStartTag​(java.lang.String localName)
                                      throws javax.xml.stream.XMLStreamException
        Throws:
        javax.xml.stream.XMLStreamException
      • doWriteStartTag

        protected final void doWriteStartTag​(java.lang.String prefix,
                                             java.lang.String localName)
                                      throws javax.xml.stream.XMLStreamException
        Throws:
        javax.xml.stream.XMLStreamException
      • doWriteEndTag

        protected void doWriteEndTag​(javax.xml.namespace.QName expName,
                                     boolean allowEmpty)
                              throws javax.xml.stream.XMLStreamException
        Parameters:
        expName - Name that the closing element should have; null if whatever is in stack should be used
        allowEmpty - If true, is allowed to create the empty element if the closing element was truly empty; if false, has to write the full empty element no matter what
        Throws:
        javax.xml.stream.XMLStreamException
      • doSetPrefix

        public abstract void doSetPrefix​(java.lang.String prefix,
                                         java.lang.String uri)
                                  throws javax.xml.stream.XMLStreamException
        Throws:
        javax.xml.stream.XMLStreamException
      • writeDefaultNamespace

        public abstract 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 BaseStreamWriter
        Throws:
        javax.xml.stream.XMLStreamException
      • writeNamespace

        public abstract 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 BaseStreamWriter
        Throws:
        javax.xml.stream.XMLStreamException
      • writeStartElement

        public abstract void writeStartElement​(javax.xml.stream.events.StartElement elem)
                                        throws javax.xml.stream.XMLStreamException
        Description copied from class: BaseStreamWriter
        Convenience method needed by XMLEventWriter implementation, to use when writing a start element, and possibly its attributes and namespace declarations.
        Specified by:
        writeStartElement in class BaseStreamWriter
        Throws:
        javax.xml.stream.XMLStreamException
      • writeStartOrEmpty

        protected abstract void writeStartOrEmpty​(java.lang.String localName,
                                                  java.lang.String nsURI)
                                           throws javax.xml.stream.XMLStreamException
        Throws:
        javax.xml.stream.XMLStreamException
      • writeStartOrEmpty

        protected abstract void writeStartOrEmpty​(java.lang.String prefix,
                                                  java.lang.String localName,
                                                  java.lang.String nsURI)
                                           throws javax.xml.stream.XMLStreamException
        Throws:
        javax.xml.stream.XMLStreamException