Author: mck
Date: Wed Nov  6 16:27:16 2013
New Revision: 1539386

URL: http://svn.apache.org/r1539386
Log:
svn merge -c1539385 ^/tiles/framework/branches/TILES_3_0_X .
> TILES-573 – Tiles.xml definitions not reloaded when using expressions
> Contribution from Eric B.

Modified:
    tiles/framework/trunk/   (props changed)
    
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/dao/CachingLocaleUrlDefinitionDAO.java
    
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/pattern/AbstractPatternDefinitionResolver.java
    
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/pattern/PatternDefinitionResolver.java
    
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/pattern/AbstractPatternDefinitionResolverTest.java

Propchange: tiles/framework/trunk/
------------------------------------------------------------------------------
  Merged /tiles/framework/branches/TILES_3_0_X:r1539385

Modified: 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/dao/CachingLocaleUrlDefinitionDAO.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/dao/CachingLocaleUrlDefinitionDAO.java?rev=1539386&r1=1539385&r2=1539386&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/dao/CachingLocaleUrlDefinitionDAO.java
 (original)
+++ 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/dao/CachingLocaleUrlDefinitionDAO.java
 Wed Nov  6 16:27:16 2013
@@ -166,10 +166,10 @@ public class CachingLocaleUrlDefinitionD
      * @return The loaded definitions.
      * @since 2.1.0
      */
-    protected synchronized Map<String, Definition> checkAndloadDefinitions(
-            Locale customizationKey) {
+    protected synchronized Map<String, Definition> 
checkAndloadDefinitions(Locale customizationKey) {
         if (checkRefresh && refreshRequired()) {
             locale2definitionMap.clear();
+            definitionResolver.clearPatternPaths(customizationKey);
         }
         loadDefinitions(customizationKey);
         return locale2definitionMap.get(customizationKey);

Modified: 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/pattern/AbstractPatternDefinitionResolver.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/pattern/AbstractPatternDefinitionResolver.java?rev=1539386&r1=1539385&r2=1539386&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/pattern/AbstractPatternDefinitionResolver.java
 (original)
+++ 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/pattern/AbstractPatternDefinitionResolver.java
 Wed Nov  6 16:27:16 2013
@@ -106,4 +106,17 @@ public abstract class AbstractPatternDef
 
         return d;
     }
+    
+    
+    /**
+     * Used to clear all entries in the localePatternPaths for a specific 
locale. Necessary when reloading definition
+     * files to ensure that the list is cleared first
+     * 
+     * @param customizationKey
+     */
+    @Override
+    public void clearPatternPaths(T customizationKey) {
+        if (localePatternPaths.get(customizationKey) != null)
+            localePatternPaths.get(customizationKey).clear();
+    }
 }

Modified: 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/pattern/PatternDefinitionResolver.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/pattern/PatternDefinitionResolver.java?rev=1539386&r1=1539385&r2=1539386&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/pattern/PatternDefinitionResolver.java
 (original)
+++ 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/pattern/PatternDefinitionResolver.java
 Wed Nov  6 16:27:16 2013
@@ -57,4 +57,12 @@ public interface PatternDefinitionResolv
      * @since 2.2.0
      */
     Definition resolveDefinition(String name, T customizationKey);
+
+    /**
+     * Used to clear all entries in the localePatternPaths for a specific 
locale. Necessary when reloading definition
+     * files to ensure that the list is cleared first
+     * 
+     * @param customizationKey
+     */
+    public void clearPatternPaths(T customizationKey);
 }

Modified: 
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/pattern/AbstractPatternDefinitionResolverTest.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/pattern/AbstractPatternDefinitionResolverTest.java?rev=1539386&r1=1539385&r2=1539386&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/pattern/AbstractPatternDefinitionResolverTest.java
 (original)
+++ 
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/pattern/AbstractPatternDefinitionResolverTest.java
 Wed Nov  6 16:27:16 2013
