mrglavas    2004/01/29 12:59:52

  Modified:    java/src/org/apache/xerces/parsers DOMParserImpl.java
  Log:
  Support the 'infoset' parameter for the DOMConfiguration of
  LSParser. By default the value of this parameter is true which
  implies that all of (namespace-declarations, well-formed, 
  element-content-whitespace, comments, namespaces) must
  be true and all of (validate-if-schema, entities, 
  datatype-normalization, cdata-sections) must be false. These
  parameters must be set to these values when we create the
  parser.
  
  Some bug fixes:
  - False was not supported for 'cdata-sections'
  - canSetParameter was reporting that disallow-doctype
  could not be set to false.
  
  Revision  Changes    Path
  1.12      +70 -24    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.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- DOMParserImpl.java        23 Jan 2004 19:42:04 -0000      1.11
  +++ DOMParserImpl.java        29 Jan 2004 20:59:51 -0000      1.12
  @@ -2,7 +2,7 @@
    * The Apache Software License, Version 1.1
    *
    *
  - * Copyright (c) 2000-2003 The Apache Software Foundation.  All rights
  + * Copyright (c) 2000-2004 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -212,14 +212,30 @@
           // turn off deferred DOM
           fConfiguration.setFeature (DEFER_NODE_EXPANSION, false);
           
  -        // set default values
  +        // Set values so that the value of the 
  +        // infoset parameter is true (its default value).
  +        //
  +        // true: namespace-declarations, well-formed, 
  +        // element-content-whitespace, comments, namespaces
  +        //
  +        // false: validate-if-schema, entities, 
  +        // datatype-normalization, cdata-sections
  +
  +        fConfiguration.setFeature(Constants.DOM_NAMESPACE_DECLARATIONS, true);
  +        fConfiguration.setFeature(Constants.DOM_WELLFORMED, true);
  +        fConfiguration.setFeature(INCLUDE_COMMENTS_FEATURE, true);
  +        fConfiguration.setFeature(INCLUDE_IGNORABLE_WHITESPACE, true);
  +        fConfiguration.setFeature(NAMESPACES, true);
  +        
  +        fConfiguration.setFeature(DYNAMIC_VALIDATION, false);
  +        fConfiguration.setFeature(CREATE_ENTITY_REF_NODES, false);
  +        fConfiguration.setFeature(NORMALIZE_DATA, false);
  +        fConfiguration.setFeature(CREATE_CDATA_NODES_FEATURE, false);
  +             
  +        // set other default values
           fConfiguration.setFeature (Constants.DOM_CANONICAL_FORM, false);
  -        fConfiguration.setFeature (Constants.DOM_CDATA_SECTIONS, true);
           fConfiguration.setFeature (Constants.DOM_CHARSET_OVERRIDES_XML_ENCODING, 
true);
  -        fConfiguration.setFeature (Constants.DOM_INFOSET, true);
  -        fConfiguration.setFeature (Constants.DOM_NAMESPACE_DECLARATIONS, true);
           fConfiguration.setFeature (Constants.DOM_SUPPORTED_MEDIATYPES_ONLY, false);
  -        fConfiguration.setFeature (Constants.DOM_WELLFORMED, true);
           fConfiguration.setFeature 
