FileDocCategorySizeDatePackage
DOMErrorHandlerWrapper.javaAPI DocJava SE 5 API13482Fri Aug 26 14:55:56 BST 2005com.sun.org.apache.xerces.internal.util

DOMErrorHandlerWrapper

public class DOMErrorHandlerWrapper extends Object implements DOMErrorHandler, XMLErrorHandler
This class handles DOM errors .
see
DOMErrorHandler
author
Gopal Sharma, SUN Microsystems Inc.
version
$Id: DOMErrorHandlerWrapper.java,v 1.12 2004/04/23 04:40:38 mrglavas Exp $

Fields Summary
private static Hashtable
fgDOMErrorTypeTable
Map for converting internal error codes to DOM error types.
protected DOMErrorHandler
fDomErrorHandler
boolean
eStatus
protected PrintWriter
fOut
public Node
fCurrentNode
protected final XMLErrorCode
fErrorCode
Error code for comparisons.
protected final DOMErrorImpl
fDOMError
Constructors Summary
public DOMErrorHandlerWrapper()

    
     
        // initialize error type table: internal error codes (represented by domain and key) need to be mapped to a DOM error type.
        fgDOMErrorTypeTable = new Hashtable();   
        fgDOMErrorTypeTable.put(new XMLErrorCode(XMLMessageFormatter.XML_DOMAIN, "DoctypeNotAllowed"), "doctype-not-allowed");
        fgDOMErrorTypeTable.put(new XMLErrorCode(XMLMessageFormatter.XML_DOMAIN, "ElementUnterminated"), "wf-invalid-character-in-node-name");
        fgDOMErrorTypeTable.put(new XMLErrorCode(XMLMessageFormatter.XML_DOMAIN, "EncodingDeclInvalid"), "unsupported-encoding");
        fgDOMErrorTypeTable.put(new XMLErrorCode(XMLMessageFormatter.XML_DOMAIN, "EqRequiredInAttribute"), "wf-invalid-character-in-node-name");
        fgDOMErrorTypeTable.put(new XMLErrorCode(XMLMessageFormatter.XML_DOMAIN, "LessthanInAttValue"), "wf-invalid-character");
    
        fOut = new PrintWriter(System.err);
    
public DOMErrorHandlerWrapper(DOMErrorHandler domErrorHandler)

        fDomErrorHandler = domErrorHandler;     
    
Methods Summary
public voiderror(java.lang.String domain, java.lang.String key, com.sun.org.apache.xerces.internal.xni.parser.XMLParseException exception)
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.

        fDOMError.fSeverity = DOMError.SEVERITY_ERROR;
        fDOMError.fException = exception;
        fDOMError.fType = key;         
        fDOMError.fRelatedData = fDOMError.fMessage = exception.getMessage();
        DOMLocatorImpl locator = fDOMError.fLocator;
        if (locator != null) {
            locator.fColumnNumber = exception.getColumnNumber();
            locator.fLineNumber = exception.getLineNumber();
            locator.fUri = exception.getExpandedSystemId();
            locator.fRelatedNode= fCurrentNode;
        }
        if (fDomErrorHandler != null) {
            fDomErrorHandler.handleError(fDOMError);
        }
    
public voidfatalError(java.lang.String domain, java.lang.String key, com.sun.org.apache.xerces.internal.xni.parser.XMLParseException exception)
Report a fatal error. Fatal errors usually occur when the document is not well-formed and signifies that the parser cannot continue normal operation.

Note: The error handler should always throw an XNIException 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.

        fDOMError.fSeverity = DOMError.SEVERITY_FATAL_ERROR;
        fDOMError.fException = exception;
        fErrorCode.setValues(domain, key);
        String domErrorType = (String) fgDOMErrorTypeTable.get(fErrorCode);
        fDOMError.fType = (domErrorType != null) ? domErrorType : key;
        fDOMError.fRelatedData = fDOMError.fMessage = exception.getMessage();
        DOMLocatorImpl locator = fDOMError.fLocator;
        if (locator != null) {
            locator.fColumnNumber = exception.getColumnNumber();
            locator.fLineNumber = exception.getLineNumber();
            locator.fUri = exception.getExpandedSystemId();
            locator.fRelatedNode = fCurrentNode;
        }
        if (fDomErrorHandler != null) {
            fDomErrorHandler.handleError(fDOMError);
        } 
    
public org.w3c.dom.DOMErrorHandlergetErrorHandler()

        return fDomErrorHandler;    
    
public booleanhandleError(org.w3c.dom.DOMError error)

        printError(error);
        return eStatus;
    
private voidprintError(org.w3c.dom.DOMError error)
Prints the error message.

        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("] ");
        DOMLocator locator = error.getLocation();
        if (locator != null) {
            fOut.print(locator.getLineNumber());
            fOut.print(":");
            fOut.print(locator.getColumnNumber());
            fOut.print(":");
            fOut.print(locator.getByteOffset());
            fOut.print(",");            
            fOut.print(locator.getUtf16Offset());
            Node node = locator.getRelatedNode();
            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();

    
public voidsetErrorHandler(org.w3c.dom.DOMErrorHandler errorHandler)
Sets the DOM error handler.

        fDomErrorHandler = errorHandler;
    
public voidwarning(java.lang.String domain, java.lang.String key, com.sun.org.apache.xerces.internal.xni.parser.XMLParseException exception)
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.

        fDOMError.fSeverity = DOMError.SEVERITY_WARNING;
        fDOMError.fException = exception;
        fDOMError.fType = key;         
        fDOMError.fRelatedData = fDOMError.fMessage = exception.getMessage();
        DOMLocatorImpl locator = fDOMError.fLocator;
        if (locator != null) {
            locator.fColumnNumber = exception.getColumnNumber();
            locator.fLineNumber = exception.getLineNumber();
            locator.fUri = exception.getExpandedSystemId();
            locator.fRelatedNode = fCurrentNode;
        }
        if (fDomErrorHandler != null) {
            fDomErrorHandler.handleError(fDOMError);
        }