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 import org.codehaus.groovy.control.SourceUnit;
008 import org.codehaus.groovy.syntax.SyntaxException;
009
010
011
012 /**
013 * A base class for compilation messages.
014 *
015 * @author <a href="mailto:cpoirier@dreaming.org">Chris Poirier</a>
016 *
017 * @version $Id: Message.java,v 1.2 2005/06/09 19:51:59 blackdrag Exp $
018 */
019
020 public abstract class Message
021 {
022
023
024 /**
025 * Writes the message to the specified PrintWriter. The supplied
026 * ProcessingUnit is the unit that holds this Message.
027 */
028
029 public abstract void write( PrintWriter writer, Janitor janitor );
030
031
032 /**
033 * A synonyn for write( writer, owner, null ).
034 */
035
036 public final void write( PrintWriter writer)
037 {
038 write( writer, null );
039 }
040
041
042
043 //---------------------------------------------------------------------------
044 // FACTORY METHODS
045
046
047 /**
048 * Creates a new Message from the specified text.
049 */
050
051 public static Message create( String text, ProcessingUnit owner )
052 {
053 return new SimpleMessage( text, owner );
054 }
055
056
057
058 /**
059 * Creates a new Message from the specified text.
060 */
061
062 public static Message create( String text, Object data, ProcessingUnit owner )
063 {
064 return new SimpleMessage( text, data, owner);
065 }
066
067
068
069 /**
070 * Creates a new Message from the specified SyntaxException.
071 */
072
073 public static Message create( SyntaxException error, SourceUnit owner )
074 {
075 return new SyntaxErrorMessage( error, owner );
076 }
077
078
079
080
081 }
082
083
084
085