(Constants.DOM_IGNORE_UNKNOWN_CHARACTER_DENORMALIZATIONS, true);
           
           // REVISIT: by default Xerces assumes that input is certified.
  @@ -353,11 +369,28 @@
                   else if (name.equals (Constants.DOM_NAMESPACES)) {
                       fConfiguration.setFeature (NAMESPACES, state);
                   }
  -                else if (name.equals (Constants.DOM_CDATA_SECTIONS)
  -                || name.equals (Constants.DOM_NAMESPACE_DECLARATIONS)
  +                else if (name.equals (Constants.DOM_INFOSET)) {
  +                    // Setting false has no effect.
  +                    if (state) {
  +                        // true: namespaces, comments, element-content-whitespace
  +                        fConfiguration.setFeature(NAMESPACES, true);
  +                        fConfiguration.setFeature(INCLUDE_COMMENTS_FEATURE, true);
  +                        fConfiguration.setFeature(INCLUDE_IGNORABLE_WHITESPACE, 
true);
  +
  +                        // false: validate-if-schema, entities,
  +                        // datatype-normalization, cdata-sections
  +                        fConfiguration.setFeature(DYNAMIC_VALIDATION, false);
  +                        fConfiguration.setFeature(CREATE_ENTITY_REF_NODES, false);
  +                        fConfiguration.setFeature(NORMALIZE_DATA, false);
  +                        fConfiguration.setFeature(CREATE_CDATA_NODES_FEATURE, 
false);
  +                    }
  +                }
  +                else if (name.equals(Constants.DOM_CDATA_SECTIONS)) {
  +                    fConfiguration.setFeature(CREATE_CDATA_NODES_FEATURE, state);
  +                }
  +                else if (name.equals (Constants.DOM_NAMESPACE_DECLARATIONS)
                   || name.equals (Constants.DOM_WELLFORMED)
  -                || name.equals 
(Constants.DOM_IGNORE_UNKNOWN_CHARACTER_DENORMALIZATIONS)
  -                || name.equals (Constants.DOM_INFOSET)) {
  +                || name.equals 
(Constants.DOM_IGNORE_UNKNOWN_CHARACTER_DENORMALIZATIONS)) {
                       if (!state) { // false is not supported
                           String msg =
                           DOMMessageFormatter.formatMessage (
  @@ -593,15 +626,30 @@
               return (fConfiguration.getFeature (DISALLOW_DOCTYPE_DECL_FEATURE))
               ? Boolean.TRUE
               : Boolean.FALSE;         
  -        }        
  -        else if (
  -        name.equals (Constants.DOM_NAMESPACE_DECLARATIONS)
  -        || name.equals (Constants.DOM_CDATA_SECTIONS)
  +        }
  +        else if (name.equals (Constants.DOM_INFOSET)) {
  +            // REVISIT: This is somewhat expensive to compute
  +            // but it's possible that the user has a reference
  +            // to the configuration and is changing the values
  +            // of these features directly on it.
  +            boolean infoset = fConfiguration.getFeature(NAMESPACES) &&
  +                fConfiguration.getFeature(INCLUDE_COMMENTS_FEATURE) &&
  +                fConfiguration.getFeature(INCLUDE_IGNORABLE_WHITESPACE) && 
  +                !fConfiguration.getFeature(DYNAMIC_VALIDATION) &&
  +                !fConfiguration.getFeature(CREATE_ENTITY_REF_NODES) &&
  +                !fConfiguration.getFeature(NORMALIZE_DATA) &&
  +                !fConfiguration.getFeature(CREATE_CDATA_NODES_FEATURE);
  +            return (infoset) ? Boolean.TRUE : Boolean.FALSE; 
  +        }
  +        else if (name.equals(Constants.DOM_CDATA_SECTIONS)) {
  +            return (fConfiguration.getFeature(CREATE_CDATA_NODES_FEATURE))
  +                ? Boolean.TRUE : Boolean.FALSE;
  +        }
  +        else if (name.equals(Constants.DOM_NAMESPACE_DECLARATIONS)
           || name.equals (Constants.DOM_WELLFORMED)
           || name.equals (Constants.DOM_IGNORE_UNKNOWN_CHARACTER_DENORMALIZATIONS)
           || name.equals (Constants.DOM_CANONICAL_FORM)
           || name.equals (Constants.DOM_SUPPORTED_MEDIATYPES_ONLY)
  -        || name.equals (Constants.DOM_INFOSET)
           || name.equals (Constants.DOM_CHARSET_OVERRIDES_XML_ENCODING)) {
               return (fConfiguration.getFeature (name))
               ? Boolean.TRUE
  @@ -657,21 +705,19 @@
                   // true is not supported
                   return (state) ? false : true;
               }
  -            else if (
  -            name.equals (Constants.DOM_CDATA_SECTIONS)
  -            || name.equals (Constants.DOM_NAMESPACE_DECLARATIONS)
  +            else if (name.equals (Constants.DOM_NAMESPACE_DECLARATIONS)
               || name.equals (Constants.DOM_WELLFORMED)
  -            || name.equals (Constants.DOM_IGNORE_UNKNOWN_CHARACTER_DENORMALIZATIONS)
  -            || name.equals (Constants.DOM_INFOSET)
  -            || name.equals (Constants.DOM_DISALLOW_DOCTYPE) ) {
  +            || name.equals 
(Constants.DOM_IGNORE_UNKNOWN_CHARACTER_DENORMALIZATIONS)) {
                   // false is not supported
                   return (state) ? true : false;
               }
  -            else if (
  -            name.equals (Constants.DOM_CHARSET_OVERRIDES_XML_ENCODING)
  +            else if (name.equals (Constants.DOM_CDATA_SECTIONS)
  +            || name.equals (Constants.DOM_CHARSET_OVERRIDES_XML_ENCODING)
               || name.equals (Constants.DOM_COMMENTS)
               || name.equals (Constants.DOM_DATATYPE_NORMALIZATION)
  +            || name.equals (Constants.DOM_DISALLOW_DOCTYPE)
               || name.equals (Constants.DOM_ENTITIES)
  +            || name.equals (Constants.DOM_INFOSET)
               || name.equals (Constants.DOM_NAMESPACES)
               || name.equals (Constants.DOM_VALIDATE)
               || name.equals (Constants.DOM_VALIDATE_IF_SCHEMA)
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to