mrglavas 2004/03/02 12:27:51 Modified: java/src/org/apache/xerces/dom DOMConfigurationImpl.java Log: Fixing Bug #27303:
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=27303 DOM Level 3 core states that: "The parameter names used by the DOMConfiguration object are defined throughout the DOM Level 3 specifications. Names are case-insensitive." We were only accepting the lower case cannonical names. This is now fixed thanks to the patch by Naela Nissar plus some additional equalsIgnoreCase checks for some Xerces specific parameters. Revision Changes Path 1.25 +69 -71 xml-xerces/java/src/org/apache/xerces/dom/DOMConfigurationImpl.java Index: DOMConfigurationImpl.java =================================================================== RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/dom/DOMConfigurationImpl.java,v retrieving revision 1.24 retrieving revision 1.25 diff -u -r1.24 -r1.25 --- DOMConfigurationImpl.java 26 Feb 2004 18:48:06 -0000 1.24 +++ DOMConfigurationImpl.java 2 Mar 2004 20:27:51 -0000 1.25 @@ -515,11 +515,10 @@ if(value instanceof Boolean){ boolean state = ((Boolean)value).booleanValue(); - if (name.equals(Constants.DOM_COMMENTS)) { + if (name.equalsIgnoreCase(Constants.DOM_COMMENTS)) { features = (short) (state ? features | COMMENTS : features & ~COMMENTS); - } - else if (name.equals(Constants.DOM_DATATYPE_NORMALIZATION)) { + else if (name.equalsIgnoreCase(Constants.DOM_DATATYPE_NORMALIZATION)) { setFeature(NORMALIZE_DATA, state); features = (short) (state ? features | DTNORMALIZATION : features & ~DTNORMALIZATION); @@ -527,25 +526,25 @@ features = (short) (features | VALIDATE); } } - else if (name.equals(Constants.DOM_NAMESPACES)) { + else if (name.equalsIgnoreCase(Constants.DOM_NAMESPACES)) { features = (short) (state ? features | NAMESPACES : features & ~NAMESPACES); } - else if (name.equals(Constants.DOM_CDATA_SECTIONS)) { + else if (name.equalsIgnoreCase(Constants.DOM_CDATA_SECTIONS)) { features = (short) (state ? features | CDATA : features & ~CDATA); } - else if (name.equals(Constants.DOM_ENTITIES)) { + else if (name.equalsIgnoreCase(Constants.DOM_ENTITIES)) { features = (short) (state ? features | ENTITIES : features & ~ENTITIES); } - else if (name.equals(Constants.DOM_SPLIT_CDATA)) { + else if (name.equalsIgnoreCase(Constants.DOM_SPLIT_CDATA)) { features = (short) (state ? features | SPLITCDATA : features & ~SPLITCDATA); } - else if (name.equals(Constants.DOM_VALIDATE)) { + else if (name.equalsIgnoreCase(Constants.DOM_VALIDATE)) { features = (short) (state ? features | VALIDATE : features & ~VALIDATE); } - else if (name.equals(Constants.DOM_WELLFORMED)) { + else if (name.equalsIgnoreCase(Constants.DOM_WELLFORMED)) { features = (short) (state ? features | WELLFORMED : features & ~WELLFORMED ); } - else if (name.equals(Constants.DOM_INFOSET)) { + else if (name.equalsIgnoreCase(Constants.DOM_INFOSET)) { // Setting to false has no effect. if (state) { features = (short) (features | INFOSET_TRUE_PARAMS); @@ -553,10 +552,10 @@ setFeature(NORMALIZE_DATA, false); } } - else if (name.equals(Constants.DOM_NORMALIZE_CHARACTERS) - || name.equals(Constants.DOM_CANONICAL_FORM) - || name.equals(Constants.DOM_VALIDATE_IF_SCHEMA) - || name.equals(Constants.DOM_CHECK_CHAR_NORMALIZATION) + else if (name.equalsIgnoreCase(Constants.DOM_NORMALIZE_CHARACTERS) + || name.equalsIgnoreCase(Constants.DOM_CANONICAL_FORM) + || name.equalsIgnoreCase(Constants.DOM_VALIDATE_IF_SCHEMA) + || name.equalsIgnoreCase(Constants.DOM_CHECK_CHAR_NORMALIZATION) ) { if (state) { // true is not supported String msg = @@ -567,8 +566,8 @@ throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg); } } - else if (name.equals(Constants.DOM_NAMESPACE_DECLARATIONS) - || name.equals(Constants.DOM_ELEMENT_CONTENT_WHITESPACE)) { + else if (name.equalsIgnoreCase(Constants.DOM_NAMESPACE_DECLARATIONS) + || name.equalsIgnoreCase(Constants.DOM_ELEMENT_CONTENT_WHITESPACE)) { if (!state) { // false is not supported String msg = DOMMessageFormatter.formatMessage( @@ -579,7 +578,7 @@ } } - else if (name.equals(SEND_PSVI) ){ + else if (name.equalsIgnoreCase(SEND_PSVI) ){ // REVISIT: turning augmentation of PSVI is not support, // because in this case we won't be able to retrieve element // default value. @@ -592,7 +591,7 @@ throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg); } } - else if (name.equals(Constants.DOM_PSVI)){ + else if (name.equalsIgnoreCase(Constants.DOM_PSVI)){ features = (short) (state ? features | PSVI : features & ~PSVI); } else { @@ -605,7 +604,7 @@ } } else { // set properties - if (name.equals(Constants.DOM_ERROR_HANDLER)) { + if (name.equalsIgnoreCase(Constants.DOM_ERROR_HANDLER)) { if (value instanceof DOMErrorHandler) { fErrorHandlerWrapper.setErrorHandler((DOMErrorHandler)value); setErrorHandler(fErrorHandlerWrapper); @@ -621,7 +620,7 @@ throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg); } } - else if (name.equals(Constants.DOM_RESOURCE_RESOLVER)) { + else if (name.equalsIgnoreCase(Constants.DOM_RESOURCE_RESOLVER)) { if (value instanceof LSResourceResolver) { try { setEntityResolver(new DOMEntityResolverWrapper((LSResourceResolver) value)); @@ -639,7 +638,7 @@ } } - else if (name.equals(Constants.DOM_SCHEMA_LOCATION)) { + else if (name.equalsIgnoreCase(Constants.DOM_SCHEMA_LOCATION)) { if (value instanceof String) { try { String schemaType = (String) getProperty( @@ -675,7 +674,7 @@ } } - else if (name.equals(Constants.DOM_SCHEMA_TYPE)) { + else if (name.equalsIgnoreCase(Constants.DOM_SCHEMA_TYPE)) { // REVISIT: should null value be supported? if (value instanceof String) { try { @@ -706,7 +705,7 @@ } } - else if (name.equals(SYMBOL_TABLE)){ + else if (name.equalsIgnoreCase(SYMBOL_TABLE)){ // Xerces Symbol Table if (value instanceof SymbolTable){ setProperty(SYMBOL_TABLE, value); @@ -721,7 +720,7 @@ throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg); } } - else if (name.equals (GRAMMAR_POOL)){ + else if (name.equalsIgnoreCase (GRAMMAR_POOL)){ if (value instanceof XMLGrammarPool){ setProperty(GRAMMAR_POOL, value); } @@ -760,73 +759,72 @@ // REVISIT: Recognizes DOM L3 default features only. // Does not yet recognize Xerces features. - if (name.equals(Constants.DOM_COMMENTS)) { + if (name.equalsIgnoreCase(Constants.DOM_COMMENTS)) { return ((features & COMMENTS) != 0) ? Boolean.TRUE : Boolean.FALSE; } - else if (name.equals(Constants.DOM_NAMESPACES)) { + else if (name.equalsIgnoreCase(Constants.DOM_NAMESPACES)) { return (features & NAMESPACES) != 0 ? Boolean.TRUE : Boolean.FALSE; } - else if (name.equals(Constants.DOM_DATATYPE_NORMALIZATION)) { + else if (name.equalsIgnoreCase(Constants.DOM_DATATYPE_NORMALIZATION)) { // REVISIT: datatype-normalization only takes effect if validation is on return (features & DTNORMALIZATION) != 0 ? Boolean.TRUE : Boolean.FALSE; } - else if (name.equals(Constants.DOM_CDATA_SECTIONS)) { + else if (name.equalsIgnoreCase(Constants.DOM_CDATA_SECTIONS)) { return (features & CDATA) != 0 ? Boolean.TRUE : Boolean.FALSE; } - else if (name.equals(Constants.DOM_ENTITIES)) { + else if (name.equalsIgnoreCase(Constants.DOM_ENTITIES)) { return (features & ENTITIES) != 0 ? Boolean.TRUE : Boolean.FALSE; } - else if (name.equals(Constants.DOM_SPLIT_CDATA)) { + else if (name.equalsIgnoreCase(Constants.DOM_SPLIT_CDATA)) { return (features & SPLITCDATA) != 0 ? Boolean.TRUE : Boolean.FALSE; } - else if (name.equals(Constants.DOM_VALIDATE)) { + else if (name.equalsIgnoreCase(Constants.DOM_VALIDATE)) { return (features & VALIDATE) != 0 ? Boolean.TRUE : Boolean.FALSE; } - else if (name.equals(Constants.DOM_WELLFORMED)) { + else if (name.equalsIgnoreCase(Constants.DOM_WELLFORMED)) { return (features & WELLFORMED) != 0 ? Boolean.TRUE : Boolean.FALSE; } - else if (name.equals(Constants.DOM_INFOSET)) { + else if (name.equalsIgnoreCase(Constants.DOM_INFOSET)) { return (features & INFOSET_MASK) == INFOSET_TRUE_PARAMS ? Boolean.TRUE : Boolean.FALSE; } - else if (name.equals(Constants.DOM_NORMALIZE_CHARACTERS) - || name.equals(Constants.DOM_CANONICAL_FORM) - || name.equals(Constants.DOM_VALIDATE_IF_SCHEMA) - || name.equals(Constants.DOM_CHECK_CHAR_NORMALIZATION) + else if (name.equalsIgnoreCase(Constants.DOM_NORMALIZE_CHARACTERS) + || name.equalsIgnoreCase(Constants.DOM_CANONICAL_FORM) + || name.equalsIgnoreCase(Constants.DOM_VALIDATE_IF_SCHEMA) + || name.equalsIgnoreCase(Constants.DOM_CHECK_CHAR_NORMALIZATION) ) { return Boolean.FALSE; } - else if (name.equals(SEND_PSVI)) { + else if (name.equalsIgnoreCase(SEND_PSVI)) { return Boolean.TRUE; - } - else if (name.equals(Constants.DOM_PSVI)) { + else if (name.equalsIgnoreCase(Constants.DOM_PSVI)) { return (features & PSVI) != 0 ? Boolean.TRUE : Boolean.FALSE; } else if ( - name.equals(Constants.DOM_NAMESPACE_DECLARATIONS) - || name.equals(Constants.DOM_ELEMENT_CONTENT_WHITESPACE)) { + name.equalsIgnoreCase(Constants.DOM_NAMESPACE_DECLARATIONS) + || name.equalsIgnoreCase(Constants.DOM_ELEMENT_CONTENT_WHITESPACE)) { return Boolean.TRUE; } - else if (name.equals(Constants.DOM_ERROR_HANDLER)) { + else if (name.equalsIgnoreCase(Constants.DOM_ERROR_HANDLER)) { return fErrorHandlerWrapper.getErrorHandler(); } - else if (name.equals(Constants.DOM_RESOURCE_RESOLVER)) { + else if (name.equalsIgnoreCase(Constants.DOM_RESOURCE_RESOLVER)) { XMLEntityResolver entityResolver = getEntityResolver(); if (entityResolver != null && entityResolver instanceof DOMEntityResolverWrapper) { return ((DOMEntityResolverWrapper) entityResolver).getEntityResolver(); } return null; } - else if (name.equals(Constants.DOM_SCHEMA_TYPE)) { + else if (name.equalsIgnoreCase(Constants.DOM_SCHEMA_TYPE)) { return getProperty(Constants.JAXP_PROPERTY_PREFIX + Constants.SCHEMA_LANGUAGE); } - else if (name.equals(Constants.DOM_SCHEMA_LOCATION)) { + else if (name.equalsIgnoreCase(Constants.DOM_SCHEMA_LOCATION)) { return getProperty(Constants.JAXP_PROPERTY_PREFIX + Constants.SCHEMA_SOURCE); } - else if (name.equals(SYMBOL_TABLE)){ + else if (name.equalsIgnoreCase(SYMBOL_TABLE)){ return getProperty(SYMBOL_TABLE); } - else if (name.equals(GRAMMAR_POOL)){ + else if (name.equalsIgnoreCase(GRAMMAR_POOL)){ return getProperty(GRAMMAR_POOL); } else { @@ -868,29 +866,29 @@ //features whose parameter value can be set either 'true' or 'false' // or they accept any boolean value -- so we just need to check that // its a boolean value.. - if (name.equals(Constants.DOM_COMMENTS) - || name.equals(Constants.DOM_DATATYPE_NORMALIZATION) - || name.equals(Constants.DOM_CDATA_SECTIONS) - || name.equals(Constants.DOM_ENTITIES) - || name.equals(Constants.DOM_SPLIT_CDATA) - || name.equals(Constants.DOM_NAMESPACES) - || name.equals(Constants.DOM_VALIDATE) - || name.equals(Constants.DOM_WELLFORMED) - || name.equals(Constants.DOM_INFOSET) + if (name.equalsIgnoreCase(Constants.DOM_COMMENTS) + || name.equalsIgnoreCase(Constants.DOM_DATATYPE_NORMALIZATION) + || name.equalsIgnoreCase(Constants.DOM_CDATA_SECTIONS) + || name.equalsIgnoreCase(Constants.DOM_ENTITIES) + || name.equalsIgnoreCase(Constants.DOM_SPLIT_CDATA) + || name.equalsIgnoreCase(Constants.DOM_NAMESPACES) + || name.equalsIgnoreCase(Constants.DOM_VALIDATE) + || name.equalsIgnoreCase(Constants.DOM_WELLFORMED) + || name.equalsIgnoreCase(Constants.DOM_INFOSET) ) { return true ; }//features whose parameter value can not be set to 'true' else if ( - name.equals(Constants.DOM_NORMALIZE_CHARACTERS) - || name.equals(Constants.DOM_CANONICAL_FORM) - || name.equals(Constants.DOM_VALIDATE_IF_SCHEMA) - || name.equals(Constants.DOM_CHECK_CHAR_NORMALIZATION) + name.equalsIgnoreCase(Constants.DOM_NORMALIZE_CHARACTERS) + || name.equalsIgnoreCase(Constants.DOM_CANONICAL_FORM) + || name.equalsIgnoreCase(Constants.DOM_VALIDATE_IF_SCHEMA) + || name.equalsIgnoreCase(Constants.DOM_CHECK_CHAR_NORMALIZATION) ) { return (value.equals(Boolean.TRUE)) ? false : true; }//features whose parameter value can not be set to 'false' - else if( name.equals(Constants.DOM_NAMESPACE_DECLARATIONS) - || name.equals(Constants.DOM_ELEMENT_CONTENT_WHITESPACE) - || name.equals(SEND_PSVI) + else if( name.equalsIgnoreCase(Constants.DOM_NAMESPACE_DECLARATIONS) + || name.equalsIgnoreCase(Constants.DOM_ELEMENT_CONTENT_WHITESPACE) + || name.equalsIgnoreCase(SEND_PSVI) ) { return (value.equals(Boolean.TRUE)) ? true : false; }// if name is not among the above listed above -- its not recognized. return false @@ -898,25 +896,25 @@ return false ; } } - else if (name.equals(Constants.DOM_ERROR_HANDLER)) { + else if (name.equalsIgnoreCase(Constants.DOM_ERROR_HANDLER)) { return (value instanceof DOMErrorHandler) ? true : false ; } - else if (name.equals(Constants.DOM_RESOURCE_RESOLVER)) { + else if (name.equalsIgnoreCase(Constants.DOM_RESOURCE_RESOLVER)) { return (value instanceof LSResourceResolver) ? true : false ; } - else if (name.equals(Constants.DOM_SCHEMA_LOCATION)) { + else if (name.equalsIgnoreCase(Constants.DOM_SCHEMA_LOCATION)) { return (value instanceof String) ? true : false ; } - else if (name.equals(Constants.DOM_SCHEMA_TYPE)) { + else if (name.equalsIgnoreCase(Constants.DOM_SCHEMA_TYPE)) { // REVISIT: should null value be supported? //as of now we are only supporting W3C XML Schema return ( (value instanceof String) && value.equals(Constants.NS_XMLSCHEMA) ) ? true : false ; } - else if (name.equals(SYMBOL_TABLE)){ + else if (name.equalsIgnoreCase(SYMBOL_TABLE)){ // Xerces Symbol Table return (value instanceof SymbolTable) ? true : false ; } - else if (name.equals (GRAMMAR_POOL)){ + else if (name.equalsIgnoreCase (GRAMMAR_POOL)){ return (value instanceof XMLGrammarPool) ? true : false ; } else { --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]