edu.rice.cs.drjava.model.compiler
Class LanguageLevelStackTraceMapper

java.lang.Object
  extended by edu.rice.cs.drjava.model.compiler.LanguageLevelStackTraceMapper

public class LanguageLevelStackTraceMapper
extends java.lang.Object

Class used to get TreeMaps with dj* to java line number (and vise versa) conversions


Field Summary
private  GlobalModel aGModel
          model used to get the OpenDefinitionsDocuments from files
private  java.util.HashMap<java.lang.String,java.util.TreeMap<java.lang.Integer,java.lang.Integer>> cache
          cache to store the tree maps
static Log LOG
          logging information
 
Constructor Summary
LanguageLevelStackTraceMapper(GlobalModel aGM)
           
 
Method Summary
 void clearCache()
          Clears the TreeMap cache
private  java.util.TreeMap<java.lang.Integer,java.lang.Integer> createOneToOneMap(java.io.BufferedReader bufReader)
           
private  boolean matches(java.io.File f, java.lang.StackTraceElement s)
          Ensures the given file and StackTraceElement match.
 java.util.TreeMap<java.lang.Integer,java.lang.Integer> readLLBlock(java.io.File LLFile)
          Reads the LanguageLevel header from a LL file and pulls the line number conversion map out.
 java.util.TreeMap<java.lang.Integer,java.lang.Integer> readLLLineBlock(java.io.File LLFile)
          Reads the LanguageLevel header from a LL file and pulls the line number conversion map out.
private  java.lang.String readNextLLBlockLine(java.io.BufferedReader br)
          Helper method to read the next comment line in a file.
 java.lang.StackTraceElement[] replaceStackTrace(java.lang.StackTraceElement[] ss, java.util.List<java.io.File> ds)
          Replaces the dj* file names and line numbers in the given stacktrace elements.
 java.lang.StackTraceElement replaceStackTraceElement(java.lang.StackTraceElement s, java.io.File d)
          Converts java file and line number to corresponding dj* file name and line number in a given stacktrace element.
 java.lang.StackTraceElement replaceStackTraceElement(java.lang.StackTraceElement s, java.io.File d, java.util.TreeMap<java.lang.Integer,java.lang.Integer> m)
           
 java.lang.StackTraceElement replaceStackTraceElement(java.lang.StackTraceElement s, java.util.List<java.io.File> ds)
          Replaces the dj* file name and line numbers in a given stacktrace element.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

LOG

public static final Log LOG
logging information


cache

private java.util.HashMap<java.lang.String,java.util.TreeMap<java.lang.Integer,java.lang.Integer>> cache
cache to store the tree maps


aGModel

private GlobalModel aGModel
model used to get the OpenDefinitionsDocuments from files

Constructor Detail

LanguageLevelStackTraceMapper

public LanguageLevelStackTraceMapper(GlobalModel aGM)
Method Detail

replaceStackTraceElement

public java.lang.StackTraceElement replaceStackTraceElement(java.lang.StackTraceElement s,
                                                            java.io.File d,
                                                            java.util.TreeMap<java.lang.Integer,java.lang.Integer> m)

replaceStackTraceElement

public java.lang.StackTraceElement replaceStackTraceElement(java.lang.StackTraceElement s,
                                                            java.io.File d)
Converts java file and line number to corresponding dj* file name and line number in a given stacktrace element.

Parameters:
s - the StackTraceElement to do be converted
d - the dj* file whose name and line numbers are required in the StackTraceElement

replaceStackTraceElement

public java.lang.StackTraceElement replaceStackTraceElement(java.lang.StackTraceElement s,
                                                            java.util.List<java.io.File> ds)
Replaces the dj* file name and line numbers in a given stacktrace element.

Parameters:
s - the StackTraceElement to do the replacing in
ds - a list of the dj* file whose names and line numbers need replacing in the StackTraceElement

replaceStackTrace

public java.lang.StackTraceElement[] replaceStackTrace(java.lang.StackTraceElement[] ss,
                                                       java.util.List<java.io.File> ds)
Replaces the dj* file names and line numbers in the given stacktrace elements.

Parameters:
ss - an array of StackTraceElement to do the replacing in
ds - a list of the dj* file whose names and line numbers need replacing in the StackTraceElement

clearCache

public void clearCache()
Clears the TreeMap cache


matches

private boolean matches(java.io.File f,
                        java.lang.StackTraceElement s)
Ensures the given file and StackTraceElement match. The extension on the file f may be a LL extension while the extension in the StackTraceElement is the corresponding .java file.

Parameters:
f - the file
s - the StackTraceElement

createOneToOneMap

private java.util.TreeMap<java.lang.Integer,java.lang.Integer> createOneToOneMap(java.io.BufferedReader bufReader)

readLLLineBlock

public java.util.TreeMap<java.lang.Integer,java.lang.Integer> readLLLineBlock(java.io.File LLFile)
Reads the LanguageLevel header from a LL file and pulls the line number conversion map out.

Returns:

readLLBlock

public java.util.TreeMap<java.lang.Integer,java.lang.Integer> readLLBlock(java.io.File LLFile)
Reads the LanguageLevel header from a LL file and pulls the line number conversion map out.

Returns:

readNextLLBlockLine

private java.lang.String readNextLLBlockLine(java.io.BufferedReader br)
Helper method to read the next comment line in a file. Returns null if no new comment line exists. Line is trimmed and padded by a single blank on the end.