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