--- old/src/com/sun/org/apache/xml/internal/utils/XMLReaderManager.java Wed May 8 13:36:22 2013 +++ new/src/com/sun/org/apache/xml/internal/utils/XMLReaderManager.java Wed May 8 13:36:22 2013 @@ -22,17 +22,17 @@ */ package com.sun.org.apache.xml.internal.utils; -import com.sun.org.apache.xalan.internal.utils.SecuritySupport; +import com.sun.org.apache.xalan.internal.XalanConstants; import com.sun.org.apache.xalan.internal.utils.FactoryImpl; +import com.sun.org.apache.xalan.internal.utils.SecuritySupport; import java.util.HashMap; - +import javax.xml.XMLConstants; import javax.xml.parsers.FactoryConfigurationError; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParserFactory; - +import org.xml.sax.SAXException; import org.xml.sax.XMLReader; import org.xml.sax.helpers.XMLReaderFactory; -import org.xml.sax.SAXException; /** * Creates XMLReader objects and caches them for re-use. @@ -63,6 +63,11 @@ private HashMap m_inUse; private boolean m_useServicesMechanism = true; + /** + * protocols allowed for external DTD references in source file and/or stylesheet. + */ + private String _accessExternalDTD = XalanConstants.EXTERNAL_ACCESS_DEFAULT; + /** * Hidden constructor */ @@ -131,6 +136,7 @@ try { reader.setFeature(NAMESPACES_FEATURE, true); reader.setFeature(NAMESPACE_PREFIXES_FEATURE, false); + reader.setProperty(XMLConstants.ACCESS_EXTERNAL_DTD, _accessExternalDTD); } catch (SAXException se) { // Try to carry on if we've got a parser that // doesn't know about namespace prefixes. @@ -181,4 +187,22 @@ m_useServicesMechanism = flag; } + /** + * Get property value + */ + public String getProperty(String name) { + if (name.equals(XMLConstants.ACCESS_EXTERNAL_DTD)) { + return _accessExternalDTD; + } + return null; + } + + /** + * Set property. + */ + public void setProperty(String name, String value) { + if (name.equals(XMLConstants.ACCESS_EXTERNAL_DTD)) { + _accessExternalDTD = (String)value; + } + } }