[ 
https://issues.apache.org/jira/browse/XERCESJ-1754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17677606#comment-17677606
 ] 

Radu Coravu commented on XERCESJ-1754:
--------------------------------------

Hi Mukul, I agree with your analysis. I think one reason we reuse the parser is 
for parsing the XML schema references only once as they will remain as 
information inside the parser. We could have probably used a grammar pool 
instead.
We have a patched version of Xerces on our side and I commented out this entire 
code in the XMLSchemaValidator

{code}//        boolean parser_settings;
//        try {
//            parser_settings = componentManager.getFeature(PARSER_SETTINGS);
//        }
//        catch (XMLConfigurationException e){
//            parser_settings = true;
//        }
//
//        if (!parser_settings) {
//            // parser settings have not been changed
//            fValidationManager.addValidationState(fValidationState);
//            // the node limit on the SecurityManager may have changed so need 
to refresh.
//            nodeFactory.reset();
//            // Re-parse external schema location properties.
//            XMLSchemaLoader.processExternalHints(
//                fExternalSchemas,
//                fExternalNoNamespaceSchema,
//                fLocationPairs,
//                fXSIErrorReporter.fErrorReporter);
//            return;
//        }{code}

> XMLSchemaValidator reset no longer resets id validation caches
> --------------------------------------------------------------
>
>                 Key: XERCESJ-1754
>                 URL: https://issues.apache.org/jira/browse/XERCESJ-1754
>             Project: Xerces2-J
>          Issue Type: Bug
>          Components: XML Schema 1.1 Structures
>            Reporter: Radu Coravu
>            Priority: Major
>         Attachments: test.xml, test.xsd
>
>
> I validate an XML with an XML Schema 1.1 file.
> On the first validation the XML is reported valid.
> On the second validation I re-use the parser, the ID values inside elements 
> are reported as duplicate and I get errors like this reported:
> {code}Message: cvc-type.3.1.3: The value 'thing122' of element 'uid' is not 
> valid.{code}
> Looking at the method 
> org.apache.xerces.impl.xs.XMLSchemaValidator.reset(XMLComponentManager), 
> there is a fast return inside it:
> {code}        if (!parser_settings) {
>             // parser settings have not been changed
>             fValidationManager.addValidationState(fValidationState);
>             // the node limit on the SecurityManager may have changed so need 
> to refresh.
>             nodeFactory.reset();
>             // Re-parse external schema location properties.
>             XMLSchemaLoader.processExternalHints(
>                 fExternalSchemas,
>                 fExternalNoNamespaceSchema,
>                 fLocationPairs,
>                 fXSIErrorReporter.fErrorReporter);
>             return;
>         }{code}
> and this means all the code which for example cleared the IDs cache:
> {code}        // reset ID Context
>         if (fIDContext != null) {
>             fIDContext.clear();
>         }{code}
> is no longer executed.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: j-dev-unsubscr...@xerces.apache.org
For additional commands, e-mail: j-dev-h...@xerces.apache.org

Reply via email to