1 16 package org.apache.cocoon.util; 17 18 import org.apache.avalon.framework.logger.Logger; 19 20 import javax.xml.transform.ErrorListener ; 21 import javax.xml.transform.SourceLocator ; 22 import javax.xml.transform.TransformerException ; 23 24 32 public class TraxErrorHandler implements ErrorListener { 33 34 private StringBuffer warnings = new StringBuffer ("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 exception ) 42 throws TransformerException 43 { 44 final String 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 exception ) 56 throws TransformerException 57 { 58 final String 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 exception ) 70 throws TransformerException 71 { 72 final String 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 (warnings.toString()); 83 } finally { 84 warnings = new StringBuffer (); 85 } 86 } 87 88 private String getMessage( TransformerException exception ) { 89 90 SourceLocator locator = exception.getLocator(); 91 if ( null != locator ) { 92 String 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 |