org.apache.jasper.servlet

## Class TldScanner

- java.lang.Object
- - org.apache.jasper.servlet.TldScanner

- Direct Known Subclasses:
    TldPreScanned

      public class TldScanner
      extends Object

  Scans for and loads Tag Library Descriptors contained in a web application.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `TldScanner(ServletContext context, boolean namespaceAware, boolean validation, boolean blockExternal)` Initialise with the application's ServletContext.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `List<String>` | `getListeners()` Returns a list of all listeners declared by scanned TLDs.
    `Map<TldResourcePath,TaglibXml>` | `getTldResourcePathTaglibXmlMap()` Returns the map of TldResourcePath to parsed XML files built by this scanner.
    `Map<String,TldResourcePath>` | `getUriTldResourcePathMap()` Returns the map of URI to TldResourcePath built by this scanner.
    `protected void` | `parseTld(String resourcePath)`
    `protected void` | `parseTld(TldResourcePath path)`
    `void` | `scan()` Scan for TLDs in all places defined by the specification: Tag libraries defined by the platform Entries from <jsp-config> in web.xml A resources under /WEB-INF In jar files from /WEB-INF/lib Additional entries from the container
    `void` | `scanJars()` Scan for TLDs in JARs in /WEB-INF/lib.
    `protected void` | `scanJspConfig()` Scan for TLDs defined in <jsp-config>.
    `protected void` | `scanPlatform()` Scan for TLDs required by the platform specification.
    `protected void` | `scanResourcePaths(String startPath)` Scan web application resources for TLDs, recursively.
    `void` | `setClassLoader(ClassLoader classLoader)` Set the class loader used by the digester to create objects as a result of this scan.

    - ### Methods inherited from class java.lang.Object

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

- - ### Constructor Detail

    - #### TldScanner

          public TldScanner(ServletContext context,
                    boolean namespaceAware,
                    boolean validation,
                    boolean blockExternal)

      Initialise with the application's ServletContext.
      Parameters:
        `context` - the application's servletContext
        `namespaceAware` - should the XML parser used to parse TLD files be configured to be name space aware
        `validation` - should the XML parser used to parse TLD files be configured to use validation
        `blockExternal` - should the XML parser used to parse TLD files be configured to be block references to external entities

  - ### Method Detail

    - #### scan

          public void scan()
                    throws IOException,
                           SAXException

      Scan for TLDs in all places defined by the specification:
      1. Tag libraries defined by the platform
      2. Entries from <jsp-config> in web.xml
      3. A resources under /WEB-INF
      4. In jar files from /WEB-INF/lib
      5. Additional entries from the container
      Throws:
        `IOException` - if there was a problem scanning for or loading a TLD
        `SAXException` - if there was a problem parsing a TLD

    - #### getUriTldResourcePathMap

          public Map<String,TldResourcePath> getUriTldResourcePathMap()

      Returns the map of URI to TldResourcePath built by this scanner.
      Returns:
        the map of URI to TldResourcePath

    - #### getTldResourcePathTaglibXmlMap

          public Map<TldResourcePath,TaglibXml> getTldResourcePathTaglibXmlMap()

      Returns the map of TldResourcePath to parsed XML files built by this scanner.
      Returns:
        the map of TldResourcePath to parsed XML files

    - #### getListeners

          public List<String> getListeners()

      Returns a list of all listeners declared by scanned TLDs.
      Returns:
        a list of listener class names

    - #### setClassLoader

          public void setClassLoader(ClassLoader classLoader)

      Set the class loader used by the digester to create objects as a result of this scan. Normally this only needs to be set when using JspC.
      Parameters:
        `classLoader` - Class loader to use when creating new objects while parsing TLDs

    - #### scanPlatform

          protected void scanPlatform()

      Scan for TLDs required by the platform specification.

    - #### scanJspConfig

          protected void scanJspConfig()
                                throws IOException,
                                       SAXException

      Scan for TLDs defined in <jsp-config>.
      Throws:
        `IOException` - Error reading resources
        `SAXException` - XML parsing error

    - #### scanResourcePaths

          protected void scanResourcePaths(String startPath)
                                    throws IOException,
                                           SAXException

      Scan web application resources for TLDs, recursively.
      Parameters:
        `startPath` - the directory resource to scan
      Throws:
        `IOException` - if there was a problem scanning for or loading a TLD
        `SAXException` - if there was a problem parsing a TLD

    - #### scanJars

          public void scanJars()

      Scan for TLDs in JARs in /WEB-INF/lib.

    - #### parseTld

          protected void parseTld(String resourcePath)
                           throws IOException,
                                  SAXException

      Throws:
        `IOException`
        `SAXException`

    - #### parseTld

          protected void parseTld(TldResourcePath path)
                           throws IOException,
                                  SAXException

      Throws:
        `IOException`
        `SAXException`

Copyright © 2000-2021 Apache Software Foundation. All Rights Reserved.