# 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
Description
`TldScanner(ServletContext context, boolean namespaceAware, boolean validation, boolean blockExternal)`
Initialise with the application's ServletContext.

## Method Summary

Modifier and Type
Method
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 Details

### 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 Details

### 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`