org.apache.tiles.definition.dao
Class ResolvingLocaleUrlDefinitionDAO

Package class diagram package ResolvingLocaleUrlDefinitionDAO
java.lang.Object
  extended by org.apache.tiles.definition.dao.BaseLocaleUrlDefinitionDAO
      extended by org.apache.tiles.definition.dao.CachingLocaleUrlDefinitionDAO
          extended by org.apache.tiles.definition.dao.ResolvingLocaleUrlDefinitionDAO
All Implemented Interfaces:
TilesApplicationContextAware, DefinitionDAO<java.util.Locale>, URLReader, Refreshable, RefreshMonitor, Initializable

public class ResolvingLocaleUrlDefinitionDAO
extends CachingLocaleUrlDefinitionDAO

A definitions DAO (loading URLs and using Locale as a customization key) that caches definitions that have been loaded and resolves inheritances.

It can check if the URLs change, but by default this feature is turned off.

Since:
2.1.0

Nested Class Summary
 
Nested classes/interfaces inherited from class org.apache.tiles.definition.dao.CachingLocaleUrlDefinitionDAO
CachingLocaleUrlDefinitionDAO.WildcardMapping
 
Field Summary
 
Fields inherited from class org.apache.tiles.definition.dao.CachingLocaleUrlDefinitionDAO
CHECK_REFRESH_INIT_PARAMETER, checkRefresh, locale2definitionMap, localePatternPaths, wildcardHelper
 
Fields inherited from class org.apache.tiles.definition.dao.BaseLocaleUrlDefinitionDAO
applicationContext, lastModifiedDates, reader, sourceURLs
 
Constructor Summary
ResolvingLocaleUrlDefinitionDAO()
           
 
Method Summary
protected  java.util.Map<java.lang.String,Definition> loadDefinitions(java.util.Locale customizationKey)
          Tries to load definitions if necessary.
protected  java.util.Map<java.lang.String,Definition> loadParentDefinitions(java.util.Locale parentLocale)
          Loads parent definitions, i.e. definitions mapped to a parent locale.
protected  void postDefinitionLoadOperations(java.util.Map<java.lang.String,Definition> localeDefsMap, java.util.Locale customizationKey)
          Tries to load definitions if necessary.
protected  void resolveInheritance(Definition definition, java.util.Map<java.lang.String,Definition> definitions, java.util.Locale locale, java.util.Set<java.lang.String> alreadyResolvedDefinitions)
          Resolve locale-specific inheritance.
protected  void resolveInheritances(java.util.Map<java.lang.String,Definition> map, java.util.Locale locale)
          Resolve locale-specific extended instances.
 
Methods inherited from class org.apache.tiles.definition.dao.CachingLocaleUrlDefinitionDAO
addWildcardPaths, checkAndloadDefinitions, getDefinition, getDefinitions, init, loadDefinitionsFromURLs, refresh, replace, replaceDefinition, resolveWildcardDefinition, setCheckRefresh
 
Methods inherited from class org.apache.tiles.definition.dao.BaseLocaleUrlDefinitionDAO
addSourceURL, getResourceNames, getResourceString, identifySources, loadDefinitionsFromURL, refreshRequired, setApplicationContext, setReader, setSourceURLs
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.apache.tiles.definition.RefreshMonitor
refreshRequired
 

Constructor Detail

ResolvingLocaleUrlDefinitionDAO

public ResolvingLocaleUrlDefinitionDAO()
Method Detail

loadDefinitions

protected java.util.Map<java.lang.String,Definition> loadDefinitions(java.util.Locale customizationKey)
Tries to load definitions if necessary.

Overrides:
loadDefinitions in class CachingLocaleUrlDefinitionDAO
Parameters:
customizationKey - The locale to use when loading URLs.
Returns:
The loaded definitions.

loadParentDefinitions

protected java.util.Map<java.lang.String,Definition> loadParentDefinitions(java.util.Locale parentLocale)
Loads parent definitions, i.e. definitions mapped to a parent locale.

Overrides:
loadParentDefinitions in class CachingLocaleUrlDefinitionDAO
Parameters:
parentLocale - The locale to use when loading URLs.
Returns:
The loaded parent definitions.

postDefinitionLoadOperations

protected void postDefinitionLoadOperations(java.util.Map<java.lang.String,Definition> localeDefsMap,
                                            java.util.Locale customizationKey)
Tries to load definitions if necessary.

Overrides:
postDefinitionLoadOperations in class CachingLocaleUrlDefinitionDAO
Parameters:
localeDefsMap - The loaded definitions.
customizationKey - The locale to use when loading URLs.

resolveInheritances

protected void resolveInheritances(java.util.Map<java.lang.String,Definition> map,
                                   java.util.Locale locale)
Resolve locale-specific extended instances.

Parameters:
map - The definition map containing the definitions to resolve.
locale - The locale to use.
Throws:
NoSuchDefinitionException - If a parent definition is not found.
Since:
2.1.0

resolveInheritance

protected void resolveInheritance(Definition definition,
                                  java.util.Map<java.lang.String,Definition> definitions,
                                  java.util.Locale locale,
                                  java.util.Set<java.lang.String> alreadyResolvedDefinitions)
Resolve locale-specific inheritance. First, resolve parent's inheritance, then set template to the parent's template. Also copy attributes setted in parent, and not set in child If instance doesn't extend anything, do nothing.

Parameters:
definition - The definition to resolve
definitions - The definitions to take when obtaining a parent definition.
locale - The locale to use.
alreadyResolvedDefinitions - The set of the definitions that have been already resolved.
Throws:
NoSuchDefinitionException - If an inheritance can not be solved.
Since:
2.1.0