Package com.opensymphony.module.sitemesh.factory

# Class BaseFactory

java.lang.Object
com.opensymphony.module.sitemesh.Factory
com.opensymphony.module.sitemesh.factory.BaseFactory

All Implemented Interfaces:
  `PageParserSelector`

Direct Known Subclasses:
  `DefaultFactory`

public abstract class BaseFactory extends Factory
Base Factory implementation. Provides utility methods for implementation.

Version:
  $Revision: 1.9 $
Author:
  Joe Walnes

## Field Summary

Fields
Modifier and Type
Field
Description
`protected Config`
`config`
ServletConfig or FilterConfig.
`protected DecoratorMapper`
`decoratorMapper`
Instance of `DecoratorMapper`.
`protected PathMapper`
`excludeUrls`
A map of paths that are excluded from decoration
`protected Map`
`pageParsers`
Map that associates content-types with PageParser instances.

## Constructor Summary

Constructors
Modifier
Constructor
Description
`protected`
`BaseFactory(Config config)`
Constructor for default implementation of Factory.

## Method Summary

Modifier and Type
Method
Description
`protected void`
`addExcludeUrl(String path)`
`protected void`
`clearDecoratorMappers()`
Clear all current DecoratorMappers.
`protected void`
`clearExcludeUrls()`
Clears all exclude URLs.
`protected void`
`clearParserMappings()`
Clear all PageParser mappings.
`DecoratorMapper`
`getDecoratorMapper()`
Return instance of DecoratorMapper.
`protected DecoratorMapper`
`getDecoratorMapper(Class decoratorMapperClass)`
`PageParser`
`getPageParser(String contentType)`
Create a PageParser suitable for the given content-type.
`boolean`
`isPathExcluded(String path)`
Returns `true` if the supplied path matches one of the exclude URLs specified in sitemesh.xml, otherwise returns `false`.
`protected void`
`mapParser(String contentType, String className)`
Map new PageParser to given content-type.
`protected void`
`pushDecoratorMapper(String className, Properties properties)`
Push new DecoratorMapper onto end of chain.
`boolean`
`shouldParsePage(String contentType)`
Determine whether a Page of given content-type should be parsed or not.

### Methods inherited from class com.opensymphony.module.sitemesh.Factory

`getInstance, refresh`

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

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

## Field Details

### config

protected Config config
ServletConfig or FilterConfig.

### decoratorMapper

protected DecoratorMapper decoratorMapper
Instance of `DecoratorMapper`. Because it is thread-safe, it can be shared by multiple clients. This is only the last DecoratorMapper in the chain, and all parents will be automatically delegated to it.

### pageParsers

protected Map pageParsers
Map that associates content-types with PageParser instances.

### excludeUrls

protected PathMapper excludeUrls
A map of paths that are excluded from decoration

## Constructor Details

### BaseFactory

protected BaseFactory(Config config)
Constructor for default implementation of Factory. Should never be called by client. Singleton instance should be obtained instead.

See Also:
  - `Factory.getInstance(com.opensymphony.module.sitemesh.Config config)`

## Method Details

### getDecoratorMapper

public DecoratorMapper getDecoratorMapper()
Return instance of DecoratorMapper.

Specified by:
  `getDecoratorMapper` in class `Factory`

### getPageParser

public PageParser getPageParser(String contentType)
Create a PageParser suitable for the given content-type.

For example, if the supplied parameter is `text/html` a parser shall be returned that can parse HTML accordingly. Returns null if no parser can be found for the supplied content type.

Specified by:
  `getPageParser` in interface `PageParserSelector`
Specified by:
  `getPageParser` in class `Factory`
Parameters:
  `contentType` - The MIME content-type of the data to be parsed
Returns:
  Appropriate `PageParser` for reading data, or `null` if no suitable parser was found.

### shouldParsePage

public boolean shouldParsePage(String contentType)
Determine whether a Page of given content-type should be parsed or not.

Specified by:
  `shouldParsePage` in interface `PageParserSelector`
Specified by:
  `shouldParsePage` in class `Factory`

### isPathExcluded

public boolean isPathExcluded(String path)
Returns `true` if the supplied path matches one of the exclude URLs specified in sitemesh.xml, otherwise returns `false`.

Specified by:
  `isPathExcluded` in class `Factory`
Parameters:
  `path` -
Returns:
  whether the path is excluded

### clearDecoratorMappers

protected void clearDecoratorMappers()
Clear all current DecoratorMappers.

### pushDecoratorMapper

protected void pushDecoratorMapper(String className, Properties properties)
Push new DecoratorMapper onto end of chain.

### getDecoratorMapper

protected DecoratorMapper getDecoratorMapper(Class decoratorMapperClass) throws InstantiationException, IllegalAccessException

Throws:
  `InstantiationException`
  `IllegalAccessException`

### clearParserMappings

protected void clearParserMappings()
Clear all PageParser mappings.

### mapParser

protected void mapParser(String contentType, String className)
Map new PageParser to given content-type. contentType = null signifies default PageParser for unknown content-types.

### addExcludeUrl

protected void addExcludeUrl(String path)

### clearExcludeUrls

protected void clearExcludeUrls()
Clears all exclude URLs.