Class SourceInfoMap


  • public class SourceInfoMap
    extends java.lang.Object
    Global information about the source code for an application. Currently, this object contains a map of source line information for fields and classes (items we don't get line number information for directly in classfiles), and also source line information for methods that don't appear directly in classfiles, such as abstract and native methods.
    Author:
    David Hovemeyer
    • Constructor Detail

      • SourceInfoMap

        public SourceInfoMap()
        Constructor. Creates an empty object.
    • Method Detail

      • fallBackToClassfile

        public boolean fallBackToClassfile()
      • isEmpty

        public boolean isEmpty()
      • addFieldLine

        public void addFieldLine​(java.lang.String className,
                                 java.lang.String fieldName,
                                 SourceInfoMap.SourceLineRange range)
        Add a line number entry for a field.
        Parameters:
        className - name of class containing the field
        fieldName - name of field
        range - the line number(s) of the field
      • addMethodLine

        public void addMethodLine​(java.lang.String className,
                                  java.lang.String methodName,
                                  java.lang.String methodSignature,
                                  SourceInfoMap.SourceLineRange range)
        Add a line number entry for a method.
        Parameters:
        className - name of class containing the method
        methodName - name of method
        methodSignature - signature of method
        range - the line number of the method
      • addClassLine

        public void addClassLine​(java.lang.String className,
                                 SourceInfoMap.SourceLineRange range)
        Add line number entry for a class.
        Parameters:
        className - name of class
        range - the line numbers of the class
      • getFieldLine

        @CheckForNull
        public SourceInfoMap.SourceLineRange getFieldLine​(java.lang.String className,
                                                          java.lang.String fieldName)
        Look up the line number range for a field.
        Parameters:
        className - name of class containing the field
        fieldName - name of field
        Returns:
        the line number range, or null if no line number is known for the field
      • getMethodLine

        @CheckForNull
        public SourceInfoMap.SourceLineRange getMethodLine​(java.lang.String className,
                                                           java.lang.String methodName,
                                                           java.lang.String methodSignature)
        Look up the line number range for a method.
        Parameters:
        className - name of class containing the method
        methodName - name of method
        methodSignature - signature of method
        Returns:
        the line number range, or null if no line number is known for the method
      • getClassLine

        @CheckForNull
        public SourceInfoMap.SourceLineRange getClassLine​(java.lang.String className)
        Look up the line number range for a class.
        Parameters:
        className - name of the class
        Returns:
        the line number range, or null if no line number is known for the class
      • read

        public void read​(@WillClose
                         java.io.InputStream inputStream)
                  throws java.io.IOException
        Read source info from given InputStream. The stream is guaranteed to be closed.
        Parameters:
        inputStream - the InputStream
        Throws:
        java.io.IOException - if an I/O error occurs, or if the format is invalid