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]

Reply via email to