You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by el...@apache.org on 2003/06/10 15:41:29 UTC

cvs commit: xml-xerces/java/src/org/apache/xml/serialize DOMWriterImpl.java XMLSerializer.java

elena       2003/06/10 06:41:29

  Modified:    java/src/org/apache/xml/serialize DOMWriterImpl.java
                        XMLSerializer.java
  Log:
  Fixing setParameter/canSetParameter: http://nagoya.apache.org/bugzilla/show_bug.cgi?id=20636
  
  Revision  Changes    Path
  1.14      +104 -67   xml-xerces/java/src/org/apache/xml/serialize/DOMWriterImpl.java
  
  Index: DOMWriterImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xml/serialize/DOMWriterImpl.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- DOMWriterImpl.java	13 May 2003 13:23:48 -0000	1.13
  +++ DOMWriterImpl.java	10 Jun 2003 13:41:29 -0000	1.14
  @@ -131,33 +131,70 @@
   	public void setParameter(String name, Object value) throws DOMException {
   		if (serializer.fFeatures.containsKey(name)) {
   			// This is a feature
  -			if (value == Boolean.TRUE || value == Boolean.FALSE){
  -				if (canSetParameter(name, value)) {
  +			if (value instanceof Boolean){
  +				boolean state = ((Boolean)value).booleanValue();
  +				if (name.equals(Constants.DOM_XMLDECL)){
  +					serializer._format.setOmitXMLDeclaration(!state);
   					serializer.fFeatures.put(name, value);
  -					if (name.equals(Constants.DOM_XMLDECL)) {
  -						serializer._format.setOmitXMLDeclaration(
  -							!((Boolean) value).booleanValue());
  +				}
  +				else if (name.equals(Constants.DOM_NAMESPACES)){
  +					serializer.fNamespaces = state;
  +					serializer.fFeatures.put(name, value);
  +				}
  +				else if (name.equals(Constants.DOM_SPLIT_CDATA)
  +				|| name.equals(Constants.DOM_DISCARD_DEFAULT_CONTENT)){
  +					// both values supported 		
  +					serializer.fFeatures.put(name, value);
  +				}			
  +				else if (name.equals(Constants.DOM_CANONICAL_FORM)
  +					|| name.equals(Constants.DOM_VALIDATE_IF_SCHEMA)
  +					|| name.equals(Constants.DOM_VALIDATE)
  +					|| name.equals(Constants.DOM_CHECK_CHAR_NORMALIZATION)
  +					|| name.equals(Constants.DOM_DATATYPE_NORMALIZATION)
  +					|| name.equals(Constants.DOM_FORMAT_PRETTY_PRINT)
  +					|| name.equals(Constants.DOM_NORMALIZE_CHARACTERS)
  +					// REVISIT: these must be supported
  +					|| name.equals(Constants.DOM_WELLFORMED)) {
  +					// true is not supported
  +					if (state){
  +						String msg = DOMMessageFormatter.formatMessage(
  +								DOMMessageFormatter.DOM_DOMAIN,
  +								"FEATURE_NOT_SUPPORTED",
  +								new Object[] { name });
  +						throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);
  +					}
  +				}
  +				else if (name.equals(Constants.DOM_INFOSET)
  +						|| name.equals(Constants.DOM_NAMESPACE_DECLARATIONS)
  +						|| name.equals(Constants.DOM_WHITESPACE_IN_ELEMENT_CONTENT)
  +						|| name.equals(Constants.DOM_IGNORE_CHAR_DENORMALIZATION)
  +						// REVISIT: these must be supported
  +						|| name.equals(Constants.DOM_ENTITIES)
  +						|| name.equals(Constants.DOM_CDATA_SECTIONS)
  +						|| name.equals(Constants.DOM_COMMENTS)) {
  +					// false is not supported
  +					if (!state){
  +						String msg = DOMMessageFormatter.formatMessage(
  +								DOMMessageFormatter.DOM_DOMAIN,
  +								"FEATURE_NOT_SUPPORTED",
  +								new Object[] { name });
  +						throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);
   					}
  -                    else if (name.equals(Constants.DOM_NAMESPACES)){
  -                        serializer.fNamespaces = (value==Boolean.TRUE)?true:false;
  -                    }
   				}
   				else {
   					String msg = DOMMessageFormatter.formatMessage(
   							DOMMessageFormatter.DOM_DOMAIN,
  -							"FEATURE_NOT_SUPPORTED",
  +							"FEATURE_NOT_FOUND",
   							new Object[] { name });
                       throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);
   				}
   			}
  -            else {
  -                // REVISIT: should be TYPE_MISMATCH
  -                String msg = DOMMessageFormatter.formatMessage(
  -                            DOMMessageFormatter.DOM_DOMAIN,
  -                            "FEATURE_NOT_SUPPORTED",
  -                            new Object[] { name });
  -                throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);
  -            }
  +			 // REVISIT: modify error exception to TYPE_MISMATCH
  + 			String msg = DOMMessageFormatter.formatMessage(
  +			 DOMMessageFormatter.DOM_DOMAIN,
  +			 "FEATURE_NOT_SUPPORTED",
  +			 new Object[] { name });
  +			throw new DOMException(DOMException.NOT_FOUND_ERR, msg);
   		}
   		else if (name.equals(Constants.DOM_ERROR_HANDLER)) {
   			if (value instanceof DOMErrorHandler) {
  @@ -169,7 +206,7 @@
                               DOMMessageFormatter.DOM_DOMAIN,
                               "FEATURE_NOT_SUPPORTED",
                               new Object[] { name });
  -               throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);
  +               throw new DOMException(DOMException.NOT_FOUND_ERR, msg);
   			}
   		}
   		else if (name.equals(Constants.DOM_ENTITY_RESOLVER)
  @@ -194,29 +231,42 @@
        * Check if parameter can be set
        */
   	public boolean canSetParameter(String name, Object state) {
  -		if (name.equals(Constants.DOM_NORMALIZE_CHARACTERS) 
  -			&& state == Boolean.TRUE){
  -			return false;
  -		}
  -		else if (name.equals(Constants.DOM_VALIDATE) && state == Boolean.TRUE) {
  -			return false;
  -		}
  -		else if (name.equals(Constants.DOM_WHITESPACE_IN_ELEMENT_CONTENT)
  -				&& state == Boolean.FALSE) {
  -			return false;
  -		}
  -		else if (name.equals(Constants.DOM_CANONICAL_FORM)
  -				&& state == Boolean.TRUE) {
  -			return false;
  +		if (state instanceof Boolean){
  +			boolean value = ((Boolean)state).booleanValue();
  +			if (name.equals(Constants.DOM_NAMESPACES)
  +			|| name.equals(Constants.DOM_SPLIT_CDATA)
  +			|| name.equals(Constants.DOM_DISCARD_DEFAULT_CONTENT)
  +			|| name.equals(Constants.DOM_XMLDECL)){
  +	            // both values supported 		
  +				return true;
  +			}			
  +			else if (name.equals(Constants.DOM_CANONICAL_FORM)
  +			    || name.equals(Constants.DOM_VALIDATE_IF_SCHEMA)
  +			    || name.equals(Constants.DOM_VALIDATE)
  +			    || name.equals(Constants.DOM_CHECK_CHAR_NORMALIZATION)
  +			    || name.equals(Constants.DOM_DATATYPE_NORMALIZATION)
  +			    || name.equals(Constants.DOM_FORMAT_PRETTY_PRINT)
  +			    || name.equals(Constants.DOM_NORMALIZE_CHARACTERS)
  +			    // REVISIT: these must be supported
  +			    || name.equals(Constants.DOM_WELLFORMED)) {
  +				// true is not supported
  +				return !value;
  +			}
  +			else if (name.equals(Constants.DOM_INFOSET)
  +					|| name.equals(Constants.DOM_NAMESPACE_DECLARATIONS)
  +			        || name.equals(Constants.DOM_WHITESPACE_IN_ELEMENT_CONTENT)
  +			        || name.equals(Constants.DOM_IGNORE_CHAR_DENORMALIZATION)
  +			        // REVISIT: these must be supported
  +			        || name.equals(Constants.DOM_ENTITIES)
  +					|| name.equals(Constants.DOM_CDATA_SECTIONS)
  +					|| name.equals(Constants.DOM_COMMENTS)) {
  +				// false is not supported
  +				return value;
  +			        }
   		}
  -		else if (name.equals(Constants.DOM_FORMAT_PRETTY_PRINT)
  -				&& state == Boolean.TRUE) {
  -			return false;
  +		else if (name.equals(Constants.DOM_ERROR_HANDLER)){
  +			return true;
   		}
  -        else if (serializer.fFeatures.get(name)!=null ||
  -            name.equals(Constants.DOM_ERROR_HANDLER)){
  -            return true;
  -        }
   	    return false; 
       }
       
  @@ -284,29 +334,6 @@
       }
   
       /**
  -     *  The error handler that will receive error notifications during 
  -     * serialization. The node where the error occured is passed to this 
  -     * error handler, any modification to nodes from within an error 
  -     * callback should be avoided since this will result in undefined, 
  -     * implementation dependent behavior. 
  -     */
  -    public DOMErrorHandler getErrorHandler() {
  -        return serializer.fDOMErrorHandler;
  -    }
  -
  -    /**
  -     * DOM L3 EXPERIMENTAL: 
  -     *  The error handler that will receive error notifications during 
  -     * serialization. The node where the error occured is passed to this 
  -     * error handler, any modification to nodes from within an error 
  -     * callback should be avoided since this will result in undefined, 
  -     * implementation dependent behavior. 
  -     */
  -    public void setErrorHandler(DOMErrorHandler errorHandler) {
  -        serializer.fDOMErrorHandler = errorHandler;
  -    }
  -
  -    /**
        * DOM L3 EXPERIMENTAL: 
        * Write out the specified node as described above in the description of 
        * <code>DOMWriter</code>. Writing a Document or Entity node produces a 
  @@ -538,17 +565,27 @@
           ser.fLocalNSBinder = new NamespaceSupport();
           ser.fSymbolTable = new SymbolTable();
           ser.fFeatures = new Hashtable();
  -        ser.fFeatures.put(Constants.NAMESPACES_FEATURE, Boolean.TRUE);
  +        ser.fFeatures.put(Constants.DOM_NAMESPACES, Boolean.TRUE);
           ser.fFeatures.put(Constants.DOM_NORMALIZE_CHARACTERS, Boolean.FALSE);
  -        ser.fFeatures.put(Constants.DOM_SPLIT_CDATA, Boolean.TRUE);
  +		ser.fFeatures.put(Constants.DOM_VALIDATE_IF_SCHEMA, Boolean.FALSE);
           ser.fFeatures.put(Constants.DOM_VALIDATE, Boolean.FALSE);
  -        ser.fFeatures.put(Constants.DOM_ENTITIES, Boolean.FALSE);
  +        ser.fFeatures.put(Constants.DOM_ENTITIES, Boolean.TRUE);
  +		ser.fFeatures.put(Constants.DOM_SPLIT_CDATA, Boolean.TRUE);
  +		ser.fFeatures.put(Constants.DOM_CDATA_SECTIONS, Boolean.TRUE);
  +		ser.fFeatures.put(Constants.DOM_COMMENTS, Boolean.TRUE);
           ser.fFeatures.put(Constants.DOM_WHITESPACE_IN_ELEMENT_CONTENT, Boolean.TRUE);
           ser.fFeatures.put(Constants.DOM_DISCARD_DEFAULT_CONTENT, Boolean.TRUE);
           ser.fFeatures.put(Constants.DOM_CANONICAL_FORM, Boolean.FALSE);
           ser.fFeatures.put(Constants.DOM_FORMAT_PRETTY_PRINT, Boolean.FALSE);
           ser.fFeatures.put(Constants.DOM_XMLDECL, Boolean.TRUE);
  -        ser.fFeatures.put(Constants.DOM_UNKNOWNCHARS, Boolean.TRUE);
  +		ser.fFeatures.put(Constants.DOM_CHECK_CHAR_NORMALIZATION, Boolean.FALSE);
  +		ser.fFeatures.put(Constants.DOM_DATATYPE_NORMALIZATION, Boolean.FALSE);
  +		ser.fFeatures.put(Constants.DOM_NORMALIZE_CHARACTERS, Boolean.FALSE);
  +		ser.fFeatures.put(Constants.DOM_WELLFORMED, Boolean.FALSE);
  +		ser.fFeatures.put(Constants.DOM_INFOSET, Boolean.FALSE);
  +		ser.fFeatures.put(Constants.DOM_NAMESPACE_DECLARATIONS, Boolean.TRUE);
  +		ser.fFeatures.put(Constants.DOM_WHITESPACE_IN_ELEMENT_CONTENT, Boolean.TRUE);
  +		ser.fFeatures.put(Constants.DOM_IGNORE_CHAR_DENORMALIZATION, Boolean.TRUE);
       }
   
       // copies all settings that could have been modified
  
  
  
  1.52      +3 -2      xml-xerces/java/src/org/apache/xml/serialize/XMLSerializer.java
  
  Index: XMLSerializer.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xml/serialize/XMLSerializer.java,v
  retrieving revision 1.51
  retrieving revision 1.52
  diff -u -r1.51 -r1.52
  --- XMLSerializer.java	30 May 2003 13:35:44 -0000	1.51
  +++ XMLSerializer.java	10 Jun 2003 13:41:29 -0000	1.52
  @@ -81,6 +81,7 @@
   
   import org.apache.xerces.dom.DOMMessageFormatter;
   import org.apache.xerces.dom3.DOMError;
  +import org.apache.xerces.impl.Constants;
   import org.apache.xerces.util.NamespaceSupport;
   import org.apache.xerces.util.SymbolTable;
   import org.apache.xerces.util.XMLChar;
  @@ -1157,7 +1158,7 @@
       private void printAttribute (String name, String value, boolean isSpecified) throws IOException{
   
           if (isSpecified || (fFeatures != null && 
  -                            !((Boolean)fFeatures.get("discard-default-content")).booleanValue())) {
  +                            !((Boolean)fFeatures.get(Constants.DOM_DISCARD_DEFAULT_CONTENT)).booleanValue())) {
               _printer.printSpace();
               _printer.printText( name );
               _printer.printText( "=\"" );
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org