elena 2002/08/11 13:21:10
Modified: java/src/org/apache/xerces/util DOMErrorHandlerWrapper.java
Log:
Add current node field to the wrapper. This field can be set by other components,
such as
DOMNormalizer, to point to the current node in process.
Revision Changes Path
1.5 +202 -165
xml-xerces/java/src/org/apache/xerces/util/DOMErrorHandlerWrapper.java
Index: DOMErrorHandlerWrapper.java
===================================================================
RCS file:
/home/cvs/xml-xerces/java/src/org/apache/xerces/util/DOMErrorHandlerWrapper.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- DOMErrorHandlerWrapper.java 9 Aug 2002 15:18:19 -0000 1.4
+++ DOMErrorHandlerWrapper.java 11 Aug 2002 20:21:10 -0000 1.5
@@ -61,10 +61,12 @@
import org.apache.xerces.xni.parser.XMLErrorHandler;
import org.apache.xerces.xni.parser.XMLParseException;
+import org.w3c.dom.Node;
import org.w3c.dom.DOMError;
import org.w3c.dom.DOMLocator;
import org.w3c.dom.DOMErrorHandler;
import org.apache.xerces.dom.DOMErrorImpl;
+import org.apache.xerces.dom.DOMLocatorImpl;
import java.io.PrintWriter;
@@ -85,175 +87,210 @@
// I think we can avoid this indirection if we modify XMLErrorReporter.
--el
public class DOMErrorHandlerWrapper
- implements XMLErrorHandler, DOMErrorHandler {
+implements XMLErrorHandler, DOMErrorHandler {
- // It keeps the reference of DOMErrorHandler of application
- protected DOMErrorHandler fDomErrorHandler;
-
- // Error Status
- boolean eStatus = true ;
-
- // Print writer
- protected PrintWriter fOut;
-
-
- //
- // Constructors
- //
-
- // Default constructor /
-
- public DOMErrorHandlerWrapper() {
+ // It keeps the reference of DOMErrorHandler of application
+ protected DOMErrorHandler fDomErrorHandler;
+
+ // Error Status
+ boolean eStatus = true ;
+
+ // Print writer
+ protected PrintWriter fOut;
+
+ // some components may set error node
+ // @see DOMNormalizer.
+ public Node fCurrentNode;
+
+ protected final DOMErrorImpl fDOMError = new DOMErrorImpl();
+
+
+ //
+ // Constructors
+ //
+
+ // Default constructor /
+
+ public DOMErrorHandlerWrapper() {
fOut = new PrintWriter(System.err);
- }
+ }
-
- public DOMErrorHandlerWrapper(DOMErrorHandler domErrorHandler) {
- fDomErrorHandler = domErrorHandler;
- } // DOMErrorHandlerWrapper(DOMErrorHandler domErrorHandler)
-
-
- //
- // Public methods
- //
-
- /** Sets the DOM error handler. */
- public void setErrorHandler(DOMErrorHandler errorHandler) {
- fDomErrorHandler = errorHandler;
- } // setErrorHandler(ErrorHandler)
-
-
- public DOMErrorHandler getErrorHandler(){
- return fDomErrorHandler;
- } //getErrorHandler()
-
- //
- // XMLErrorHandler methods
- //
-
- /**
- * Reports a warning. Warnings are non-fatal and can be safely ignored
- * by most applications.
- *
- * @param domain The domain of the warning. The domain can be any
- * string but is suggested to be a valid URI. The
- * domain can be used to conveniently specify a web
- * site location of the relevent specification or
- * document pertaining to this warning.
- * @param key The warning key. This key can be any string and
- * is implementation dependent.
- * @param exception Exception.
- *
- * @throws XNIException Thrown to signal that the parser should stop
- * parsing the document.
- */
-
- public void warning(String domain, String key,
- XMLParseException exception) throws XNIException {
- DOMError error = new DOMErrorImpl(DOMError.SEVERITY_WARNING, exception);
- fDomErrorHandler.handleError(error);
- } // warning(String,String,XMLParseException)
-
- /**
- * Reports an error. Errors are non-fatal and usually signify that the
- * document is invalid with respect to its grammar(s).
- *
- * @param domain The domain of the error. The domain can be any
- * string but is suggested to be a valid URI. The
- * domain can be used to conveniently specify a web
- * site location of the relevent specification or
- * document pertaining to this error.
- * @param key The error key. This key can be any string and
- * is implementation dependent.
- * @param exception Exception.
- *
- * @throws XNIException Thrown to signal that the parser should stop
- * parsing the document.
- */
- public void error(String domain, String key,
- XMLParseException exception) throws XNIException {
- DOMError error = new DOMErrorImpl(DOMError.SEVERITY_ERROR, exception);
- fDomErrorHandler.handleError(error);
- } // error(String,String,XMLParseException)
-
- /**
- * Report a fatal error. Fatal errors usually occur when the document
- * is not well-formed and signifies that the parser cannot continue
- * normal operation.
- * <p>
- * <strong>Note:</strong> The error handler should <em>always</em>
- * throw an <code>XNIException</code> from this method. This exception
- * can either be the same exception that is passed as a parameter to
- * the method or a new XNI exception object. If the registered error
- * handler fails to throw an exception, the continuing operation of
- * the parser is undetermined.
- *
- * @param domain The domain of the fatal error. The domain can be
- * any string but is suggested to be a valid URI. The
- * domain can be used to conveniently specify a web
- * site location of the relevent specification or
- * document pertaining to this fatal error.
- * @param key The fatal error key. This key can be any string
- * and is implementation dependent.
- * @param exception Exception.
- *
- * @throws XNIException Thrown to signal that the parser should stop
- * parsing the document.
- */
- public void fatalError(String domain, String key,
- XMLParseException exception) throws XNIException {
- DOMError error = new DOMErrorImpl(DOMError.SEVERITY_FATAL_ERROR, exception);
- fDomErrorHandler.handleError(error);
- } // fatalError(String,String,XMLParseException)
-
-
- public boolean handleError(DOMError error) {
- printError(error);
- return eStatus;
- }
-
- /** Prints the error message. */
-
- private void printError(DOMError error) {
- int severity = -1;
- fOut.print("[");
- if ( severity == DOMError.SEVERITY_WARNING){
- fOut.print("Warning");
- }else if ( severity == DOMError.SEVERITY_ERROR){
- fOut.print("Error");
- }else{
- fOut.print("Fatal Error");
- eStatus = false ; //REVISIT: Abort processing if fatal error, do we
need to??
- }
+
+ public DOMErrorHandlerWrapper(DOMErrorHandler domErrorHandler) {
+ fDomErrorHandler = domErrorHandler;
+ } // DOMErrorHandlerWrapper(DOMErrorHandler domErrorHandler)
+
+
+ //
+ // Public methods
+ //
+
+ /** Sets the DOM error handler. */
+ public void setErrorHandler(DOMErrorHandler errorHandler) {
+ fDomErrorHandler = errorHandler;
+ } // setErrorHandler(ErrorHandler)
+
+
+ public DOMErrorHandler getErrorHandler(){
+ return fDomErrorHandler;
+ } //getErrorHandler()
+
+ //
+ // XMLErrorHandler methods
+ //
+
+ /**
+ * Reports a warning. Warnings are non-fatal and can be safely ignored
+ * by most applications.
+ *
+ * @param domain The domain of the warning. The domain can be any
+ * string but is suggested to be a valid URI. The
+ * domain can be used to conveniently specify a web
+ * site location of the relevent specification or
+ * document pertaining to this warning.
+ * @param key The warning key. This key can be any string and
+ * is implementation dependent.
+ * @param exception Exception.
+ *
+ * @throws XNIException Thrown to signal that the parser should stop
+ * parsing the document.
+ */
+
+ public void warning(String domain, String key,
+ XMLParseException exception) throws XNIException {
+ fDOMError.fSeverity = DOMError.SEVERITY_WARNING;
+ fDOMError.fException = exception;
+ fDOMError.fMessage = exception.getMessage();
+ DOMLocatorImpl locator = fDOMError.fLocator;
+ if (locator != null) {
+ locator.fColumnNumber = exception.getColumnNumber();
+ locator.fLineNumber = exception.getLineNumber();
+ locator.fUri = exception.getExpandedSystemId();
+ locator.fErrorNode = fCurrentNode;
+ }
+ fDomErrorHandler.handleError(fDOMError);
+ } // warning(String,String,XMLParseException)
+
+ /**
+ * Reports an error. Errors are non-fatal and usually signify that the
+ * document is invalid with respect to its grammar(s).
+ *
+ * @param domain The domain of the error. The domain can be any
+ * string but is suggested to be a valid URI. The
+ * domain can be used to conveniently specify a web
+ * site location of the relevent specification or
+ * document pertaining to this error.
+ * @param key The error key. This key can be any string and
+ * is implementation dependent.
+ * @param exception Exception.
+ *
+ * @throws XNIException Thrown to signal that the parser should stop
+ * parsing the document.
+ */
+ public void error(String domain, String key,
+ XMLParseException exception) throws XNIException {
+ fDOMError.fSeverity = DOMError.SEVERITY_ERROR;
+ fDOMError.fException = exception;
+ fDOMError.fMessage = exception.getMessage();
+ DOMLocatorImpl locator = fDOMError.fLocator;
+ if (locator != null) {
+ locator.fColumnNumber = exception.getColumnNumber();
+ locator.fLineNumber = exception.getLineNumber();
+ locator.fUri = exception.getExpandedSystemId();
+ locator.fErrorNode = fCurrentNode;
+ }
+ fDomErrorHandler.handleError(fDOMError);
+ } // error(String,String,XMLParseException)
+
+ /**
+ * Report a fatal error. Fatal errors usually occur when the document
+ * is not well-formed and signifies that the parser cannot continue
+ * normal operation.
+ * <p>
+ * <strong>Note:</strong> The error handler should <em>always</em>
+ * throw an <code>XNIException</code> from this method. This exception
+ * can either be the same exception that is passed as a parameter to
+ * the method or a new XNI exception object. If the registered error
+ * handler fails to throw an exception, the continuing operation of
+ * the parser is undetermined.
+ *
+ * @param domain The domain of the fatal error. The domain can be
+ * any string but is suggested to be a valid URI. The
+ * domain can be used to conveniently specify a web
+ * site location of the relevent specification or
+ * document pertaining to this fatal error.
+ * @param key The fatal error key. This key can be any string
+ * and is implementation dependent.
+ * @param exception Exception.
+ *
+ * @throws XNIException Thrown to signal that the parser should stop
+ * parsing the document.
+ */
+ public void fatalError(String domain, String key,
+ XMLParseException exception) throws XNIException {
+ fDOMError.fSeverity = DOMError.SEVERITY_FATAL_ERROR;
+ fDOMError.fException = exception;
+ fDOMError.fMessage = exception.getMessage();
+ DOMLocatorImpl locator = fDOMError.fLocator;
+ if (locator != null) {
+ locator.fColumnNumber = exception.getColumnNumber();
+ locator.fLineNumber = exception.getLineNumber();
+ locator.fUri = exception.getExpandedSystemId();
+ locator.fErrorNode = fCurrentNode;
+ }
+ fDomErrorHandler.handleError(fDOMError);
+ } // fatalError(String,String,XMLParseException)
+
+
+ public boolean handleError(DOMError error) {
+ printError(error);
+ return eStatus;
+ }
+
+ /** Prints the error message. */
+
+ private void printError(DOMError error) {
+ int severity = error.getSeverity();
+ fOut.print("[");
+ if ( severity == DOMError.SEVERITY_WARNING) {
+ fOut.print("Warning");
+ } else if ( severity == DOMError.SEVERITY_ERROR) {
+ fOut.print("Error");
+ } else {
+ fOut.print("FatalError");
+ eStatus = false ; //REVISIT: Abort processing if fatal error, do we
need to??
+ }
fOut.print("] ");
- fOut.print(": ");
- fOut.print(error.getMessage());
- fOut.print(':');
- fOut.print(error.getRelatedException());
- DOMLocator locator = error.getLocation();
- if (locator != null){
- fOut.print(":L ");
- fOut.print(locator.getLineNumber());
- fOut.print(":C ");
- fOut.print(locator.getColumnNumber());
- fOut.print(": ");
- fOut.print(locator.getOffset());
- fOut.print(": ");
- fOut.print(locator.getErrorNode().getNodeName());
- String systemId = locator.getUri();
- if (systemId != null) {
- int index = systemId.lastIndexOf('/');
- if (index != -1)
- systemId = systemId.substring(index + 1);
- fOut.print(": ");
- fOut.print(systemId);
- }
-
- }
- fOut.println();
- fOut.flush();
+ DOMLocator locator = error.getLocation();
+ if (locator != null) {
+ fOut.print(locator.getLineNumber());
+ fOut.print(":");
+ fOut.print(locator.getColumnNumber());
+ fOut.print(":");
+ fOut.print(locator.getOffset());
+ Node node = locator.getErrorNode();
+ if (node != null) {
+ fOut.print("[");
+ fOut.print(node.getNodeName());
+ fOut.print("]");
+ }
+ String systemId = locator.getUri();
+ if (systemId != null) {
+ int index = systemId.lastIndexOf('/');
+ if (index != -1)
+ systemId = systemId.substring(index + 1);
+ fOut.print(": ");
+ fOut.print(systemId);
+ }
+
+ }
+
+ fOut.print(":");
+ fOut.print(error.getMessage());
+ fOut.println();
+ fOut.flush();
} // printError(DOMError)
-
+
} // class DOMErrorHandlerWrapper
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]