TILES-585 – Definition cascade attributes duplicated values under high load
Fix by Jakub Dziworski - jakub.dziworski@gmail.com
This closes #9
ref: https://github.com/apache/tiles/pull/9/commits/78d9001ea5d0b02523ada36453848125d80ec6e3


git-svn-id: https://svn.apache.org/repos/asf/tiles/framework/branches/TILES_3_0_X@1752405 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/tiles-core/src/main/java/org/apache/tiles/definition/dao/CachingLocaleUrlDefinitionDAO.java b/tiles-core/src/main/java/org/apache/tiles/definition/dao/CachingLocaleUrlDefinitionDAO.java
index cee95a3..20f13db 100644
--- a/tiles-core/src/main/java/org/apache/tiles/definition/dao/CachingLocaleUrlDefinitionDAO.java
+++ b/tiles-core/src/main/java/org/apache/tiles/definition/dao/CachingLocaleUrlDefinitionDAO.java
@@ -167,6 +167,11 @@
      * @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);