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]

Reply via email to