You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by sa...@apache.org on 2003/03/03 20:15:32 UTC
cvs commit: xml-xerces/java/src/org/apache/xerces/impl/xs XMLSchemaLoader.java XMLSchemaValidator.java
sandygao 2003/03/03 11:15:32
Modified: java/src/org/apache/xerces/impl/xs XMLSchemaLoader.java
XMLSchemaValidator.java
Log:
Fixing a bug in using the Schema Decl Pool.
When a grammar is preparsed, even if there is no grammar pool, we still can't
use a decl pool, because the application might store the grammar somewhere,
and the decl objects shouldn't be recycled by the decl pool.
Now the decl pool is only used when the schema loader is called by the schema
validator, and no grammar pool is set.
Revision Changes Path
1.17 +16 -9 xml-xerces/java/src/org/apache/xerces/impl/xs/XMLSchemaLoader.java
Index: XMLSchemaLoader.java
===================================================================
RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/xs/XMLSchemaLoader.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- XMLSchemaLoader.java 29 Jan 2003 15:06:32 -0000 1.16
+++ XMLSchemaLoader.java 3 Mar 2003 19:15:31 -0000 1.17
@@ -451,24 +451,31 @@
XMLErrorReporter.SEVERITY_WARNING);
}
}
- fCMBuilder.setDeclPool(null);
- } else {
- fDeclPool.reset();
- fCMBuilder.setDeclPool(fDeclPool);
}
-
- fSchemaHandler.reset(fErrorReporter, fEntityResolver,
- fSymbolTable, fGrammarPool, fAllowJavaEncodings, fStrictURI);
- if(fGrammarPool == null) {
+
+ if (useDeclPool) {
fDeclPool.reset();
+ fCMBuilder.setDeclPool(fDeclPool);
fSchemaHandler.setDeclPool(fDeclPool);
} else {
+ fCMBuilder.setDeclPool(null);
fSchemaHandler.setDeclPool(null);
}
+
+ fSchemaHandler.reset(fErrorReporter, fEntityResolver,
+ fSymbolTable, fGrammarPool, fAllowJavaEncodings, fStrictURI);
fSubGroupHandler.reset();
fJAXPProcessed = false;
} // reset()
+ // useDeclPool is only set to true when the validator invokes the loader,
+ // and there is no grammar pool. that is, the grammar will never be
+ // exposed to the application.
+ private boolean useDeclPool = false;
+ public void setUseDeclPool(boolean use) {
+ useDeclPool = use;
+ }
+
/**
* Returns a Grammar object by parsing the contents of the
* entity pointed to by source.
1.134 +5 -1 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.133
retrieving revision 1.134
diff -u -r1.133 -r1.134
--- XMLSchemaValidator.java 23 Jan 2003 17:27:11 -0000 1.133
+++ XMLSchemaValidator.java 3 Mar 2003 19:15:31 -0000 1.134
@@ -1363,6 +1363,10 @@
fGrammarPool = null;
}
fSchemaLoader.setProperty(XMLGRAMMAR_POOL, fGrammarPool);
+ // only set useDeclPool to true when the validator invokes the loader,
+ // and there is no grammar pool. that is, the grammar will never be
+ // exposed to the application.
+ fSchemaLoader.setUseDeclPool(fGrammarPool == null);
// Copy the allow-java-encoding feature to the grammar loader.
// REVISIT: what other fetures/properties do we want to copy?
---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org