@@ -40,60 +40,70 @@ import org.junit.Test;
  */
 public class AbstractPatternDefinitionResolverTest {
 
+    private DefinitionPatternMatcher firstMatcher;
+    private DefinitionPatternMatcher thirdMatcher;
+
+    private final PatternDefinitionResolver<Integer> resolver = new 
AbstractPatternDefinitionResolver<Integer>() {
+        @Override
+        protected Map<String, Definition> addDefinitionsAsPatternMatchers(
+                List<DefinitionPatternMatcher> matchers,
+                Map<String, Definition> defsMap) {
+
+            if (defsMap.containsKey("first")) {
+                matchers.add(firstMatcher);
+            }
+            if (defsMap.containsKey("third")) {
+                matchers.add(thirdMatcher);
+            }
+            Map<String, Definition> retValue = new HashMap<String, 
Definition>(defsMap);
+            retValue.remove("first");
+            retValue.remove("third");
+            return retValue;
+        }
+    };
+
     /**
      * Test method for
      * {@link BasicPatternDefinitionResolver#resolveDefinition(String, 
Object)}.
      */
     @Test
     public void testResolveDefinition() {
-        final DefinitionPatternMatcher firstMatcher = 
createMock(DefinitionPatternMatcher.class);
-        final DefinitionPatternMatcher thirdMatcher = 
createMock(DefinitionPatternMatcher.class);
+        testResolveDefinitionImpl();
+    }
+
+    /**
+     * Test method for
+     * {@link BasicPatternDefinitionResolver#clearPatternPaths(Object)}.
+     */
+    @Test
+    public void testClearPatternPaths() {
+        testResolveDefinitionImpl();
+        resolver.clearPatternPaths(1);
+        resolver.clearPatternPaths(2);
+        testResolveDefinitionImpl();
+    }
 
-        Definition firstDefinition = new Definition("first", (Attribute) null,
-                null);
-        Definition secondDefinition = new Definition("second",
-                (Attribute) null, null);
-        Definition thirdDefinition = new Definition("third", (Attribute) null,
-                null);
-
-        Definition firstTransformedDefinition = new Definition(
-                "firstTransformed", (Attribute) null, null);
-        Definition thirdTransformedDefinition = new Definition(
-                "thirdTransformed", (Attribute) null, null);
-
-        expect(firstMatcher.createDefinition("firstTransformed")).andReturn(
-                firstTransformedDefinition);
-        expect(firstMatcher.createDefinition("secondTransformed")).andReturn(
-                null);
-        expect(firstMatcher.createDefinition("thirdTransformed")).andReturn(
-                null);
-        expect(thirdMatcher.createDefinition("thirdTransformed")).andReturn(
-                thirdTransformedDefinition).times(2);
-        expect(thirdMatcher.createDefinition("firstTransformed")).andReturn(
-                null);
-        expect(thirdMatcher.createDefinition("secondTransformed")).andReturn(
-                null).times(2);
+    private void testResolveDefinitionImpl() {
 
-        replay(firstMatcher, thirdMatcher);
-        PatternDefinitionResolver<Integer> resolver = new 
AbstractPatternDefinitionResolver<Integer>() {
+        firstMatcher = createMock(DefinitionPatternMatcher.class);
+        thirdMatcher = createMock(DefinitionPatternMatcher.class);
 
-            @Override
-            protected Map<String, Definition> addDefinitionsAsPatternMatchers(
-                    List<DefinitionPatternMatcher> matchers,
-                    Map<String, Definition> defsMap) {
-                if (defsMap.containsKey("first")) {
-                    matchers.add(firstMatcher);
-                }
-                if (defsMap.containsKey("third")) {
-                    matchers.add(thirdMatcher);
-                }
-                Map<String, Definition> retValue = new HashMap<String, 
Definition>(defsMap);
-                retValue.remove("first");
-                retValue.remove("third");
-                return retValue;
-            }
+        Definition firstDefinition = new Definition("first", (Attribute) null, 
null);
+        Definition secondDefinition = new Definition("second", (Attribute) 
null, null);
+        Definition thirdDefinition = new Definition("third", (Attribute) null, 
null);
+
+        Definition firstTransformedDefinition = new 
Definition("firstTransformed", (Attribute) null, null);
+        Definition thirdTransformedDefinition = new 
Definition("thirdTransformed", (Attribute) null, null);
+
+        
expect(firstMatcher.createDefinition("firstTransformed")).andReturn(firstTransformedDefinition);
+        
expect(firstMatcher.createDefinition("secondTransformed")).andReturn(null);
+        
expect(firstMatcher.createDefinition("thirdTransformed")).andReturn(null);
+        
expect(thirdMatcher.createDefinition("thirdTransformed")).andReturn(thirdTransformedDefinition).times(2);
+        
expect(thirdMatcher.createDefinition("firstTransformed")).andReturn(null);
+        
expect(thirdMatcher.createDefinition("secondTransformed")).andReturn(null).times(2);
+
+        replay(firstMatcher, thirdMatcher);
 
-        };
         Map<String, Definition> localeDefsMap = new LinkedHashMap<String, 
Definition>();
         localeDefsMap.put("first", firstDefinition);
         localeDefsMap.put("second", secondDefinition);


Reply via email to