KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > mmbase > util > XMLErrorHandler


1 /*
2
3 This software is OSI Certified Open Source Software.
4 OSI Certified is a certification mark of the Open Source Initiative.
5
6 The license (Mozilla version 1.0) can be read at the MMBase site.
7 See http://www.MMBase.org/license
8
9 */

10 package org.mmbase.util;
11
12 import org.mmbase.util.logging.Logger;
13 import org.mmbase.util.logging.Logging;
14 import org.xml.sax.ErrorHandler JavaDoc;
15 import org.xml.sax.SAXException JavaDoc;
16 import org.xml.sax.SAXParseException JavaDoc;
17
18 /**
19  * Provides ErrorHandler methods
20  *
21  * @move org.mmbase.util.xml
22  * @rename ErrorHandler
23  * @author Gerard van Enk
24  * @version $Id: XMLErrorHandler.java,v 1.17 2005/08/29 08:54:15 michiel Exp $
25  */

26
27 public class XMLErrorHandler implements ErrorHandler JavaDoc {
28     public static final int WARNING = 1;
29     public static final int ERROR = 2;
30     public static final int FATAL_ERROR = 3;
31     public static final int NEVER = 4;
32
33     private static Logger log = Logging.getLoggerInstance(XMLErrorHandler.class);
34     private int exceptionLevel;
35     private boolean logMessages;
36     private boolean warning = false;
37     private boolean error = false;
38     private boolean fatal = false;
39
40     private StringBuffer JavaDoc messages = new StringBuffer JavaDoc();
41
42
43     public XMLErrorHandler() {
44         // default keep old behaviour
45
logMessages = true;
46         exceptionLevel = NEVER;
47     }
48
49     public XMLErrorHandler(boolean log, int exceptionLevel) {
50         this.logMessages = log;
51         this.exceptionLevel = exceptionLevel;
52     }
53
54     public void warning(SAXParseException JavaDoc ex) throws SAXException JavaDoc {
55         String JavaDoc message = getLocationString(ex)+": "+ ex.getMessage();
56         messages.append(message + "\n");
57         warning = true;
58         if(logMessages) {
59             log.warn(message);
60         }
61         if(exceptionLevel<=WARNING) {
62             throw ex;
63         }
64     }
65
66     public void error(SAXParseException JavaDoc ex) throws SAXException JavaDoc{
67         String JavaDoc message = getLocationString(ex)+": "+ ex.getMessage();
68         messages.append(message + "\n");
69         error = true;
70         if(logMessages) {
71             log.error(message);
72             log.debug(Logging.stackTrace(new Throwable JavaDoc()));
73         }
74         if(exceptionLevel<=ERROR) {
75             throw ex;
76         }
77     }
78
79     public void fatalError(SAXParseException JavaDoc ex) throws SAXException JavaDoc {
80         String JavaDoc message = getLocationString(ex)+": "+ ex.getMessage();
81         messages.append(message + "\n");
82         fatal = true;
83         if(logMessages) {
84             log.fatal(message);
85         }
86         if(exceptionLevel<=FATAL_ERROR) {
87             throw ex;
88         }
89     }
90
91     public boolean foundWarning() {
92         return warning;
93     }
94
95     public boolean foundError() {
96         return error;
97     }
98
99     public boolean foundFatalError() {
100         return fatal;
101     }
102
103     public boolean foundNothing() {
104         return !(warning || error || fatal);
105     }
106
107     public String JavaDoc getMessageBuffer() {
108         return messages.toString();
109     }
110
111     /**
112      * Returns a string of the location.
113      */

114     private String JavaDoc getLocationString(SAXParseException JavaDoc ex) {
115         StringBuffer JavaDoc str = new StringBuffer JavaDoc();
116         String JavaDoc systemId = ex.getSystemId();
117         if (systemId != null) {
118             str.append(systemId);
119         } else {
120             str.append("[NO SYSTEM ID]");
121         }
122         str.append(" line:");
123         str.append(ex.getLineNumber());
124         str.append(" column:");
125         str.append(ex.getColumnNumber());
126         return str.toString();
127     }
128 }
129
Popular Tags