You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by mr...@apache.org on 2004/05/14 21:37:54 UTC
cvs commit: xml-xerces/java/src/org/apache/xml/serialize XML11Serializer.java BaseMarkupSerializer.java XMLSerializer.java DOMSerializerImpl.java
mrglavas 2004/05/14 12:37:54
Modified: java/src/org/apache/xml/serialize XML11Serializer.java
BaseMarkupSerializer.java XMLSerializer.java
DOMSerializerImpl.java
Log:
Fixing Jira Bug #961:
http://nagoya.apache.org/jira/browse/XERCESJ-961
When 'split-cdata-sections' is false, unrepresentable
characters in a CDATAsection should be reported as
"wf-invalid-character" errors if the parameter
"well-formed" is set to true. The error is not recoverable.
We were not reporting the correct error type nor was
the serializer being unconditionally halted. It was not
throwing the expected LSException. This is fixed thanks
to the patch by Jonathan Au.
Revision Changes Path
1.10 +3 -3 xml-xerces/java/src/org/apache/xml/serialize/XML11Serializer.java
Index: XML11Serializer.java
===================================================================
RCS file: /home/cvs/xml-xerces/java/src/org/apache/xml/serialize/XML11Serializer.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- XML11Serializer.java 24 Feb 2004 23:34:03 -0000 1.9
+++ XML11Serializer.java 14 May 2004 19:37:53 -0000 1.10
@@ -311,7 +311,7 @@
modifyDOMError(
msg,
DOMError.SEVERITY_FATAL_ERROR,
- fCurrentNode);
+ null, fCurrentNode);
boolean continueProcess =
fDOMErrorHandler.handleError(fDOMError);
if (!continueProcess) {
@@ -327,7 +327,7 @@
modifyDOMError(
msg,
DOMError.SEVERITY_WARNING,
- fCurrentNode);
+ null, fCurrentNode);
fDOMErrorHandler.handleError(fDOMError);
}
}
1.54 +24 -20 xml-xerces/java/src/org/apache/xml/serialize/BaseMarkupSerializer.java
Index: BaseMarkupSerializer.java
===================================================================
RCS file: /home/cvs/xml-xerces/java/src/org/apache/xml/serialize/BaseMarkupSerializer.java,v
retrieving revision 1.53
retrieving revision 1.54
diff -u -r1.53 -r1.54
--- BaseMarkupSerializer.java 29 Mar 2004 19:19:31 -0000 1.53
+++ BaseMarkupSerializer.java 14 May 2004 19:37:53 -0000 1.54
@@ -64,6 +64,7 @@
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.Notation;
+import org.w3c.dom.ls.LSException;
import org.w3c.dom.ls.LSSerializerFilter;
import org.w3c.dom.traversal.NodeFilter;
import org.xml.sax.ContentHandler;
@@ -1412,23 +1413,24 @@
if (fDOMErrorHandler != null) {
// REVISIT: this means that if DOM Error handler is not registered we don't report any
// fatal errors and might serialize not wellformed document
- if ((features & DOMSerializerImpl.SPLITCDATA) == 0
- && (features & DOMSerializerImpl.WELLFORMED) == 0) {
- // issue fatal error
- String msg =
- DOMMessageFormatter.formatMessage(
- DOMMessageFormatter.SERIALIZER_DOMAIN,
- "EndingCDATA",
- null);
- modifyDOMError(
- msg,
- DOMError.SEVERITY_FATAL_ERROR,
- fCurrentNode);
- boolean continueProcess =
+ if ((features & DOMSerializerImpl.SPLITCDATA) == 0) {
+ String msg = DOMMessageFormatter.formatMessage(
+ DOMMessageFormatter.SERIALIZER_DOMAIN,
+ "EndingCDATA",
+ null);
+ if ((features & DOMSerializerImpl.WELLFORMED) != 0) {
+ // issue fatal error
+ modifyDOMError(msg, DOMError.SEVERITY_FATAL_ERROR, "wf-invalid-character", fCurrentNode);
fDOMErrorHandler.handleError(fDOMError);
- if (!continueProcess) {
- throw new IOException();
- }
+ throw new LSException(LSException.SERIALIZE_ERR, msg);
+ }
+ else {
+ // issue error
+ modifyDOMError(msg, DOMError.SEVERITY_ERROR, "cdata-section-not-splitted", fCurrentNode);
+ if (!fDOMErrorHandler.handleError(fDOMError)) {
+ throw new LSException(LSException.SERIALIZE_ERR, msg);
+ }
+ }
} else {
// issue warning
String msg =
@@ -1439,7 +1441,7 @@
modifyDOMError(
msg,
DOMError.SEVERITY_WARNING,
- fCurrentNode);
+ null, fCurrentNode);
fDOMErrorHandler.handleError(fDOMError);
}
}
@@ -1811,11 +1813,13 @@
*
* @param message
* @param severity
+ * @param type
* @return a DOMError
*/
- protected DOMError modifyDOMError(String message, short severity, Node node){
+ protected DOMError modifyDOMError(String message, short severity, String type, Node node){
fDOMError.reset();
fDOMError.fMessage = message;
+ fDOMError.fType = type;
fDOMError.fSeverity = severity;
fDOMError.fLocator = new DOMLocatorImpl(-1, -1, -1, node, null);
return fDOMError;
@@ -1825,7 +1829,7 @@
protected void fatalError(String message) throws IOException{
if (fDOMErrorHandler != null) {
- modifyDOMError(message, DOMError.SEVERITY_FATAL_ERROR, fCurrentNode);
+ modifyDOMError(message, DOMError.SEVERITY_FATAL_ERROR, null, fCurrentNode);
fDOMErrorHandler.handleError(fDOMError);
}
else {
1.62 +4 -4 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.61
retrieving revision 1.62
diff -u -r1.61 -r1.62
--- XMLSerializer.java 7 May 2004 21:35:35 -0000 1.61
+++ XMLSerializer.java 14 May 2004 19:37:53 -0000 1.62
@@ -742,7 +742,7 @@
if (fDOMErrorHandler != null) {
String msg = DOMMessageFormatter.formatMessage(
DOMMessageFormatter.XML_DOMAIN,"CantBindXMLNS",null );
- modifyDOMError(msg, DOMError.SEVERITY_ERROR, attr);
+ modifyDOMError(msg, DOMError.SEVERITY_ERROR, null, attr);
boolean continueProcess = fDOMErrorHandler.handleError(fDOMError);
if (!continueProcess) {
// stop the namespace fixup and validation
@@ -859,7 +859,7 @@
String msg = DOMMessageFormatter.formatMessage(
DOMMessageFormatter.DOM_DOMAIN, "NullLocalElementName",
new Object[]{elem.getNodeName()});
- modifyDOMError(msg,DOMError.SEVERITY_ERROR, elem);
+ modifyDOMError(msg,DOMError.SEVERITY_ERROR, null, elem);
boolean continueProcess = fDOMErrorHandler.handleError(fDOMError);
// REVISIT: should we terminate upon request?
if (!continueProcess) {
@@ -1032,7 +1032,7 @@
String msg = DOMMessageFormatter.formatMessage(
DOMMessageFormatter.DOM_DOMAIN,
"NullLocalAttrName", new Object[]{attr.getNodeName()});
- modifyDOMError(msg, DOMError.SEVERITY_ERROR, attr);
+ modifyDOMError(msg, DOMError.SEVERITY_ERROR, null, attr);
boolean continueProcess = fDOMErrorHandler.handleError(fDOMError);
if (!continueProcess) {
// stop the namespace fixup and validation
1.23 +3 -1 xml-xerces/java/src/org/apache/xml/serialize/DOMSerializerImpl.java
Index: DOMSerializerImpl.java
===================================================================
RCS file: /home/cvs/xml-xerces/java/src/org/apache/xml/serialize/DOMSerializerImpl.java,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- DOMSerializerImpl.java 7 May 2004 21:35:35 -0000 1.22
+++ DOMSerializerImpl.java 14 May 2004 19:37:53 -0000 1.23
@@ -499,6 +499,8 @@
ser.serialize((Element)wnode);
else
return null;
+ } catch (LSException lse){
+ throw lse;
} catch (RuntimeException e) {
if (e == DOMNormalizer.abort){
// stopped at user request
---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org