diff options
Diffstat (limited to 'src/com/sun/org/apache/xml/internal/serializer/ToSAXHandler.java')
-rw-r--r-- | src/com/sun/org/apache/xml/internal/serializer/ToSAXHandler.java | 440 |
1 files changed, 0 insertions, 440 deletions
diff --git a/src/com/sun/org/apache/xml/internal/serializer/ToSAXHandler.java b/src/com/sun/org/apache/xml/internal/serializer/ToSAXHandler.java deleted file mode 100644 index e6bc70a..0000000 --- a/src/com/sun/org/apache/xml/internal/serializer/ToSAXHandler.java +++ /dev/null @@ -1,440 +0,0 @@ -/* - * reserved comment block - * DO NOT REMOVE OR ALTER! - */ -/* - * Copyright 2001-2004 The Apache Software Foundation. - * - * 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. - */ -/* - * $Id: ToSAXHandler.java,v 1.2.4.1 2005/09/22 11:03:15 pvedula Exp $ - */ -package com.sun.org.apache.xml.internal.serializer; - -import java.util.Vector; - -import org.xml.sax.Attributes; -import org.xml.sax.ContentHandler; -import org.xml.sax.ErrorHandler; -import org.xml.sax.SAXException; -import org.xml.sax.SAXParseException; -import org.xml.sax.ext.LexicalHandler; - -/** - * This class is used to provide a base behavior to be inherited - * by other To...SAXHandler serializers. - * - * This class is not a public API. - * - * @xsl.usage internal - */ -public abstract class ToSAXHandler extends SerializerBase -{ - public ToSAXHandler() - { - } - - public ToSAXHandler( - ContentHandler hdlr, - LexicalHandler lex, - String encoding) - { - setContentHandler(hdlr); - setLexHandler(lex); - setEncoding(encoding); - } - public ToSAXHandler(ContentHandler handler, String encoding) - { - setContentHandler(handler); - setEncoding(encoding); - } - - /** - * Underlying SAX handler. Taken from XSLTC - */ - protected ContentHandler m_saxHandler; - - /** - * Underlying LexicalHandler. Taken from XSLTC - */ - protected LexicalHandler m_lexHandler; - - /** - * A startPrefixMapping() call on a ToSAXHandler will pass that call - * on to the wrapped ContentHandler, but should we also mirror these calls - * with matching attributes, if so this field is true. - * For example if this field is true then a call such as - * startPrefixMapping("prefix1","uri1") will also cause the additional - * internally generated attribute xmlns:prefix1="uri1" to be effectively added - * to the attributes passed to the wrapped ContentHandler. - */ - private boolean m_shouldGenerateNSAttribute = true; - - /** If this is true, then the content handler wrapped by this - * serializer implements the TransformState interface which - * will give the content handler access to the state of - * the transform. */ - protected TransformStateSetter m_state = null; - - /** - * Pass callback to the SAX Handler - */ - protected void startDocumentInternal() throws SAXException - { - if (m_needToCallStartDocument) - { - super.startDocumentInternal(); - - m_saxHandler.startDocument(); - m_needToCallStartDocument = false; - } - } - /** - * Do nothing. - * @see org.xml.sax.ext.LexicalHandler#startDTD(String, String, String) - */ - public void startDTD(String arg0, String arg1, String arg2) - throws SAXException - { - // do nothing for now - } - - /** - * Receive notification of character data. - * - * @param characters The string of characters to process. - * - * @throws org.xml.sax.SAXException - * - * @see ExtendedContentHandler#characters(String) - */ - public void characters(String characters) throws SAXException - { - final int len = characters.length(); - if (len > m_charsBuff.length) - { - m_charsBuff = new char[len*2 + 1]; - } - characters.getChars(0,len, m_charsBuff, 0); - characters(m_charsBuff, 0, len); - } - - /** - * Receive notification of a comment. - * - * @see ExtendedLexicalHandler#comment(String) - */ - public void comment(String comment) throws SAXException - { - flushPending(); - - // Ignore if a lexical handler has not been set - if (m_lexHandler != null) - { - final int len = comment.length(); - if (len > m_charsBuff.length) - { - m_charsBuff = new char[len*2 + 1]; - } - comment.getChars(0,len, m_charsBuff, 0); - m_lexHandler.comment(m_charsBuff, 0, len); - // time to fire off comment event - if (m_tracer != null) - super.fireCommentEvent(m_charsBuff, 0, len); - } - - } - - /** - * Do nothing as this is an abstract class. All subclasses will need to - * define their behavior if it is different. - * @see org.xml.sax.ContentHandler#processingInstruction(String, String) - */ - public void processingInstruction(String target, String data) - throws SAXException - { - // Redefined in SAXXMLOutput - } - - protected void closeStartTag() throws SAXException - { - } - - protected void closeCDATA() throws SAXException - { - // Redefined in SAXXMLOutput - } - - /** - * Receive notification of the beginning of an element, although this is a - * SAX method additional namespace or attribute information can occur before - * or after this call, that is associated with this element. - * - * @throws org.xml.sax.SAXException Any SAX exception, possibly - * wrapping another exception. - * @see org.xml.sax.ContentHandler#startElement - * @see org.xml.sax.ContentHandler#endElement - * @see org.xml.sax.AttributeList - * - * @throws org.xml.sax.SAXException - * - * @see org.xml.sax.ContentHandler#startElement(String,String,String,Attributes) - */ - public void startElement( - String arg0, - String arg1, - String arg2, - Attributes arg3) - throws SAXException - { - if (m_state != null) { - m_state.resetState(getTransformer()); - } - - // fire off the start element event - if (m_tracer != null) - super.fireStartElem(arg2); - } - - /** - * Sets the LexicalHandler. - * @param _lexHandler The LexicalHandler to set - */ - public void setLexHandler(LexicalHandler _lexHandler) - { - this.m_lexHandler = _lexHandler; - } - - /** - * Sets the SAX ContentHandler. - * @param _saxHandler The ContentHandler to set - */ - public void setContentHandler(ContentHandler _saxHandler) - { - this.m_saxHandler = _saxHandler; - if (m_lexHandler == null && _saxHandler instanceof LexicalHandler) - { - // we are not overwriting an existing LexicalHandler, and _saxHandler - // is also implements LexicalHandler, so lets use it - m_lexHandler = (LexicalHandler) _saxHandler; - } - } - - /** - * Does nothing. The setting of CDATA section elements has an impact on - * stream serializers. - * @see SerializationHandler#setCdataSectionElements(java.util.Vector) - */ - public void setCdataSectionElements(Vector URI_and_localNames) - { - // do nothing - } - - /** Set whether or not namespace declarations (e.g. - * xmlns:foo) should appear as attributes of - * elements - * @param doOutputNSAttr whether or not namespace declarations - * should appear as attributes - */ - public void setShouldOutputNSAttr(boolean doOutputNSAttr) - { - m_shouldGenerateNSAttribute = doOutputNSAttr; - } - - /** - * Returns true if namespace declarations from calls such as - * startPrefixMapping("prefix1","uri1") should - * also be mirrored with self generated additional attributes of elements - * that declare the namespace, for example the attribute xmlns:prefix1="uri1" - */ - boolean getShouldOutputNSAttr() - { - return m_shouldGenerateNSAttribute; - } - - /** - * This method flushes any pending events, which can be startDocument() - * closing the opening tag of an element, or closing an open CDATA section. - */ - public void flushPending() throws SAXException - { - - if (m_needToCallStartDocument) - { - startDocumentInternal(); - m_needToCallStartDocument = false; - } - - if (m_elemContext.m_startTagOpen) - { - closeStartTag(); - m_elemContext.m_startTagOpen = false; - } - - if (m_cdataTagOpen) - { - closeCDATA(); - m_cdataTagOpen = false; - } - - } - - /** - * Pass in a reference to a TransformState object, which - * can be used during SAX ContentHandler events to obtain - * information about he state of the transformation. This - * method will be called before each startDocument event. - * - * @param ts A reference to a TransformState object - */ - public void setTransformState(TransformStateSetter ts) { - this.m_state = ts; - } - - /** - * Receives notification that an element starts, but attributes are not - * fully known yet. - * - * @param uri the URI of the namespace of the element (optional) - * @param localName the element name, but without prefix (optional) - * @param qName the element name, with prefix, if any (required) - * - * @see ExtendedContentHandler#startElement(String, String, String) - */ - public void startElement(String uri, String localName, String qName) - throws SAXException { - - if (m_state != null) { - m_state.resetState(getTransformer()); - } - - // fire off the start element event - if (m_tracer != null) - super.fireStartElem(qName); - } - - /** - * An element starts, but attributes are not fully known yet. - * - * @param qName the element name, with prefix (if any). - - * @see ExtendedContentHandler#startElement(String) - */ - public void startElement(String qName) throws SAXException { - if (m_state != null) { - m_state.resetState(getTransformer()); - } - // fire off the start element event - if (m_tracer != null) - super.fireStartElem(qName); - } - - /** - * This method gets the node's value as a String and uses that String as if - * it were an input character notification. - * @param node the Node to serialize - * @throws org.xml.sax.SAXException - */ - public void characters(org.w3c.dom.Node node) - throws org.xml.sax.SAXException - { - // remember the current node - if (m_state != null) - { - m_state.setCurrentNode(node); - } - - // Get the node's value as a String and use that String as if - // it were an input character notification. - String data = node.getNodeValue(); - if (data != null) { - this.characters(data); - } - } - - /** - * @see org.xml.sax.ErrorHandler#fatalError(SAXParseException) - */ - public void fatalError(SAXParseException exc) throws SAXException { - super.fatalError(exc); - - m_needToCallStartDocument = false; - - if (m_saxHandler instanceof ErrorHandler) { - ((ErrorHandler)m_saxHandler).fatalError(exc); - } - } - - /** - * @see org.xml.sax.ErrorHandler#error(SAXParseException) - */ - public void error(SAXParseException exc) throws SAXException { - super.error(exc); - - if (m_saxHandler instanceof ErrorHandler) - ((ErrorHandler)m_saxHandler).error(exc); - - } - - /** - * @see org.xml.sax.ErrorHandler#warning(SAXParseException) - */ - public void warning(SAXParseException exc) throws SAXException { - super.warning(exc); - - if (m_saxHandler instanceof ErrorHandler) - ((ErrorHandler)m_saxHandler).warning(exc); - } - - - /** - * Try's to reset the super class and reset this class for - * re-use, so that you don't need to create a new serializer - * (mostly for performance reasons). - * - * @return true if the class was successfuly reset. - * @see Serializer#reset() - */ - public boolean reset() - { - boolean wasReset = false; - if (super.reset()) - { - resetToSAXHandler(); - wasReset = true; - } - return wasReset; - } - - /** - * Reset all of the fields owned by ToSAXHandler class - * - */ - private void resetToSAXHandler() - { - this.m_lexHandler = null; - this.m_saxHandler = null; - this.m_state = null; - this.m_shouldGenerateNSAttribute = false; - } - - /** - * Add a unique attribute - */ - public void addUniqueAttribute(String qName, String value, int flags) - throws SAXException - { - addAttribute(qName, value); - } -} |