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.SourceUnit; 007 import org.codehaus.groovy.syntax.CSTNode; 008 009 010 011 /** 012 * A base class for compilation messages. 013 * 014 * @author <a href="mailto:cpoirier@dreaming.org">Chris Poirier</a> 015 * 016 * @version $Id: LocatedMessage.java 2264 2005-06-10 09:55:31Z cstein $ 017 */ 018 019 public class LocatedMessage extends SimpleMessage 020 { 021 protected CSTNode context; // The CSTNode that indicates the location to which the message applies 022 023 public LocatedMessage( String message, CSTNode context, SourceUnit source ) 024 { 025 super( message, source ); 026 this.context = context; 027 } 028 029 030 public LocatedMessage( String message, Object data, CSTNode context, SourceUnit source ) 031 { 032 super( message, data, source ); 033 this.context = context; 034 } 035 036 037 public void write( PrintWriter writer, Janitor janitor ) 038 { 039 SourceUnit source = (SourceUnit) owner; 040 041 String name = source.getName(); 042 int line = context.getStartLine(); 043 int column = context.getStartColumn(); 044 String sample = source.getSample( line, column, janitor ); 045 046 if( sample != null ) 047 { 048 writer.println( source.getSample(line, column, janitor) ); 049 } 050 051 writer.println( name + ": " + line + ": " + this.message ); 052 writer.println(""); 053 } 054 055 } 056 057 058 059