elena 2003/11/07 11:47:13
Modified: java/src/org/apache/xerces/parsers
NonValidatingConfiguration.java
Log:
Improve a bit performance of NonValidatingConfiguration -- so it recognizes the
special
internal/parser-settings feature.
Revision Changes Path
1.10 +41 -23
xml-xerces/java/src/org/apache/xerces/parsers/NonValidatingConfiguration.java
Index: NonValidatingConfiguration.java
===================================================================
RCS file:
/home/cvs/xml-xerces/java/src/org/apache/xerces/parsers/NonValidatingConfiguration.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- NonValidatingConfiguration.java 8 May 2003 20:11:58 -0000 1.9
+++ NonValidatingConfiguration.java 7 Nov 2003 19:47:13 -0000 1.10
@@ -223,8 +223,6 @@
/** DTD scanner. */
protected XMLDTDScanner fDTDScanner;
- /** Namespace binder. */
- protected XMLNamespaceBinder fNamespaceBinder;
protected ValidationManager fValidationManager;
@@ -235,6 +233,12 @@
/** Default Xerces implementation of scanner*/
private XMLDocumentScannerImpl fNonNSScanner;
+
+
+ /** fConfigUpdated is set to true if there has been any change to the
configuration settings,
+ * i.e a feature or a property was changed.
+ */
+ protected boolean fConfigUpdated = false;
// state
@@ -301,7 +305,9 @@
super(symbolTable, parentSettings);
// add default recognized features
- final String[] recognizedFeatures = {
+ final String[] recognizedFeatures = {
+ PARSER_SETTINGS,
+ NAMESPACES,
//WARN_ON_DUPLICATE_ATTDEF, // from XMLDTDScannerImpl
//WARN_ON_UNDECLARED_ELEMDEF, // from XMLDTDScannerImpl
//ALLOW_JAVA_ENCODINGS, // from XMLEntityManager
@@ -317,7 +323,9 @@
//setFeature(WARN_ON_DUPLICATE_ATTDEF, false); // from XMLDTDScannerImpl
//setFeature(WARN_ON_UNDECLARED_ELEMDEF, false); // from
XMLDTDScannerImpl
//setFeature(ALLOW_JAVA_ENCODINGS, false); // from XMLEntityManager
- setFeature(CONTINUE_AFTER_FATAL_ERROR, false);
+ fFeatures.put(CONTINUE_AFTER_FATAL_ERROR, Boolean.FALSE);
+ fFeatures.put(PARSER_SETTINGS, Boolean.TRUE);
+ fFeatures.put(NAMESPACES, Boolean.TRUE);
//setFeature(LOAD_EXTERNAL_DTD, true); // from XMLDTDScannerImpl
//setFeature(NOTIFY_BUILTIN_REFS, false); // from
XMLDocumentFragmentScannerImpl
//setFeature(NOTIFY_CHAR_REFS, false); // from
XMLDocumentFragmentScannerImpl
@@ -339,16 +347,16 @@
fGrammarPool = grammarPool;
if(fGrammarPool != null){
- setProperty(XMLGRAMMAR_POOL, fGrammarPool);
+ fProperties.put(XMLGRAMMAR_POOL, fGrammarPool);
}
fEntityManager = createEntityManager();
- setProperty(ENTITY_MANAGER, fEntityManager);
+ fProperties.put(ENTITY_MANAGER, fEntityManager);
addComponent(fEntityManager);
fErrorReporter = createErrorReporter();
fErrorReporter.setDocumentLocator(fEntityManager.getEntityScanner());
- setProperty(ERROR_REPORTER, fErrorReporter);
+ fProperties.put(ERROR_REPORTER, fErrorReporter);
addComponent(fErrorReporter);
// this configuration delays creation of the scanner
@@ -356,27 +364,21 @@
fDTDScanner = createDTDScanner();
if (fDTDScanner != null) {
- setProperty(DTD_SCANNER, fDTDScanner);
+ fProperties.put(DTD_SCANNER, fDTDScanner);
if (fDTDScanner instanceof XMLComponent) {
addComponent((XMLComponent)fDTDScanner);
}
}
- fNamespaceBinder = createNamespaceBinder();
- if (fNamespaceBinder != null) {
- setProperty(NAMESPACE_BINDER, fNamespaceBinder);
- addComponent(fNamespaceBinder);
- }
-
fDatatypeValidatorFactory = createDatatypeValidatorFactory();
if (fDatatypeValidatorFactory != null) {
- setProperty(DATATYPE_VALIDATOR_FACTORY,
+ fProperties.put(DATATYPE_VALIDATOR_FACTORY,
fDatatypeValidatorFactory);
}
fValidationManager = createValidationManager();
if (fValidationManager != null) {
- setProperty (VALIDATION_MANAGER, fValidationManager);
+ fProperties.put(VALIDATION_MANAGER, fValidationManager);
}
// add message formatters
if (fErrorReporter.getMessageFormatter(XMLMessageFormatter.XML_DOMAIN) ==
null) {
@@ -384,6 +386,8 @@
fErrorReporter.putMessageFormatter(XMLMessageFormatter.XML_DOMAIN,
xmft);
fErrorReporter.putMessageFormatter(XMLMessageFormatter.XMLNS_DOMAIN,
xmft);
}
+
+ fConfigUpdated = false;
// set locale
try {
@@ -399,7 +403,17 @@
//
// Public methods
//
-
+ public void setFeature(String featureId, boolean state)
+ throws XMLConfigurationException {
+ fConfigUpdated = true;
+ super.setFeature(featureId, state);
+ }
+
+ public void setProperty(String propertyId, Object value)
+ throws XMLConfigurationException {
+ fConfigUpdated = true;
+ super.setProperty(propertyId, value);
+ }
/**
* Set the locale to use for messages.
*
@@ -412,7 +426,16 @@
super.setLocale(locale);
fErrorReporter.setLocale(locale);
} // setLocale(Locale)
+
+ public boolean getFeature(String featureId)
+ throws XMLConfigurationException {
+ // make this feature special
+ if (featureId.equals(PARSER_SETTINGS)){
+ return fConfigUpdated;
+ }
+ return super.getFeature(featureId);
+ } // getFeature(String):boolean
//
// XMLPullParserConfiguration methods
//
@@ -772,11 +795,6 @@
protected XMLDTDScanner createDTDScanner() {
return new XMLDTDScannerImpl();
} // createDTDScanner():XMLDTDScanner
-
- /** Create a namespace binder. */
- protected XMLNamespaceBinder createNamespaceBinder() {
- return null;
- } // createNamespaceBinder():XMLNamespaceBinder
/** Create a datatype validator factory. */
protected DTDDVFactory createDatatypeValidatorFactory() {
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]