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]