mrglavas 2004/04/14 08:54:06 Modified: java/src/org/apache/xerces/dom DOMConfigurationImpl.java java/src/org/apache/xerces/parsers DOMParserImpl.java Log: Fixing Jira Bug #944:
http://nagoya.apache.org/jira/browse/XERCESJ-944 Allow 'schema-location' and 'schema-type' parameters to be unset, plus fixup canSetParameter to accept null values and some additional clean up. This is fixed thanks to the patch (slightly modified) from Naela Nissar. Revision Changes Path 1.28 +11 -7 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.27 retrieving revision 1.28 diff -u -r1.27 -r1.28 --- DOMConfigurationImpl.java 12 Apr 2004 21:56:02 -0000 1.27 +++ DOMConfigurationImpl.java 14 Apr 2004 15:54:06 -0000 1.28 @@ -639,11 +639,11 @@ } else if (name.equalsIgnoreCase(Constants.DOM_SCHEMA_LOCATION)) { - if (value instanceof String) { + if (value instanceof String || value == null) { try { String schemaType = (String) getProperty( Constants.JAXP_PROPERTY_PREFIX + Constants.SCHEMA_LANGUAGE); - if (schemaType == Constants.NS_XMLSCHEMA) { + if (schemaType == Constants.NS_XMLSCHEMA || value == null) { // map DOM schema-location to JAXP schemaSource property setProperty( Constants.JAXP_PROPERTY_PREFIX + Constants.SCHEMA_SOURCE, @@ -675,15 +675,19 @@ } else if (name.equalsIgnoreCase(Constants.DOM_SCHEMA_TYPE)) { - // REVISIT: should null value be supported? - if (value instanceof String) { + if (value instanceof String || value == null) { try { - if (value.equals(Constants.NS_XMLSCHEMA)) { + if (value == null) { + setProperty( + Constants.JAXP_PROPERTY_PREFIX + Constants.SCHEMA_LANGUAGE, + null); + } + else if (value.equals(Constants.NS_XMLSCHEMA)) { // REVISIT: when add support to DTD validation setProperty( Constants.JAXP_PROPERTY_PREFIX + Constants.SCHEMA_LANGUAGE, Constants.NS_XMLSCHEMA); - } + } else if (value.equals(Constants.NS_DTD)) { // REVISIT: revalidation against DTDs is not supported String msg = DOMMessageFormatter.formatMessage( 1.23 +29 -14 xml-xerces/java/src/org/apache/xerces/parsers/DOMParserImpl.java Index: DOMParserImpl.java =================================================================== RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/parsers/DOMParserImpl.java,v retrieving revision 1.22 retrieving revision 1.23 diff -u -r1.22 -r1.23 --- DOMParserImpl.java 13 Apr 2004 15:08:08 -0000 1.22 +++ DOMParserImpl.java 14 Apr 2004 15:54:06 -0000 1.23 @@ -447,9 +447,14 @@ } else if (name.equalsIgnoreCase (Constants.DOM_SCHEMA_LOCATION)) { - if (value instanceof String) { + if (value instanceof String || value == null) { try { - if (fSchemaType == Constants.NS_XMLSCHEMA) { + if (value == null) { + fConfiguration.setProperty ( + Constants.JAXP_PROPERTY_PREFIX + Constants.SCHEMA_SOURCE, + null); + } + else if (fSchemaType == Constants.NS_XMLSCHEMA) { fSchemaLocation = (String)value; // map DOM schema-location to JAXP schemaSource property // tokenize location string @@ -495,10 +500,21 @@ } else if (name.equalsIgnoreCase (Constants.DOM_SCHEMA_TYPE)) { - // REVISIT: should null value be supported? - if (value instanceof String) { + if (value instanceof String || value == null) { try { - if (value.equals (Constants.NS_XMLSCHEMA)) { + if (value == null) { + // turn off schema feature + fConfiguration.setFeature ( + Constants.XERCES_FEATURE_PREFIX + + Constants.SCHEMA_VALIDATION_FEATURE, + false); + // map to JAXP schemaLanguage + fConfiguration.setProperty ( Constants.JAXP_PROPERTY_PREFIX + + Constants.SCHEMA_LANGUAGE, + null); + fSchemaType = null; + } + else if (value.equals (Constants.NS_XMLSCHEMA)) { // turn on schema feature fConfiguration.setFeature (Constants.XERCES_FEATURE_PREFIX + Constants.SCHEMA_VALIDATION_FEATURE, @@ -510,10 +526,12 @@ fSchemaType = Constants.NS_XMLSCHEMA; } else if (value.equals (Constants.NS_DTD)) { + // turn off schema feature fConfiguration.setFeature ( Constants.XERCES_FEATURE_PREFIX + Constants.SCHEMA_VALIDATION_FEATURE, false); + // map to JAXP schemaLanguage fConfiguration.setProperty ( Constants.JAXP_PROPERTY_PREFIX + Constants.SCHEMA_LANGUAGE, Constants.NS_DTD); @@ -709,27 +727,27 @@ } else { // check properties if (name.equalsIgnoreCase (Constants.DOM_ERROR_HANDLER)) { - if (value instanceof DOMErrorHandler) { + if (value instanceof DOMErrorHandler || value == null) { return true; } return false; } else if (name.equalsIgnoreCase (Constants.DOM_RESOURCE_RESOLVER)) { - if (value instanceof LSResourceResolver) { + if (value instanceof LSResourceResolver || value == null) { return true; } return false; } else if (name.equalsIgnoreCase (Constants.DOM_SCHEMA_TYPE)) { - if (value instanceof String + if ((value instanceof String && (value.equals (Constants.NS_XMLSCHEMA) - || value.equals (Constants.NS_DTD))) { + || value.equals (Constants.NS_DTD))) || value == null) { return true; } return false; } else if (name.equalsIgnoreCase (Constants.DOM_SCHEMA_LOCATION)) { - if (value instanceof String) + if (value instanceof String || value == null) return true; return false; } @@ -772,9 +790,6 @@ parameters.add(Constants.DOM_WELLFORMED); parameters.add(Constants.DOM_INFOSET); parameters.add(Constants.DOM_DISALLOW_DOCTYPE); - parameters.add(Constants.DOM_ELEMENT_CONTENT_WHITESPACE); - - parameters.add(Constants.DOM_ENTITIES); parameters.add(Constants.DOM_ELEMENT_CONTENT_WHITESPACE); parameters.add(Constants.DOM_COMMENTS); --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]