001 package org.codehaus.groovy.control.messages; 002 003 import java.io.PrintWriter; 004 005 import org.codehaus.groovy.control.Janitor; 006 import org.codehaus.groovy.control.ProcessingUnit; 007 008 009 010 /** 011 * A class for error messages produced by the parser system. 012 * 013 * @author <a href="mailto:cpoirier@dreaming.org">Chris Poirier</a> 014 * 015 * @version $Id: ExceptionMessage.java,v 1.4 2005/06/09 19:51:59 blackdrag Exp $ 016 */ 017 018 public class ExceptionMessage extends Message 019 { 020 protected boolean verbose = true; 021 022 private Exception cause = null; // The exception source of the message, if any 023 ProcessingUnit owner = null; 024 025 public ExceptionMessage( Exception cause, boolean v, ProcessingUnit owner ) 026 { 027 this.verbose = v; 028 this.cause = cause; 029 this.owner = owner; 030 } 031 032 033 034 /** 035 * Returns the underlying Exception. 036 */ 037 038 public Exception getCause() 039 { 040 return this.cause; 041 } 042 043 044 045 /** 046 * Writes out a nicely formatted summary of the exception. 047 */ 048 049 public void write( PrintWriter output, Janitor janitor ) 050 { 051 String description = "General error during " + owner.getPhaseDescription() + ": "; 052 053 String message = cause.getMessage(); 054 if( message != null ) 055 { 056 output.println( description + message ); 057 } 058 else 059 { 060 output.println( description + cause ); 061 } 062 output.println(""); 063 064 if (verbose) { 065 cause.printStackTrace(output); 066 } 067 } 068 069 } 070 071 072