elena 2002/08/16 11:08:38 Modified: java/src/org/apache/xerces/impl XMLDocumentFragmentScannerImpl.java XMLNamespaceBinder.java java/src/org/apache/xerces/impl/dtd XMLDTDValidator.java java/src/org/apache/xerces/impl/xs XMLSchemaValidator.java java/src/org/apache/xerces/parsers AbstractXMLDocumentParser.java DTDConfiguration.java StandardParserConfiguration.java java/src/org/apache/xerces/xni XMLDocumentHandler.java java/src/org/apache/xerces/xni/parser XMLDocumentFilter.java XMLDocumentSource.java Log: Change XNI to include XMLDocumentHandler.setDocumentSource/getDocumentSource and XMLDocumentSource.getDocumentHandler. This change allows us to modify the pipeline dynamically, in particular we now remove DTDValidator if no DTD grammar is available. This change improves parsing performance by 7%-12% for medium size files (100k-1M). Revision Changes Path 1.15 +7 -1 xml-xerces/java/src/org/apache/xerces/impl/XMLDocumentFragmentScannerImpl.java Index: XMLDocumentFragmentScannerImpl.java =================================================================== RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/XMLDocumentFragmentScannerImpl.java,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- XMLDocumentFragmentScannerImpl.java 13 Aug 2002 22:57:08 -0000 1.14 +++ XMLDocumentFragmentScannerImpl.java 16 Aug 2002 18:08:37 -0000 1.15 @@ -484,6 +484,12 @@ fDocumentHandler = documentHandler; } // setDocumentHandler(XMLDocumentHandler) + + /** Returns the document handler */ + public XMLDocumentHandler getDocumentHandler(){ + return fDocumentHandler; + } + // // XMLEntityHandler methods // 1.21 +22 -6 xml-xerces/java/src/org/apache/xerces/impl/XMLNamespaceBinder.java Index: XMLNamespaceBinder.java =================================================================== RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/XMLNamespaceBinder.java,v retrieving revision 1.20 retrieving revision 1.21 diff -u -r1.20 -r1.21 --- XMLNamespaceBinder.java 14 Aug 2002 22:51:08 -0000 1.20 +++ XMLNamespaceBinder.java 16 Aug 2002 18:08:37 -0000 1.21 @@ -78,6 +78,7 @@ import org.apache.xerces.xni.parser.XMLComponent; import org.apache.xerces.xni.parser.XMLComponentManager; import org.apache.xerces.xni.parser.XMLConfigurationException; +import org.apache.xerces.xni.parser.XMLDocumentSource; import org.apache.xerces.xni.parser.XMLDocumentFilter; /** @@ -156,6 +157,8 @@ /** Document handler. */ protected XMLDocumentHandler fDocumentHandler; + protected XMLDocumentSource fDocumentSource; + // namespaces /** Namespace support. */ @@ -346,18 +349,31 @@ // XMLDocumentSource methods // - /** - * Sets the document handler to receive information about the document. - * - * @param documentHandler The document handler. - */ + /** Sets the document handler to receive information about the document. */ public void setDocumentHandler(XMLDocumentHandler documentHandler) { fDocumentHandler = documentHandler; } // setDocumentHandler(XMLDocumentHandler) + /** Returns the document handler */ + public XMLDocumentHandler getDocumentHandler() { + return fDocumentHandler; + } // setDocumentHandler(XMLDocumentHandler) + + // // XMLDocumentHandler methods // + + /** Sets the document source */ + public void setDocumentSource(XMLDocumentSource source){ + fDocumentSource = source; + } // setDocumentSource + + /** Returns the document source */ + public XMLDocumentSource getDocumentSource (){ + return fDocumentSource; + } // getDocumentSource + /** * This method notifies the start of a general entity. 1.30 +25 -7 xml-xerces/java/src/org/apache/xerces/impl/dtd/XMLDTDValidator.java Index: XMLDTDValidator.java =================================================================== RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/dtd/XMLDTDValidator.java,v retrieving revision 1.29 retrieving revision 1.30 diff -u -r1.29 -r1.30 --- XMLDTDValidator.java 13 Aug 2002 22:57:09 -0000 1.29 +++ XMLDTDValidator.java 16 Aug 2002 18:08:37 -0000 1.30 @@ -88,6 +88,7 @@ import org.apache.xerces.xni.parser.XMLComponent; import org.apache.xerces.xni.parser.XMLComponentManager; import org.apache.xerces.xni.parser.XMLConfigurationException; +import org.apache.xerces.xni.parser.XMLDocumentSource; import org.apache.xerces.xni.parser.XMLDocumentFilter; import java.util.Enumeration; @@ -261,6 +262,7 @@ /** Document handler. */ protected XMLDocumentHandler fDocumentHandler; + protected XMLDocumentSource fDocumentSource; // grammars /** DTD Grammar. */ @@ -559,19 +561,31 @@ // XMLDocumentSource methods // - /** - * Sets the document handler to receive information about the document. - * - * @param documentHandler The document handler. - */ + /** Sets the document handler to receive information about the document. */ public void setDocumentHandler(XMLDocumentHandler documentHandler) { fDocumentHandler = documentHandler; } // setDocumentHandler(XMLDocumentHandler) + /** Returns the document handler */ + public XMLDocumentHandler getDocumentHandler() { + return fDocumentHandler; + } // setDocumentHandler(XMLDocumentHandler) + + // // XMLDocumentHandler methods // + /** Sets the document source */ + public void setDocumentSource(XMLDocumentSource source){ + fDocumentSource = source; + } // setDocumentSource + + /** Returns the document source */ + public XMLDocumentSource getDocumentSource (){ + return fDocumentSource; + } // getDocumentSource + /** * The start of the document. * @@ -708,7 +722,6 @@ throws XNIException { handleStartElement(element, attributes); - // call handlers if (fDocumentHandler != null) { fDocumentHandler.startElement(element, attributes, augs); @@ -1800,6 +1813,11 @@ "MSG_GRAMMAR_NOT_FOUND", new Object[]{ element.rawname}, XMLErrorReporter.SEVERITY_ERROR); + } + // modify pipeline + if (fDocumentSource !=null ) { + fDocumentSource.setDocumentHandler(fDocumentHandler); + return; } } else { 1.82 +20 -6 xml-xerces/java/src/org/apache/xerces/impl/xs/XMLSchemaValidator.java Index: XMLSchemaValidator.java =================================================================== RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/xs/XMLSchemaValidator.java,v retrieving revision 1.81 retrieving revision 1.82 diff -u -r1.81 -r1.82 --- XMLSchemaValidator.java 14 Aug 2002 22:51:08 -0000 1.81 +++ XMLSchemaValidator.java 16 Aug 2002 18:08:37 -0000 1.82 @@ -97,6 +97,7 @@ import org.apache.xerces.xni.parser.XMLComponent; import org.apache.xerces.xni.parser.XMLComponentManager; import org.apache.xerces.xni.parser.XMLConfigurationException; +import org.apache.xerces.xni.parser.XMLDocumentSource; import org.apache.xerces.xni.parser.XMLEntityResolver; import org.apache.xerces.xni.parser.XMLInputSource; @@ -380,6 +381,7 @@ /** Document handler. */ protected XMLDocumentHandler fDocumentHandler; + protected XMLDocumentSource fDocumentSource; // // XMLComponent methods @@ -445,18 +447,30 @@ // XMLDocumentSource methods // - /** - * Sets the document handler to receive information about the document. - * - * @param documentHandler The document handler. - */ + /** Sets the document handler to receive information about the document. */ public void setDocumentHandler(XMLDocumentHandler documentHandler) { fDocumentHandler = documentHandler; } // setDocumentHandler(XMLDocumentHandler) + /** Returns the document handler */ + public XMLDocumentHandler getDocumentHandler() { + return fDocumentHandler; + } // setDocumentHandler(XMLDocumentHandler) + + // // XMLDocumentHandler methods // + + /** Sets the document source */ + public void setDocumentSource(XMLDocumentSource source){ + fDocumentSource = source; + } // setDocumentSource + + /** Returns the document source */ + public XMLDocumentSource getDocumentSource (){ + return fDocumentSource; + } // getDocumentSource /** * The start of the document. 1.13 +15 -1 xml-xerces/java/src/org/apache/xerces/parsers/AbstractXMLDocumentParser.java Index: AbstractXMLDocumentParser.java =================================================================== RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/parsers/AbstractXMLDocumentParser.java,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- AbstractXMLDocumentParser.java 7 May 2002 19:29:04 -0000 1.12 +++ AbstractXMLDocumentParser.java 16 Aug 2002 18:08:38 -0000 1.13 @@ -70,6 +70,7 @@ import org.apache.xerces.xni.XMLString; import org.apache.xerces.xni.XNIException; import org.apache.xerces.xni.parser.XMLParserConfiguration; +import org.apache.xerces.xni.parser.XMLDocumentSource; import org.xml.sax.InputSource; import org.xml.sax.SAXException; @@ -99,6 +100,9 @@ /** True if inside DTD. */ protected boolean fInDTD; + /** Document source*/ + protected XMLDocumentSource fDocumentSource; + // // Constructors // @@ -391,6 +395,16 @@ throws XNIException { } // processingInstruction(String, XMLString, Augmentations) + + /** Sets the document source */ + public void setDocumentSource(XMLDocumentSource source){ + fDocumentSource = source; + } // setDocumentSource + + /** Returns the document source */ + public XMLDocumentSource getDocumentSource (){ + return fDocumentSource; + } // getDocumentSource // // XMLDTDHandler methods // 1.5 +6 -1 xml-xerces/java/src/org/apache/xerces/parsers/DTDConfiguration.java Index: DTDConfiguration.java =================================================================== RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/parsers/DTDConfiguration.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- DTDConfiguration.java 10 Jun 2002 23:50:27 -0000 1.4 +++ DTDConfiguration.java 16 Aug 2002 18:08:38 -0000 1.5 @@ -80,6 +80,7 @@ import org.apache.xerces.xni.parser.XMLComponentManager; import org.apache.xerces.xni.parser.XMLConfigurationException; import org.apache.xerces.xni.parser.XMLDocumentScanner; +import org.apache.xerces.xni.parser.XMLDocumentSource; import org.apache.xerces.xni.parser.XMLDTDScanner; import org.apache.xerces.xni.parser.XMLInputSource; import org.apache.xerces.xni.parser.XMLPullParserConfiguration; @@ -638,12 +639,16 @@ // setup document pipeline if (fDTDValidator != null) { fScanner.setDocumentHandler(fDTDValidator); + // filters fDTDValidator.setDocumentHandler(fNamespaceBinder); + fDTDValidator.setDocumentSource(fScanner); fNamespaceBinder.setDocumentHandler(fDocumentHandler); + fNamespaceBinder.setDocumentSource(fDTDValidator); } else { fScanner.setDocumentHandler(fNamespaceBinder); fNamespaceBinder.setDocumentHandler(fDocumentHandler); + fNamespaceBinder.setDocumentSource(fDTDValidator); } fLastComponent = fNamespaceBinder; 1.23 +5 -2 xml-xerces/java/src/org/apache/xerces/parsers/StandardParserConfiguration.java Index: StandardParserConfiguration.java =================================================================== RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/parsers/StandardParserConfiguration.java,v retrieving revision 1.22 retrieving revision 1.23 diff -u -r1.22 -r1.23 --- StandardParserConfiguration.java 3 Apr 2002 14:55:50 -0000 1.22 +++ StandardParserConfiguration.java 16 Aug 2002 18:08:38 -0000 1.23 @@ -69,6 +69,7 @@ import org.apache.xerces.xni.XNIException; import org.apache.xerces.xni.parser.XMLConfigurationException; import org.apache.xerces.xni.parser.XMLComponentManager; +import org.apache.xerces.xni.parser.XMLDocumentSource; import org.apache.xerces.xni.parser.XMLInputSource; /** @@ -235,7 +236,9 @@ } fLastComponent = fSchemaValidator; fNamespaceBinder.setDocumentHandler(fSchemaValidator); - fSchemaValidator.setDocumentHandler(fDocumentHandler); + + fSchemaValidator.setDocumentHandler(fDocumentHandler); + fSchemaValidator.setDocumentSource(fNamespaceBinder); } 1.7 +11 -1 xml-xerces/java/src/org/apache/xerces/xni/XMLDocumentHandler.java Index: XMLDocumentHandler.java =================================================================== RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/xni/XMLDocumentHandler.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- XMLDocumentHandler.java 29 Jan 2002 01:15:19 -0000 1.6 +++ XMLDocumentHandler.java 16 Aug 2002 18:08:38 -0000 1.7 @@ -57,6 +57,8 @@ package org.apache.xerces.xni; +import org.apache.xerces.xni.parser.XMLDocumentSource; + /** * The document handler interface defines callback methods to report * information items in XML documents. Parser components interested in @@ -335,5 +337,13 @@ * Thrown by handler to signal an error. */ public void endDocument(Augmentations augs) throws XNIException; + + + /** Sets the document source. */ + public void setDocumentSource(XMLDocumentSource source); + + + /** Returns the document source. */ + public XMLDocumentSource getDocumentSource(); } // interface XMLDocumentHandler 1.3 +2 -1 xml-xerces/java/src/org/apache/xerces/xni/parser/XMLDocumentFilter.java Index: XMLDocumentFilter.java =================================================================== RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/xni/parser/XMLDocumentFilter.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- XMLDocumentFilter.java 29 Jan 2002 01:15:19 -0000 1.2 +++ XMLDocumentFilter.java 16 Aug 2002 18:08:38 -0000 1.3 @@ -70,4 +70,5 @@ public interface XMLDocumentFilter extends XMLDocumentHandler, XMLDocumentSource { + } // interface XMLDocumentFilter 1.4 +4 -1 xml-xerces/java/src/org/apache/xerces/xni/parser/XMLDocumentSource.java Index: XMLDocumentSource.java =================================================================== RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/xni/parser/XMLDocumentSource.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- XMLDocumentSource.java 29 Jan 2002 01:15:19 -0000 1.3 +++ XMLDocumentSource.java 16 Aug 2002 18:08:38 -0000 1.4 @@ -81,4 +81,7 @@ /** Sets the document handler. */ public void setDocumentHandler(XMLDocumentHandler handler); + /** Returns the document handler */ + public XMLDocumentHandler getDocumentHandler(); + } // interface XMLDocumentSource
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]