View Javadoc

    1   package org.codehaus.groovy.control.messages;
    2
    3   import java.io.PrintWriter;
    4
    5   import org.codehaus.groovy.control.Janitor;
    6   import org.codehaus.groovy.control.ProcessingUnit;
    7   import org.codehaus.groovy.control.SourceUnit;
    8   import org.codehaus.groovy.syntax.CSTNode;
    9
    10
    11
    12  /***
    13   *  A base class for compilation messages.
    14   *
    15   *  @author <a href="mailto:cpoirier@dreaming.org">Chris Poirier</a>
    16   *
    17   *  @version $Id: LocatedMessage.java,v 1.1 2004/04/19 07:29:45 cpoirier Exp $
    18   */
    19
    20  public class LocatedMessage extends SimpleMessage
    21  {
    22      protected CSTNode context;  // The CSTNode that indicates the location to which the message applies
    23
    24
    25      public LocatedMessage( String message, CSTNode context )
    26      {
    27          super( message );
    28          this.context = context;
    29      }
    30
    31
    32      public LocatedMessage( String message, Object data, CSTNode context )
    33      {
    34          super( message, data );
    35          this.context = context;
    36      }
    37
    38
    39      public void write( PrintWriter writer, ProcessingUnit owner, Janitor janitor )
    40      {
    41          SourceUnit source = (SourceUnit)owner;   // This is reliably true
    42
    43          String name   = source.getName();
    44          int    line   = context.getStartLine();
    45          int    column = context.getStartColumn();
    46          String sample = source.getSample( line, column, janitor );
    47
    48          if( sample != null )
    49          {
    50              writer.println( source.getSample(line, column, janitor) );
    51          }
    52
    53          writer.println( name + ": " + line + ": " + this.message );
    54          writer.println("");
    55      }
    56
    57  }
    58
    59
    60
    61