@Override protected BaseLocaleUrlDefinitionDAO instantiateLocaleDefinitionDao(ApplicationContext applicationContext, LocaleResolver resolver) { BaseLocaleUrlDefinitionDAO dao = super.instantiateLocaleDefinitionDao(applicationContext, resolver); if (checkRefresh && dao instanceof CachingLocaleUrlDefinitionDAO) { ((CachingLocaleUrlDefinitionDAO) dao).setCheckRefresh(true); } return dao; }
localeDefsMap = new LinkedHashMap<String, Definition>(); if (parentLocale != null) { Map<String, Definition> parentDefs = loadParentDefinitions(parentLocale); if (parentDefs != null) { localeDefsMap.putAll(parentDefs); try { URL newUrl = new URL(newPath); Map<String, Definition> defsMap = loadDefinitionsFromURL(newUrl); if (defsMap != null) { localeDefsMap.putAll(defsMap); Map<String, Definition> retValue = copyDefinitionMap(localeDefsMap); locale2definitionMap.put(customizationKey, localeDefsMap); postDefinitionLoadOperations(localeDefsMap, customizationKey); return retValue;
/** {@inheritDoc} */ public Map<String, Definition> getDefinitions(Locale customizationKey) { if (customizationKey == null) { customizationKey = Locale.ROOT; } Map<String, Definition> retValue = locale2definitionMap .get(customizationKey); if (retValue == null || (checkRefresh && refreshRequired())) { retValue = checkAndloadDefinitions(customizationKey); } return retValue; }
/** * Checks if URLs have changed. If yes, it clears the cache. Then continues * loading definitions. * * @param customizationKey The locale to use when loading URLs. * @return The loaded definitions. * @since 2.1.0 */ protected synchronized Map<String, Definition> checkAndloadDefinitions( Locale customizationKey) { if (checkRefresh && refreshRequired()) { locale2definitionMap.clear(); } return loadDefinitions(customizationKey); }
/** {@inheritDoc} */ public Definition getDefinition(String name, Locale customizationKey) { Definition retValue = null; if (customizationKey == null) { customizationKey = Locale.ROOT; } Map<String, Definition> definitions = getDefinitions(customizationKey); if (definitions != null) { retValue = definitions.get(name); if (retValue == null) { retValue = getDefinitionFromResolver(name, customizationKey); if (retValue != null) { synchronized (definitions) { definitions.put(name, retValue); } } } } return retValue; }
/** * Loads definitions from the sources. * * @param customizationKey The locale to use when loading Resources. * @return The loaded definitions. * @since 2.1.0 */ protected Map<String, Definition> loadDefinitionsFromResources(Locale customizationKey) { Map<String, Definition> localeDefsMap = loadRawDefinitionsFromResources(customizationKey); Map<String, Definition> defsMap = definitionResolver .storeDefinitionPatterns(copyDefinitionMap(localeDefsMap), customizationKey); locale2definitionMap.put(customizationKey, defsMap); return localeDefsMap; }
/** {@inheritDoc} */ public Definition getDefinition(String name, Locale customizationKey) { Definition retValue = null; if (customizationKey == null) { customizationKey = LocaleUtil.NULL_LOCALE; } Map<String, Definition> definitions = getDefinitions(customizationKey); if (definitions != null) { retValue = definitions.get(name); if (retValue == null && localePatternPaths.containsKey(customizationKey)) { retValue = resolveWildcardDefinition(localePatternPaths .get(customizationKey), name); if (retValue != null) { try { synchronized (definitions) { definitions.put(name, retValue); } } catch (NoSuchDefinitionException ex) { throw new IllegalStateException("Unable to resolve wildcard mapping", ex); } } } } return retValue; }
/** * Loads parent definitions, i.e. definitions mapped to a parent locale. * * @param parentLocale The locale to use when loading URLs. * @return The loaded parent definitions. * @since 2.1.0 */ protected Map<String, Definition> loadParentDefinitions(Locale parentLocale) { return loadDefinitions(parentLocale); }
/** * Creates the default definition DAO, if it has not been specified outside. * * @return The default definition DAO. * @since 2.1.0 */ protected DefinitionDAO<Locale> createDefaultDefinitionDAO() { return new CachingLocaleUrlDefinitionDAO(); } }
/** {@inheritDoc} */ public synchronized void refresh() { if (refreshRequired()) { locale2definitionMap.clear(); } }
/** {@inheritDoc} */ public Map<String, Definition> getDefinitions(Locale customizationKey) { if (customizationKey == null) { customizationKey = LocaleUtil.NULL_LOCALE; } Map<String, Definition> retValue = locale2definitionMap .get(customizationKey); if (retValue == null || (checkRefresh && refreshRequired())) { retValue = checkAndloadDefinitions(customizationKey); } return retValue; }
/** * Checks if sources have changed. If yes, it clears the cache. Then continues * loading definitions. * * @param customizationKey The locale to use when loading sources. * @return The loaded definitions. * @since 2.1.0 */ protected synchronized Map<String, Definition> checkAndloadDefinitions(Locale customizationKey) { Map<String, Definition> existingDefinitions = locale2definitionMap.get(customizationKey); boolean definitionsAlreadyLoaded = existingDefinitions != null; if (definitionsAlreadyLoaded) { return existingDefinitions; } if (checkRefresh && refreshRequired()) { locale2definitionMap.clear(); definitionResolver.clearPatternPaths(customizationKey); } loadDefinitions(customizationKey); return locale2definitionMap.get(customizationKey); }
/** * Loads parent definitions, i.e. definitions mapped to a parent locale. * * @param parentLocale The locale to use when loading URLs. * @return The loaded parent definitions. * @since 2.1.0 */ protected Map<String, Definition> loadParentDefinitions(Locale parentLocale) { return loadDefinitions(parentLocale); }
/** {@inheritDoc} */ @Override protected BaseLocaleUrlDefinitionDAO instantiateLocaleDefinitionDao( ApplicationContext applicationContext, LocaleResolver resolver) { return new CachingLocaleUrlDefinitionDAO(applicationContext); } }
@Override protected BaseLocaleUrlDefinitionDAO instantiateLocaleDefinitionDao(ApplicationContext applicationContext, LocaleResolver resolver) { BaseLocaleUrlDefinitionDAO dao = super.instantiateLocaleDefinitionDao(applicationContext, resolver); if (checkRefresh && dao instanceof CachingLocaleUrlDefinitionDAO) { ((CachingLocaleUrlDefinitionDAO) dao).setCheckRefresh(true); } return dao; }
@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; }
@Override protected BaseLocaleUrlDefinitionDAO instantiateLocaleDefinitionDao(ApplicationContext applicationContext, LocaleResolver resolver) { BaseLocaleUrlDefinitionDAO dao = super.instantiateLocaleDefinitionDao(applicationContext, resolver); if (checkRefresh && dao instanceof CachingLocaleUrlDefinitionDAO) { ((CachingLocaleUrlDefinitionDAO) dao).setCheckRefresh(true); } return dao; }
@Override protected BaseLocaleUrlDefinitionDAO instantiateLocaleDefinitionDao(ApplicationContext applicationContext, LocaleResolver resolver) { BaseLocaleUrlDefinitionDAO dao = super.instantiateLocaleDefinitionDao(applicationContext, resolver); if (checkRefresh && dao instanceof CachingLocaleUrlDefinitionDAO) { ((CachingLocaleUrlDefinitionDAO) dao).setCheckRefresh(checkRefresh); } return dao; }
@Override protected BaseLocaleUrlDefinitionDAO instantiateLocaleDefinitionDao(TilesApplicationContext applicationContext, TilesRequestContextFactory contextFactory, LocaleResolver resolver) { BaseLocaleUrlDefinitionDAO dao = super.instantiateLocaleDefinitionDao( applicationContext, contextFactory, resolver); if (checkRefresh && dao instanceof CachingLocaleUrlDefinitionDAO) { ((CachingLocaleUrlDefinitionDAO) dao).setCheckRefresh(true); } return dao; }
@Override protected BaseLocaleUrlDefinitionDAO instantiateLocaleDefinitionDao(ApplicationContext applicationContext, LocaleResolver resolver) { BaseLocaleUrlDefinitionDAO dao = super.instantiateLocaleDefinitionDao(applicationContext, resolver); if (checkRefresh && dao instanceof CachingLocaleUrlDefinitionDAO) { ((CachingLocaleUrlDefinitionDAO) dao).setCheckRefresh(checkRefresh); } return dao; }