Mercurial > hg > openjdk > jdk8 > jaxp
changeset 476:4e23bc205d9d
8022548: SPECJVM2008 has errors introduced in 7u40-b34
Reviewed-by: chegar, lancea
author | joehw |
---|---|
date | Fri, 09 Aug 2013 12:10:41 -0700 |
parents | 7cffafa606e9 |
children | 9800647936dd |
files | src/com/sun/org/apache/xerces/internal/parsers/DTDConfiguration.java src/com/sun/org/apache/xerces/internal/parsers/NonValidatingConfiguration.java src/com/sun/org/apache/xerces/internal/parsers/SAXParser.java |
diffstat | 3 files changed, 24 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/src/com/sun/org/apache/xerces/internal/parsers/DTDConfiguration.java Tue Aug 06 10:02:36 2013 -0700 +++ b/src/com/sun/org/apache/xerces/internal/parsers/DTDConfiguration.java Fri Aug 09 12:10:41 2013 -0700 @@ -38,6 +38,7 @@ import com.sun.org.apache.xerces.internal.util.PropertyState; import com.sun.org.apache.xerces.internal.util.Status; import com.sun.org.apache.xerces.internal.util.SymbolTable; +import com.sun.org.apache.xerces.internal.utils.XMLSecurityPropertyManager; import com.sun.org.apache.xerces.internal.xni.XMLLocator; import com.sun.org.apache.xerces.internal.xni.XNIException; import com.sun.org.apache.xerces.internal.xni.grammars.XMLGrammarPool; @@ -184,6 +185,10 @@ protected static final String LOCALE = Constants.XERCES_PROPERTY_PREFIX + Constants.LOCALE_PROPERTY; + /** Property identifier: Security property manager. */ + protected static final String XML_SECURITY_PROPERTY_MANAGER = + Constants.XML_SECURITY_PROPERTY_MANAGER; + // debugging /** Set to true and recompile to print exception stack trace. */ @@ -328,7 +333,8 @@ VALIDATION_MANAGER, JAXP_SCHEMA_SOURCE, JAXP_SCHEMA_LANGUAGE, - LOCALE + LOCALE, + XML_SECURITY_PROPERTY_MANAGER }; addRecognizedProperties(recognizedProperties); @@ -406,6 +412,7 @@ // REVISIT: What is the right thing to do? -Ac } + setProperty(XML_SECURITY_PROPERTY_MANAGER, new XMLSecurityPropertyManager()); } // <init>(SymbolTable,XMLGrammarPool) //
--- a/src/com/sun/org/apache/xerces/internal/parsers/NonValidatingConfiguration.java Tue Aug 06 10:02:36 2013 -0700 +++ b/src/com/sun/org/apache/xerces/internal/parsers/NonValidatingConfiguration.java Fri Aug 09 12:10:41 2013 -0700 @@ -36,6 +36,7 @@ import com.sun.org.apache.xerces.internal.util.PropertyState; import com.sun.org.apache.xerces.internal.util.Status; import com.sun.org.apache.xerces.internal.util.SymbolTable; +import com.sun.org.apache.xerces.internal.utils.XMLSecurityPropertyManager; import com.sun.org.apache.xerces.internal.xni.XMLLocator; import com.sun.org.apache.xerces.internal.xni.XNIException; import com.sun.org.apache.xerces.internal.xni.grammars.XMLGrammarPool; @@ -157,6 +158,10 @@ protected static final String LOCALE = Constants.XERCES_PROPERTY_PREFIX + Constants.LOCALE_PROPERTY; + /** Property identifier: Security property manager. */ + protected static final String XML_SECURITY_PROPERTY_MANAGER = + Constants.XML_SECURITY_PROPERTY_MANAGER; + // debugging /** Set to true and recompile to print exception stack trace. */ @@ -310,7 +315,8 @@ XMLGRAMMAR_POOL, DATATYPE_VALIDATOR_FACTORY, VALIDATION_MANAGER, - LOCALE + LOCALE, + XML_SECURITY_PROPERTY_MANAGER }; addRecognizedProperties(recognizedProperties); @@ -367,6 +373,7 @@ // REVISIT: What is the right thing to do? -Ac } + setProperty(XML_SECURITY_PROPERTY_MANAGER, new XMLSecurityPropertyManager()); } // <init>(SymbolTable,XMLGrammarPool) //
--- a/src/com/sun/org/apache/xerces/internal/parsers/SAXParser.java Tue Aug 06 10:02:36 2013 -0700 +++ b/src/com/sun/org/apache/xerces/internal/parsers/SAXParser.java Fri Aug 09 12:10:41 2013 -0700 @@ -76,6 +76,7 @@ XMLGRAMMAR_POOL, }; + XMLSecurityPropertyManager securityPropertyManager; // // Constructors // @@ -129,16 +130,19 @@ */ public void setProperty(String name, Object value) throws SAXNotRecognizedException, SAXNotSupportedException { - XMLSecurityPropertyManager spm = new XMLSecurityPropertyManager(); - int index = spm.getIndex(name); + if (securityPropertyManager == null) { + securityPropertyManager = new XMLSecurityPropertyManager(); + } + int index = securityPropertyManager.getIndex(name); + if (index > -1) { /** * this is a direct call to this parser, not a subclass since * internally the support of this property is done through * XMLSecurityPropertyManager */ - spm.setValue(index, XMLSecurityPropertyManager.State.APIPROPERTY, (String)value); - super.setProperty(Constants.XML_SECURITY_PROPERTY_MANAGER, spm); + securityPropertyManager.setValue(index, XMLSecurityPropertyManager.State.APIPROPERTY, (String)value); + super.setProperty(Constants.XML_SECURITY_PROPERTY_MANAGER, securityPropertyManager); } else { super.setProperty(name, value); }