Class CachingLocaleUrlDefinitionDAO

java.lang.Object
org.apache.tiles.core.definition.dao.BaseLocaleUrlDefinitionDAO
org.apache.tiles.core.definition.dao.CachingLocaleUrlDefinitionDAO
All Implemented Interfaces:
DefinitionDAO<Locale>, PatternDefinitionResolverAware<Locale>, RefreshMonitor
Direct Known Subclasses:
ResolvingLocaleUrlDefinitionDAO

public class CachingLocaleUrlDefinitionDAO extends BaseLocaleUrlDefinitionDAO implements PatternDefinitionResolverAware<Locale>

A definitions DAO (loading URLs and using Locale as a customization key) that caches definitions that have been loaded in a raw way (i.e. with inheritance that is not resolved).

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

Since:
2.1.0
  • Field Details

    • CHECK_REFRESH_INIT_PARAMETER

      public static final String CHECK_REFRESH_INIT_PARAMETER
      Initialization parameter to set whether we want to refresh URLs when they change.
      Since:
      2.1.0
      See Also:
    • DEFAULT_MAX_CACHED_LOCALES

      public static final int DEFAULT_MAX_CACHED_LOCALES
      Default upper bound on the number of customization keys (locales) whose definitions are cached at once. Since the customization key is derived from the request locale, this bounds the cache so it cannot grow without limit as distinct locales are encountered.
      See Also:
    • locale2definitionMap

      protected Map<Locale,Map<String,Definition>> locale2definitionMap
      The locale-specific set of definitions objects.
      Since:
      2.1.0
    • maxCachedLocales

      protected int maxCachedLocales
      Maximum number of customization keys (locales) retained in locale2definitionMap. When exceeded, the eldest entry is evicted (and reloaded on demand if requested again).
    • checkRefresh

      protected boolean checkRefresh
      Flag that, when true, enables automatic checking of URLs changing.
      Since:
      2.1.0
    • definitionResolver

      protected PatternDefinitionResolver<Locale> definitionResolver
      Resolves definitions using patterns.
      Since:
      2.2.0
  • Constructor Details

    • CachingLocaleUrlDefinitionDAO

      public CachingLocaleUrlDefinitionDAO(ApplicationContext applicationContext)
      Constructor.
      Since:
      2.1.0
  • Method Details

    • setMaxCachedLocales

      public void setMaxCachedLocales(int maxCachedLocales)
      Sets the maximum number of customization keys (locales) whose definitions are cached. When more distinct keys are requested, the eldest cached entry is evicted so the cache cannot grow without bound. Evicted entries are reloaded on demand if requested again, so eviction never changes rendering, only re-incurs a load.
      Parameters:
      maxCachedLocales - the maximum number of cached customization keys; values below 1 are treated as 1
    • setPatternDefinitionResolver

      public void setPatternDefinitionResolver(PatternDefinitionResolver<Locale> definitionResolver)
      Sets the pattern definition resolver to use.
      Specified by:
      setPatternDefinitionResolver in interface PatternDefinitionResolverAware<Locale>
      Parameters:
      definitionResolver - The pattern definition resolver.
    • getDefinition

      public Definition getDefinition(String name, Locale customizationKey)
      Returns a definition, given its name and the customization key.
      Specified by:
      getDefinition in interface DefinitionDAO<Locale>
      Parameters:
      name - The name of the definition.
      customizationKey - The customization key.
      Returns:
      The requested definition, if found, otherwise null. The inheritance of the definition must not be resolved.
    • getDefinitions

      public Map<String,Definition> getDefinitions(Locale customizationKey)
      Returns all the definitions used of a customization key.
      Specified by:
      getDefinitions in interface DefinitionDAO<Locale>
      Parameters:
      customizationKey - The customization key.
      Returns:
      All the definitions that are connected to the customization key. The inheritance of the definitions must not be resolved.
    • setCheckRefresh

      public void setCheckRefresh(boolean checkRefresh)
      Sets the flag to check source refresh. If not called, the default is false.
      Parameters:
      checkRefresh - When true, enables automatic checking of sources changing.
      Since:
      2.1.0
    • getDefinitionFromResolver

      protected Definition getDefinitionFromResolver(String name, Locale customizationKey)
      Returns a definition from the definition resolver.
      Parameters:
      name - The name of the definition.
      customizationKey - The customization key to use.
      Returns:
      The resolved definition.
    • checkAndloadDefinitions

      protected Map<String,Definition> checkAndloadDefinitions(Locale customizationKey)
      Checks if sources have changed. If yes, it clears the cache. Then continues loading definitions.
      Parameters:
      customizationKey - The locale to use when loading sources.
      Returns:
      The loaded definitions.
      Since:
      2.1.0
    • loadDefinitions

      protected Map<String,Definition> loadDefinitions(Locale customizationKey)
      Tries to load definitions if necessary.
      Parameters:
      customizationKey - The locale to use when loading sources.
      Returns:
      The loaded definitions.
      Since:
      2.1.0
    • loadDefinitionsFromResources

      protected Map<String,Definition> loadDefinitionsFromResources(Locale customizationKey)
      Loads definitions from the sources.
      Parameters:
      customizationKey - The locale to use when loading Resources.
      Returns:
      The loaded definitions.
      Since:
      2.1.0
    • loadRawDefinitionsFromResources

      protected Map<String,Definition> loadRawDefinitionsFromResources(Locale customizationKey)
      Loads the raw definitions from the sources associated with a locale.
      Parameters:
      customizationKey - The locale to use when loading Resources.
      Returns:
      The loaded definitions.
      Since:
      2.1.3
    • loadParentDefinitions

      protected Map<String,Definition> loadParentDefinitions(Locale parentLocale)
      Loads parent definitions, i.e. definitions mapped to a parent locale.
      Parameters:
      parentLocale - The locale to use when loading URLs.
      Returns:
      The loaded parent definitions.
      Since:
      2.1.0
    • copyDefinitionMap

      protected Map<String,Definition> copyDefinitionMap(Map<String,Definition> localeDefsMap)
      Copies the definition map to be passed to a higher level of customization key.
      Parameters:
      localeDefsMap - The map of definition to be copied.
      Returns:
      The copy of the definition map. This particular implementation return the localeDefsMap itself.
      Since:
      2.1.4