Package org.apache.jasper.servlet

## Class TldScanner

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

Direct Known Subclasses:
  `TldPreScanned`

    public class TldScanner
    extends java.lang.Object

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

### Constructor Summary

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

### Method Summary

All Methods Instance Methods Concrete Methods
`java.util.List<java.lang.String>` `getListeners()` Returns a list of all listeners declared by scanned TLDs.
`java.util.Map<TldResourcePath,​TaglibXml>` `getTldResourcePathTaglibXmlMap()` Returns the map of TldResourcePath to parsed XML files built by this scanner.
`java.util.Map<java.lang.String,​TldResourcePath>` `getUriTldResourcePathMap()` Returns the map of URI to TldResourcePath built by this scanner.
`protected void` `parseTld​(java.lang.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​(java.lang.String startPath)` Scan web application resources for TLDs, recursively.
`void` `setClassLoader​(java.lang.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 java.io.IOException,
                     org.xml.sax.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:
  `java.io.IOException` - if there was a problem scanning for or loading a TLD
  `org.xml.sax.SAXException` - if there was a problem parsing a TLD

#### getUriTldResourcePathMap

    public java.util.Map<java.lang.String,​TldResourcePath> getUriTldResourcePathMap()

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

Returns:
  the map of URI to TldResourcePath

#### getTldResourcePathTaglibXmlMap

    public java.util.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 java.util.List<java.lang.String> getListeners()

Returns a list of all listeners declared by scanned TLDs.

Returns:
  a list of listener class names

#### setClassLoader

    public void setClassLoader​(java.lang.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 java.io.IOException,
                                 org.xml.sax.SAXException

Scan for TLDs defined in <jsp-config>.

Throws:
  `java.io.IOException` - Error reading resources
  `org.xml.sax.SAXException` - XML parsing error

#### scanResourcePaths

    protected void scanResourcePaths​(java.lang.String startPath)
                              throws java.io.IOException,
                                     org.xml.sax.SAXException

Scan web application resources for TLDs, recursively.

Parameters:
  `startPath` - the directory resource to scan
Throws:
  `java.io.IOException` - if there was a problem scanning for or loading a TLD
  `org.xml.sax.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​(java.lang.String resourcePath)
                     throws java.io.IOException,
                            org.xml.sax.SAXException

Throws:
  `java.io.IOException`
  `org.xml.sax.SAXException`

#### parseTld

    protected void parseTld​(TldResourcePath path)
                     throws java.io.IOException,
                            org.xml.sax.SAXException

Throws:
  `java.io.IOException`
  `org.xml.sax.SAXException`