KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > sf > saxon > StandardErrorHandler


1 package net.sf.saxon;
2
3 import net.sf.saxon.trans.DynamicError;
4 import net.sf.saxon.trans.SaxonErrorCode;
5 import org.xml.sax.SAXException JavaDoc;
6 import org.xml.sax.SAXParseException JavaDoc;
7
8 import javax.xml.transform.ErrorListener JavaDoc;
9 import javax.xml.transform.TransformerException JavaDoc;
10 import java.io.PrintWriter JavaDoc;
11 import java.io.Writer JavaDoc;
12
13 public class StandardErrorHandler implements org.xml.sax.ErrorHandler JavaDoc, javax.xml.transform.SourceLocator JavaDoc {
14
15     ////////////////////////////////////////////////////////////////////////////
16
// Implement the org.xml.sax.ErrorHandler interface.
17
////////////////////////////////////////////////////////////////////////////
18

19     private ErrorListener JavaDoc errorListener;
20     private String JavaDoc systemId;
21     private int lineNumber = -1;
22     private int columnNumber = -1;
23
24     private Writer JavaDoc errorOutput = new PrintWriter JavaDoc(System.err);
25
26     public StandardErrorHandler(ErrorListener JavaDoc listener) {
27         errorListener = listener;
28     }
29
30     /**
31     * Set output for error messages produced by the default error handler.
32     * The default error handler does not throw an exception
33     * for parse errors or input I/O errors, rather it returns a result code and
34     * writes diagnostics to a user-specified output writer, which defaults to
35     * System.err<BR>
36     * This call has no effect if setErrorHandler() has been called to supply a
37     * user-defined error handler
38     * @param writer The Writer to use for error messages
39     */

40
41     public void setErrorOutput(Writer JavaDoc writer) {
42         errorOutput = writer;
43     }
44
45     /**
46     * Callback interface for SAX: not for application use
47     */

48
49     public void warning (SAXParseException JavaDoc e) {
50         if (errorListener != null) {
51             try {
52                 errorListener.warning(new TransformerException JavaDoc(e));
53             } catch (Exception JavaDoc err) {}
54         }
55     }
56
57     /**
58     * Callback interface for SAX: not for application use
59     */

60
61     public void error (SAXParseException JavaDoc e) throws SAXException JavaDoc {
62         reportError(e, false);
63         //failed = true;
64
}
65
66     /**
67     * Callback interface for SAX: not for application use
68     */

69
70     public void fatalError (SAXParseException JavaDoc e) throws SAXException JavaDoc {
71         reportError(e, true);
72         //failed = true;
73
throw e;
74     }
75
76     /**
77     * Common routine for SAX errors and fatal errors
78     */

79
80     protected void reportError (SAXParseException JavaDoc e, boolean isFatal) {
81
82         if (errorListener != null) {
83             try {
84                 systemId = e.getSystemId();
85                 lineNumber = e.getLineNumber();
86                 columnNumber = e.getColumnNumber();
87                 DynamicError err =
88                     new DynamicError("Error reported by XML parser", this, e);
89                 err.setErrorCode(SaxonErrorCode.SXXP0003);
90                 if (isFatal) {
91                     errorListener.fatalError(err);
92                 } else {
93                     errorListener.error(err);
94                 }
95             } catch (Exception JavaDoc err) {}
96         } else {
97
98             try {
99                 String JavaDoc errcat = (isFatal ? "Fatal error" : "Error");
100                 errorOutput.write(errcat + " reported by XML parser: " + e.getMessage() + "\n");
101                 errorOutput.write(" URL: " + e.getSystemId() + "\n");
102                 errorOutput.write(" Line: " + e.getLineNumber() + "\n");
103                 errorOutput.write(" Column: " + e.getColumnNumber() + "\n");
104                 errorOutput.flush();
105             } catch (Exception JavaDoc e2) {
106                 System.err.println(e);
107                 System.err.println(e2);
108                 e2.printStackTrace();
109             };
110         }
111     }
112
113     ////////////////////////////////////////////////////////////////////////////
114
// Implement the SourceLocator interface.
115
////////////////////////////////////////////////////////////////////////////
116

117     public String JavaDoc getSystemId() {
118         return systemId;
119     }
120
121     public String JavaDoc getPublicId() {
122         return null;
123     }
124
125     public int getLineNumber() {
126         return lineNumber;
127     }
128
129     public int getColumnNumber() {
130         return columnNumber;
131     }
132 }
133
134 //
135
// The contents of this file are subject to the Mozilla Public License Version 1.0 (the "License");
136
// you may not use this file except in compliance with the License. You may obtain a copy of the
137
// License at http://www.mozilla.org/MPL/
138
//
139
// Software distributed under the License is distributed on an "AS IS" basis,
140
// WITHOUT WARRANTY OF ANY KIND, either express or implied.
141
// See the License for the specific language governing rights and limitations under the License.
142
//
143
// The Original Code is: all this file.
144
//
145
// The Initial Developer of the Original Code is Michael H. Kay.
146
//
147
// Portions created by (your name) are Copyright (C) (your legal entity). All Rights Reserved.
148
//
149
// Contributor(s): none.
150
//
Popular Tags