KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > cocoon > util > TraxErrorHandler


1 /*
2  * Copyright 1999-2004 The Apache Software Foundation.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16 package org.apache.cocoon.util;
17
18 import org.apache.avalon.framework.logger.Logger;
19
20 import javax.xml.transform.ErrorListener JavaDoc;
21 import javax.xml.transform.SourceLocator JavaDoc;
22 import javax.xml.transform.TransformerException JavaDoc;
23
24 /**
25  * This ErrorListener simply logs the exception and in
26  * case of an fatal-error the exception is rethrown.
27  * Warnings and errors are ignored.
28  *
29  * @author <a HREF="mailto:cziegeler@apache.org">Carsten Ziegeler</a>
30  * @version CVS $Id: TraxErrorHandler.java 124698 2005-01-09 01:57:13Z antonio $
31  */

32 public class TraxErrorHandler implements ErrorListener JavaDoc {
33
34     private StringBuffer JavaDoc warnings = new StringBuffer JavaDoc("Errors in XSLT transformation:\n");
35     private Logger logger = null;
36
37     public TraxErrorHandler( Logger logger ) {
38         this.logger = logger;
39     }
40
41     public void warning( TransformerException JavaDoc exception )
42             throws TransformerException JavaDoc
43     {
44         final String JavaDoc message = getMessage( exception );
45         if ( this.logger != null ) {
46             this.logger.warn( message );
47         } else {
48             System.out.println( "WARNING: " + message );
49         }
50         warnings.append("Warning: ");
51         warnings.append(message);
52         warnings.append("\n");
53     }
54
55     public void error( TransformerException JavaDoc exception )
56             throws TransformerException JavaDoc
57     {
58         final String JavaDoc message = getMessage( exception );
59         if ( this.logger != null ) {
60             this.logger.error( message, exception );
61         } else {
62             System.out.println( "ERROR: " + message );
63         }
64         warnings.append("Error: ");
65         warnings.append(message);
66         warnings.append("\n");
67     }
68
69     public void fatalError( TransformerException JavaDoc exception )
70             throws TransformerException JavaDoc
71     {
72         final String JavaDoc message = getMessage( exception );
73         if ( this.logger != null ) {
74             this.logger.fatalError( message, exception );
75         } else {
76             System.out.println( "FATAL-ERROR: " + message );
77         }
78         warnings.append("Fatal: ");
79         warnings.append(message);
80         warnings.append("\n");
81         try {
82             throw new TransformerException JavaDoc(warnings.toString());
83         } finally {
84             warnings = new StringBuffer JavaDoc();
85         }
86     }
87
88     private String JavaDoc getMessage( TransformerException JavaDoc exception ) {
89
90         SourceLocator JavaDoc locator = exception.getLocator();
91         if ( null != locator ) {
92             String JavaDoc id = ( !locator.getPublicId().equals(locator.getPublicId()))
93                     ? locator.getPublicId()
94                     : ( null != locator.getSystemId() )
95                     ? locator.getSystemId() : "SystemId Unknown";
96             return "File " + id
97                     + "; Line " + locator.getLineNumber()
98                     + "; Column " + locator.getColumnNumber()
99                     + "; " + exception.getMessage();
100         }
101         return exception.getMessage();
102     }
103 }
104
Popular Tags