# Class SmapUtil

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

public class SmapUtil extends Object
Contains static utilities for generating SMAP data based on the current version of Jasper.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `SmapUtil()`
  Default constructor.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static void`
  `evaluateNodes(Node.Nodes nodes, SmapStratum s, HashMap<String, SmapStratum> innerClassMap, boolean breakAtLF)`
  Traverses the JSP AST nodes and populates the given SmapStratum with line mapping data.
  `static Map<String, SmapStratum>`
  `generateSmap(JspCompilationContext ctxt, Node.Nodes pageNodes)`
  Generates an appropriate SMAP representing the current compilation context.
  `static void`
  `installSmap(Map<String, SmapStratum> smapInfo)`
  Installs SMAP data into the compiled class files by writing the SourceDebugExtension attribute.
  `static SmapStratum`
  `loadSmap(String className, ClassLoader cl)`
  Loads SMAP data for the given class by reading the embedded SourceDebugExtension attribute from the class file or an external .smap resource.

  ### Methods inherited from class Object

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

- ## Constructor Details

  - ### SmapUtil

    public SmapUtil()
    Default constructor.

- ## Method Details

  - ### generateSmap

    public static Map<String, SmapStratum> generateSmap(JspCompilationContext ctxt, Node.Nodes pageNodes) throws IOException
    Generates an appropriate SMAP representing the current compilation context. (JSR-045.)
    Parameters:
      `ctxt` - Current compilation context
      `pageNodes` - The current JSP page
    Returns:
      a SMAP for the page
    Throws:
      `IOException` - Error writing SMAP

  - ### installSmap

    public static void installSmap(Map<String, SmapStratum> smapInfo) throws IOException
    Installs SMAP data into the compiled class files by writing the SourceDebugExtension attribute.
    Parameters:
      `smapInfo` - the SMAP data keyed by fully qualified class name
    Throws:
      `IOException` - if an I/O error occurs while writing class files

  - ### evaluateNodes

    public static void evaluateNodes(Node.Nodes nodes, SmapStratum s, HashMap<String, SmapStratum> innerClassMap, boolean breakAtLF)
    Traverses the JSP AST nodes and populates the given SmapStratum with line mapping data.
    Parameters:
      `nodes` - the root JSP AST nodes
      `s` - the stratum to populate with line mappings
      `innerClassMap` - map to collect SMAP data for inner classes
      `breakAtLF` - whether to generate a mapping for each line feed in template text

  - ### loadSmap

    public static SmapStratum loadSmap(String className, ClassLoader cl)
    Loads SMAP data for the given class by reading the embedded SourceDebugExtension attribute from the class file or an external .smap resource.
    Parameters:
      `className` - the fully qualified class name
      `cl` - the class loader to use for loading the resource
    Returns:
      the parsed SmapStratum, or `null` if no or invalid SMAP data is found