Package org.apache.tiles.core.definition.digester

# Class DigesterDefinitionsReader

java.lang.Object
org.apache.tiles.core.definition.digester.DigesterDefinitionsReader

All Implemented Interfaces:
  `DefinitionsReader`

public class DigesterDefinitionsReader extends Object implements DefinitionsReader
Reads `Definition` objects from an XML InputStream using Digester.

This `DefinitionsReader` implementation expects the source to be passed as an `InputStream`. It parses XML data from the source and builds a Map of Definition objects.

The Digester object can be configured by passing in initialization parameters. Currently the only parameter that is supported is the `validating` parameter. This value is set to `false` by default. To enable DTD validation for XML Definition files, give the init method a parameter with a key of `org.apache.tiles.definition.digester.DigesterDefinitionsReader.PARSER_VALIDATE` and a value of `"true"`.

The Definition objects are stored internally in a Map. The Map is stored as an instance variable rather than a local variable in the `read` method. This means that instances of this class are not thread-safe and access by multiple threads must be synchronized.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected static final String`
  `DEFINITION_HANDLER_CLASS`
  The handler to create definitions.
  `protected Map<String,Definition>`
  `definitions`
  Stores Definition objects.
  `protected final org.apache.commons.digester3.Digester`
  `digester`
  `Digester` object used to read Definition data from the source.
  `protected static final String`
  `LIST_HANDLER_CLASS`
  The handler to create list attributes.
  `protected static final String`
  `PUT_ATTRIBUTE_HANDLER_CLASS`
  The handler to create attributes.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `DigesterDefinitionsReader()`
  Creates a new instance of DigesterDefinitionsReader.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addDefinition(Definition definition)`
  Adds a new `Definition` to the internal Map or replaces an existing one.
  `protected String[]`
  `getRegistrations()`
  Returns the registrations for local DTDs.
  `protected void`
  `initSyntax(org.apache.commons.digester3.Digester digester)`
  Initialised the syntax for reading XML files containing Tiles definitions.
  `Map<String,Definition>`
  `read(Object source)`
  Reads ``Definition`` objects from a source.
  `void`
  `setValidating(boolean validating)`
  Sets the validation of XML files.

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

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

- ## Field Details

  - ### DEFINITION_HANDLER_CLASS

    protected static final String DEFINITION_HANDLER_CLASS
    The handler to create definitions.
    Since:
      2.1.0

  - ### PUT_ATTRIBUTE_HANDLER_CLASS

    protected static final String PUT_ATTRIBUTE_HANDLER_CLASS
    The handler to create attributes.
    Since:
      2.1.0

  - ### LIST_HANDLER_CLASS

    protected static final String LIST_HANDLER_CLASS
    The handler to create list attributes.
    Since:
      2.1.0

  - ### digester

    protected final org.apache.commons.digester3.Digester digester
    `Digester` object used to read Definition data from the source.

  - ### definitions

    protected Map<String,Definition> definitions
    Stores Definition objects.

- ## Constructor Details

  - ### DigesterDefinitionsReader

    public DigesterDefinitionsReader()
    Creates a new instance of DigesterDefinitionsReader.

- ## Method Details

  - ### setValidating

    public void setValidating(boolean validating)
    Sets the validation of XML files.
    Parameters:
      `validating` - `true` means that XML validation is turned on. `false` otherwise.
    Since:
      3.3.0

  - ### read

    public Map<String,Definition> read(Object source)
    Reads ``Definition`` objects from a source.

    Implementations should publish what type of source object is expected.
    Specified by:
      `read` in interface `DefinitionsReader`
    Parameters:
      `source` - The `InputStream` source from which definitions will be read.
    Returns:
      a Map of `Definition` objects read from the source.
    Throws:
      `DefinitionsFactoryException` - If the source is invalid or an error occurs when reading definitions.

  - ### initSyntax

    protected void initSyntax(org.apache.commons.digester3.Digester digester)
    Initialised the syntax for reading XML files containing Tiles definitions.
    Parameters:
      `digester` - The digester to initialize.

  - ### addDefinition

    public void addDefinition(Definition definition)
    Adds a new `Definition` to the internal Map or replaces an existing one.
    Parameters:
      `definition` - The Definition object to be added.

  - ### getRegistrations

    protected String[] getRegistrations()
    Returns the registrations for local DTDs.
    Returns:
      An array containing the locations for registrations of local DTDs.
    Since:
      2.1.0