SmapStratum (Apache Tomcat 9.0.120 API Documentation)
Description: declaration: package: org.apache.jasper.compiler, class: SmapStratum

# Class SmapStratum

java.lang.Object
org.apache.jasper.compiler.SmapStratum

public class SmapStratum extends Object
Represents the line and file mappings associated with a JSR-045 "stratum".

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static class`
  `SmapStratum.LineInfo`
  Represents a single LineSection in an SMAP, associated with a particular stratum.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `SmapStratum()`
  Creates a new empty SmapStratum.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addFile(String filename)`
  Adds record of a new file, by filename.
  `void`
  `addFile(String filename, String filePath)`
  Adds record of a new file, by filename and path.
  `void`
  `addLineData(int inputStartLine, String inputFileName, int inputLineCount, int outputStartLine, int outputLineIncrement)`
  Adds complete information about a simple line mapping.
  `void`
  `addLineInfo(SmapStratum.LineInfo li)`
  Adds a pre-configured LineInfo to this stratum's line data.
  `String`
  `getClassFileName()`
  Returns the name of the output .class file.
  `SmapInput`
  `getInputLineNumber(int outputLineNumber)`
  Maps a generated Java file line number back to the original JSP source file and line number.
  `String`
  `getSmapString()`
  Generates the complete SMAP string representation of this stratum.
  `void`
  `optimizeLineSection()`
  Combines consecutive LineInfos wherever possible
  `void`
  `setClassFileName(String classFileName)`
  Sets the name of the output .class file for the SMAP.
  `void`
  `setOutputFileName(String outputFileName)`
  Sets the name of the output .java file for the SMAP header.
  `String`
  `toString()`
  Returns the SMAP string representation of this stratum.

  ### Methods inherited from class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- ## Constructor Details

  - ### SmapStratum

    public SmapStratum()
    Creates a new empty SmapStratum.

- ## Method Details

  - ### addFile

    public void addFile(String filename)
    Adds record of a new file, by filename.
    Parameters:
      `filename` - the filename to add, unqualified by path.

  - ### addFile

    public void addFile(String filename, String filePath)
    Adds record of a new file, by filename and path. The path may be relative to a source compilation path.
    Parameters:
      `filename` - the filename to add, unqualified by path
      `filePath` - the path for the filename, potentially relative to a source compilation path

  - ### optimizeLineSection

    public void optimizeLineSection()
    Combines consecutive LineInfos wherever possible

  - ### addLineData

    public void addLineData(int inputStartLine, String inputFileName, int inputLineCount, int outputStartLine, int outputLineIncrement)
    Adds complete information about a simple line mapping. Specify all the fields in this method; the back-end machinery takes care of printing only those that are necessary in the final SMAP. (My view is that fields are optional primarily for spatial efficiency, not for programmer convenience. Could always add utility methods later.)
    Parameters:
      `inputStartLine` - starting line in the source file (SMAP `InputStartLine`)
      `inputFileName` - the filepath (or name) from which the input comes (yields SMAP `LineFileID`) Use unqualified names carefully, and only when they uniquely identify a file.
      `inputLineCount` - the number of lines in the input to map (SMAP `LineFileCount`)
      `outputStartLine` - starting line in the output file (SMAP `OutputStartLine`)
      `outputLineIncrement` - number of output lines to map to each input line (SMAP `OutputLineIncrement`). Given the fact that the name starts with "output", I continuously have the subconscious urge to call this field `OutputLineExcrement`.

  - ### addLineInfo

    public void addLineInfo(SmapStratum.LineInfo li)
    Adds a pre-configured LineInfo to this stratum's line data.
    Parameters:
      `li` - the line info to add

  - ### setOutputFileName

    public void setOutputFileName(String outputFileName)
    Sets the name of the output .java file for the SMAP header.
    Parameters:
      `outputFileName` - the output Java file name

  - ### setClassFileName

    public void setClassFileName(String classFileName)
    Sets the name of the output .class file for the SMAP.
    Parameters:
      `classFileName` - the output class file name

  - ### getClassFileName

    public String getClassFileName()
    Returns the name of the output .class file.
    Returns:
      the class file name

  - ### toString

    public String toString()
    Returns the SMAP string representation of this stratum.
    Overrides:
      `toString` in class `Object`
    Returns:
      the SMAP string representation

  - ### getSmapString

    public String getSmapString()
    Generates the complete SMAP string representation of this stratum.
    Returns:
      the SMAP string
    Throws:
      `IllegalStateException` - if the output file name has not been set

  - ### getInputLineNumber

    public SmapInput getInputLineNumber(int outputLineNumber)
    Maps a generated Java file line number back to the original JSP source file and line number.
    Parameters:
      `outputLineNumber` - the line number in the generated Java file
    Returns:
      the corresponding source file and line number