in src/org/apache/xerces/xinclude/XIncludeHandler.java [386:590]
public void reset(XMLComponentManager componentManager)
throws XNIException {
fNamespaceContext = null;
fDepth = 0;
fResultDepth = isRootDocument() ? 0 : fParentXIncludeHandler.getResultDepth();
fNotations.clear();
fUnparsedEntities.clear();
fParentRelativeURI = null;
fIsXML11 = false;
fInDTD = false;
fSeenRootElement = false;
fBaseURIScope.clear();
fBaseURI.clear();
fLiteralSystemID.clear();
fExpandedSystemID.clear();
fLanguageScope.clear();
fLanguageStack.clear();
// REVISIT: Find a better method for maintaining
// the state of the XInclude processor. These arrays
// can potentially grow quite large. Cleaning them
// out on reset may be very time consuming. -- mrglavas
//
// clear the previous settings from the arrays
for (int i = 0; i < fState.length; ++i) {
fState[i] = STATE_NORMAL_PROCESSING;
}
for (int i = 0; i < fSawFallback.length; ++i) {
fSawFallback[i] = false;
}
for (int i = 0; i < fSawInclude.length; ++i) {
fSawInclude[i] = false;
}
try {
if (!componentManager.getFeature(PARSER_SETTINGS)) {
// if parser settings have not changed return.
return;
}
}
catch (XMLConfigurationException e) {}
// parser settings changed. Need to refresh features on child config.
fNeedCopyFeatures = true;
try {
fSendUEAndNotationEvents =
componentManager.getFeature(ALLOW_UE_AND_NOTATION_EVENTS);
if (fChildConfig != null) {
fChildConfig.setFeature(
ALLOW_UE_AND_NOTATION_EVENTS,
fSendUEAndNotationEvents);
}
}
catch (XMLConfigurationException e) {
}
try {
fFixupBaseURIs =
componentManager.getFeature(XINCLUDE_FIXUP_BASE_URIS);
if (fChildConfig != null) {
fChildConfig.setFeature(
XINCLUDE_FIXUP_BASE_URIS,
fFixupBaseURIs);
}
}
catch (XMLConfigurationException e) {
fFixupBaseURIs = true;
}
try {
fFixupLanguage =
componentManager.getFeature(XINCLUDE_FIXUP_LANGUAGE);
if (fChildConfig != null) {
fChildConfig.setFeature(
XINCLUDE_FIXUP_LANGUAGE,
fFixupLanguage);
}
}
catch (XMLConfigurationException e) {
fFixupLanguage = true;
}
// Get symbol table.
try {
SymbolTable value =
(SymbolTable)componentManager.getProperty(SYMBOL_TABLE);
if (value != null) {
fSymbolTable = value;
if (fChildConfig != null) {
fChildConfig.setProperty(SYMBOL_TABLE, value);
}
}
}
catch (XMLConfigurationException e) {
fSymbolTable = null;
}
// Get error reporter.
try {
XMLErrorReporter value =
(XMLErrorReporter)componentManager.getProperty(ERROR_REPORTER);
if (value != null) {
setErrorReporter(value);
if (fChildConfig != null) {
fChildConfig.setProperty(ERROR_REPORTER, value);
}
}
}
catch (XMLConfigurationException e) {
fErrorReporter = null;
}
// Get entity resolver.
try {
XMLEntityResolver value =
(XMLEntityResolver)componentManager.getProperty(
ENTITY_RESOLVER);
if (value != null) {
fEntityResolver = value;
if (fChildConfig != null) {
fChildConfig.setProperty(ENTITY_RESOLVER, value);
}
}
}
catch (XMLConfigurationException e) {
fEntityResolver = null;
}
// Get security manager.
try {
SecurityManager value =
(SecurityManager)componentManager.getProperty(
SECURITY_MANAGER);
if (value != null) {
fSecurityManager = value;
if (fChildConfig != null) {
fChildConfig.setProperty(SECURITY_MANAGER, value);
}
}
}
catch (XMLConfigurationException e) {
fSecurityManager = null;
}
// Get buffer size.
try {
Integer value =
(Integer)componentManager.getProperty(
BUFFER_SIZE);
if (value != null && value.intValue() > 0) {
fBufferSize = value.intValue();
if (fChildConfig != null) {
fChildConfig.setProperty(BUFFER_SIZE, value);
}
}
else {
fBufferSize = ((Integer)getPropertyDefault(BUFFER_SIZE)).intValue();
}
}
catch (XMLConfigurationException e) {
fBufferSize = ((Integer)getPropertyDefault(BUFFER_SIZE)).intValue();
}
// Reset XML 1.0 text reader.
if (fXInclude10TextReader != null) {
fXInclude10TextReader.setBufferSize(fBufferSize);
}
// Reset XML 1.1 text reader.
if (fXInclude11TextReader != null) {
fXInclude11TextReader.setBufferSize(fBufferSize);
}
fSettings = new ParserConfigurationSettings();
copyFeatures(componentManager, fSettings);
// We don't want a schema validator on the new pipeline,
// so if it was enabled, we set the feature to false.
try {
if (componentManager.getFeature(SCHEMA_VALIDATION)) {
fSettings.setFeature(SCHEMA_VALIDATION, false);
// If the value of the JAXP 1.2 schema language property
// is http://www.w3.org/2001/XMLSchema we're only validating
// against XML schema so we disable validation on the new pipeline.
if (Constants.NS_XMLSCHEMA.equals(componentManager.getProperty(JAXP_SCHEMA_LANGUAGE))) {
fSettings.setFeature(VALIDATION, false);
}
// If the validation feature was also enabled we turn on
// dynamic validation, so that DTD validation is performed
// on the included documents only if they have a DOCTYPE.
// This is consistent with the behaviour on the main pipeline.
else if (componentManager.getFeature(VALIDATION)) {
fSettings.setFeature(DYNAMIC_VALIDATION, true);
}
}
}
catch (XMLConfigurationException e) {}
// Don't reset fChildConfig -- we don't want it to share the same components.
// It will be reset when it is actually used to parse something.
} // reset(XMLComponentManager)