/** {@inheritDoc} */ @Override protected DefinitionDAO<Locale> createDefaultDefinitionDAO() { return new ResolvingLocaleUrlDefinitionDAO(); }
/** {@inheritDoc} */ @Override protected Map<String, Definition> loadParentDefinitions(Locale parentLocale) { return loadDefinitionsFromURLs(parentLocale); }
/** {@inheritDoc} */ @Override protected Map<String, Definition> loadParentDefinitions(Locale parentLocale) { return loadRawDefinitionsFromResources(parentLocale); }
/** * Resolve locale-specific extended instances. * * @param map The definition map containing the definitions to resolve. * @param locale The locale to use. * @throws NoSuchDefinitionException If a parent definition is not found. * @since 2.1.0 */ protected void resolveInheritances(Map<String, Definition> map, Locale locale) { if (map != null) { Set<String> alreadyResolvedDefinitions = new HashSet<String>(); for (Definition definition : map.values()) { resolveInheritance(definition, map, locale, alreadyResolvedDefinitions); } // end loop } }
@Override protected Map<String, Definition> loadDefinitions(Locale customizationKey) { Map<String, Definition> localeDefsMap = super.loadDefinitions(customizationKey); Map<String, Definition> defsMap = definitionResolver .storeDefinitionPatterns(copyDefinitionMap(localeDefsMap), customizationKey); resolveInheritances(defsMap, customizationKey); locale2definitionMap.put(customizationKey, defsMap); return defsMap; }
/** {@inheritDoc} */ @Override protected void postDefinitionLoadOperations( Map<String, Definition> localeDefsMap, Locale customizationKey) { resolveInheritances(localeDefsMap, customizationKey); super.postDefinitionLoadOperations(localeDefsMap, customizationKey); }
/** {@inheritDoc} */ @Override protected Definition getDefinitionFromResolver(String name, Locale customizationKey) { Definition retValue = super.getDefinitionFromResolver(name, customizationKey); if (retValue != null && retValue.getExtends() != null) { Definition parent = getDefinition(retValue.getExtends(), customizationKey); retValue.inherit(parent); } return retValue; }
/** * Resolve locale-specific extended instances. * * @param map The definition map containing the definitions to resolve. * @param locale The locale to use. * @throws NoSuchDefinitionException If a parent definition is not found. * @since 2.1.0 */ protected void resolveInheritances(Map<String, Definition> map, Locale locale) { if (map != null) { Set<String> alreadyResolvedDefinitions = new HashSet<String>(); for (Definition definition : map.values()) { resolveInheritance(definition, map, locale, alreadyResolvedDefinitions); } // end loop } }
resolveInheritance(parent, definitions, locale, alreadyResolvedDefinitions);
/** * Instantiate (and does not initialize) a Locale-based definition DAO. * @param applicationContext The Tiles application context. * @param resolver The locale resolver. * @return The definition DAO. * @since 2.1.1 */ protected BaseLocaleUrlDefinitionDAO instantiateLocaleDefinitionDao(ApplicationContext applicationContext, LocaleResolver resolver) { ResolvingLocaleUrlDefinitionDAO dao = new ResolvingLocaleUrlDefinitionDAO(applicationContext); return dao; }
resolveInheritance(parent, definitions, locale, alreadyResolvedDefinitions);
/** * Instantiate (and does not initialize) a Locale-based definition DAO. * @param applicationContext The Tiles application context. * @param contextFactory The Tiles context factory. * @param resolver The locale resolver. * * @return The definition DAO. * @since 2.1.1 */ protected BaseLocaleUrlDefinitionDAO instantiateLocaleDefinitionDao(TilesApplicationContext applicationContext, TilesRequestContextFactory contextFactory, LocaleResolver resolver) { return new ResolvingLocaleUrlDefinitionDAO(); }