mrglavas 2005/06/20 12:50:56
Modified: java/src/org/apache/xerces/jaxp SAXParserImpl.java
DocumentBuilderImpl.java
Log:
Plugging in JAXPValidatorComponent to support validation with third party
Schema implementations.
Revision Changes Path
1.32 +18 -9
xml-xerces/java/src/org/apache/xerces/jaxp/SAXParserImpl.java
Index: SAXParserImpl.java
===================================================================
RCS file:
/home/cvs/xml-xerces/java/src/org/apache/xerces/jaxp/SAXParserImpl.java,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -r1.31 -r1.32
--- SAXParserImpl.java 20 Jun 2005 04:47:59 -0000 1.31
+++ SAXParserImpl.java 20 Jun 2005 19:50:56 -0000 1.32
@@ -32,9 +32,11 @@
import org.apache.xerces.jaxp.validation.XSGrammarPoolContainer;
import org.apache.xerces.util.SAXMessageFormatter;
import org.apache.xerces.util.SecurityManager;
+import org.apache.xerces.xni.XMLDocumentHandler;
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.XMLParserConfiguration;
import org.apache.xerces.xs.AttributePSVI;
import org.apache.xerces.xs.ElementPSVI;
@@ -156,17 +158,24 @@
// Get the Schema object from the factory
this.grammar = spf.getSchema();
if (grammar != null) {
+ XMLParserConfiguration config =
xmlReader.getXMLParserConfiguration();
+ XMLComponent validatorComponent = null;
+ /** For Xerces grammars, use built-in schema validator. **/
if (grammar instanceof XSGrammarPoolContainer) {
- XMLParserConfiguration config =
xmlReader.getXMLParserConfiguration();
- XMLSchemaValidator validator = new XMLSchemaValidator();
-
config.addRecognizedFeatures(validator.getRecognizedFeatures());
-
config.addRecognizedProperties(validator.getRecognizedProperties());
- config.setDocumentHandler(validator);
- validator.setDocumentHandler(xmlReader);
- xmlReader.setDocumentSource(validator);
- fSchemaValidator = validator;
+ validatorComponent = new XMLSchemaValidator();
fSchemaValidatorComponentManager = new
SchemaValidatorConfiguration(config, (XSGrammarPoolContainer) grammar);
}
+ /** For third party grammars, use the JAXP validator component.
**/
+ else {
+ validatorComponent = new
JAXPValidatorComponent(grammar.newValidatorHandler());
+ fSchemaValidatorComponentManager = config;
+ }
+
config.addRecognizedFeatures(validatorComponent.getRecognizedFeatures());
+
config.addRecognizedProperties(validatorComponent.getRecognizedProperties());
+ config.setDocumentHandler((XMLDocumentHandler)
validatorComponent);
+
((XMLDocumentSource)validatorComponent).setDocumentHandler(xmlReader);
+ xmlReader.setDocumentSource((XMLDocumentSource)
validatorComponent);
+ fSchemaValidator = validatorComponent;
}
// Initial EntityResolver
1.32 +18 -9
xml-xerces/java/src/org/apache/xerces/jaxp/DocumentBuilderImpl.java
Index: DocumentBuilderImpl.java
===================================================================
RCS file:
/home/cvs/xml-xerces/java/src/org/apache/xerces/jaxp/DocumentBuilderImpl.java,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -r1.31 -r1.32
--- DocumentBuilderImpl.java 20 Jun 2005 04:47:59 -0000 1.31
+++ DocumentBuilderImpl.java 20 Jun 2005 19:50:56 -0000 1.32
@@ -30,9 +30,11 @@
import org.apache.xerces.jaxp.validation.XSGrammarPoolContainer;
import org.apache.xerces.parsers.DOMParser;
import org.apache.xerces.util.SecurityManager;
+import org.apache.xerces.xni.XMLDocumentHandler;
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.XMLParserConfiguration;
import org.w3c.dom.DOMImplementation;
import org.w3c.dom.Document;
@@ -149,17 +151,24 @@
this.grammar = dbf.getSchema();
if (grammar != null) {
+ XMLParserConfiguration config =
domParser.getXMLParserConfiguration();
+ XMLComponent validatorComponent = null;
+ /** For Xerces grammars, use built-in schema validator. **/
if (grammar instanceof XSGrammarPoolContainer) {
- XMLParserConfiguration config =
domParser.getXMLParserConfiguration();
- XMLSchemaValidator validator = new XMLSchemaValidator();
-
config.addRecognizedFeatures(validator.getRecognizedFeatures());
-
config.addRecognizedProperties(validator.getRecognizedProperties());
- config.setDocumentHandler(validator);
- validator.setDocumentHandler(domParser);
- domParser.setDocumentSource(validator);
- fSchemaValidator = validator;
+ validatorComponent = new XMLSchemaValidator();
fSchemaValidatorComponentManager = new
SchemaValidatorConfiguration(config, (XSGrammarPoolContainer) grammar);
}
+ /** For third party grammars, use the JAXP validator component.
**/
+ else {
+ validatorComponent = new
JAXPValidatorComponent(grammar.newValidatorHandler());
+ fSchemaValidatorComponentManager = config;
+ }
+
config.addRecognizedFeatures(validatorComponent.getRecognizedFeatures());
+
config.addRecognizedProperties(validatorComponent.getRecognizedProperties());
+ config.setDocumentHandler((XMLDocumentHandler)
validatorComponent);
+
((XMLDocumentSource)validatorComponent).setDocumentHandler(domParser);
+ domParser.setDocumentSource((XMLDocumentSource)
validatorComponent);
+ fSchemaValidator = validatorComponent;
}
// Set features
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]