You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tiles.apache.org by ap...@apache.org on 2009/09/14 09:14:58 UTC

svn commit: r814502 - in /tiles/framework/branches/TILES_2_1_X: ./ tiles-core/src/main/java/org/apache/tiles/definition/dao/ tiles-core/src/test/java/org/apache/tiles/definition/dao/ tiles-jsp/src/test/java/org/apache/tiles/jsp/taglib/

Author: apetrelli
Date: Mon Sep 14 07:14:57 2009
New Revision: 814502

URL: http://svn.apache.org/viewvc?rev=814502&view=rev
Log:
TILES-340
Merge from trunk to TILES_2_1_X branch.
Now the raw definition map is correctly used, as it is deep copied when needed by definition maps of higher-level customization keys.
Added tests to check wildcard mappings in ResolvingLocaleUrlDefinitionDAO.

Modified:
    tiles/framework/branches/TILES_2_1_X/   (props changed)
    tiles/framework/branches/TILES_2_1_X/tiles-core/src/main/java/org/apache/tiles/definition/dao/CachingLocaleUrlDefinitionDAO.java
    tiles/framework/branches/TILES_2_1_X/tiles-core/src/main/java/org/apache/tiles/definition/dao/ResolvingLocaleUrlDefinitionDAO.java
    tiles/framework/branches/TILES_2_1_X/tiles-core/src/test/java/org/apache/tiles/definition/dao/CachingLocaleUrlDefinitionDAOTest.java
    tiles/framework/branches/TILES_2_1_X/tiles-core/src/test/java/org/apache/tiles/definition/dao/ResolvingLocaleUrlDefinitionDAOTest.java
    tiles/framework/branches/TILES_2_1_X/tiles-jsp/src/test/java/org/apache/tiles/jsp/taglib/   (props changed)
    tiles/framework/branches/TILES_2_1_X/tiles-jsp/src/test/java/org/apache/tiles/jsp/taglib/ImportAttributeTagTest.java   (props changed)

Propchange: tiles/framework/branches/TILES_2_1_X/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Sep 14 07:14:57 2009
@@ -1 +1 @@
-/tiles/framework/trunk:749981,761052,761061,772781,785782,788065-789653,798944
+/tiles/framework/trunk:749981,761052,761061,772781,785782,788065-789653,798944,814331

Modified: tiles/framework/branches/TILES_2_1_X/tiles-core/src/main/java/org/apache/tiles/definition/dao/CachingLocaleUrlDefinitionDAO.java
URL: http://svn.apache.org/viewvc/tiles/framework/branches/TILES_2_1_X/tiles-core/src/main/java/org/apache/tiles/definition/dao/CachingLocaleUrlDefinitionDAO.java?rev=814502&r1=814501&r2=814502&view=diff
==============================================================================
--- tiles/framework/branches/TILES_2_1_X/tiles-core/src/main/java/org/apache/tiles/definition/dao/CachingLocaleUrlDefinitionDAO.java (original)
+++ tiles/framework/branches/TILES_2_1_X/tiles-core/src/main/java/org/apache/tiles/definition/dao/CachingLocaleUrlDefinitionDAO.java Mon Sep 14 07:14:57 2009
@@ -204,8 +204,8 @@
             return localeDefsMap;
         }
 
-        localeDefsMap = loadDefinitionsFromURLs(customizationKey);
-        return localeDefsMap;
+        loadDefinitionsFromURLs(customizationKey);
+        return locale2definitionMap.get(customizationKey);
     }
 
     /**
@@ -216,21 +216,6 @@
      * @since 2.1.0
      */
     protected Map<String, Definition> loadDefinitionsFromURLs(Locale customizationKey) {
-        Map<String, Definition> localeDefsMap = loadRawDefinitionsFromURLs(customizationKey);
-        postDefinitionLoadOperations(localeDefsMap, customizationKey);
-
-        return localeDefsMap;
-    }
-
-    /**
-     * Loads the raw definitions from the URLs associated with a locale.
-     *
-     * @param customizationKey The locale to use when loading URLs.
-     * @return The loaded definitions.
-     * @since 2.1.3
-     */
-    protected Map<String, Definition> loadRawDefinitionsFromURLs(
-            Locale customizationKey) {
         Map<String, Definition> localeDefsMap;
 
         String postfix = LocaleUtil.calculatePostfix(customizationKey);
@@ -258,8 +243,23 @@
                         + newPath, e);
             }
         }
+        Map<String, Definition> retValue = copyDefinitionMap(localeDefsMap);
         locale2definitionMap.put(customizationKey, localeDefsMap);
-        return localeDefsMap;
+        postDefinitionLoadOperations(localeDefsMap, customizationKey);
+        return retValue;
+    }
+
+    /**
+     * Loads the raw definitions from the URLs associated with a locale.
+     *
+     * @param customizationKey The locale to use when loading URLs.
+     * @return The loaded definitions.
+     * @since 2.1.3
+     * @deprecated Use {@link #loadDefinitionsFromURLs(Locale)}.
+     */
+    protected Map<String, Definition> loadRawDefinitionsFromURLs(
+            Locale customizationKey) {
+        return loadDefinitionsFromURLs(customizationKey);
     }
 
     /**
@@ -452,4 +452,18 @@
             return pattern;
         }
     }
+
+    /**
+     * Copies the definition map to be passed to a higher level of customization
+     * key.
+     *
+     * @param localeDefsMap The map of definition to be copied.
+     * @return The copy of the definition map. This particular implementation
+     * return the <code>localeDefsMap</code> itself.
+     * @since 2.1.4
+     */
+    protected Map<String, Definition> copyDefinitionMap(
+            Map<String, Definition> localeDefsMap) {
+        return localeDefsMap;
+    }
 }

Modified: tiles/framework/branches/TILES_2_1_X/tiles-core/src/main/java/org/apache/tiles/definition/dao/ResolvingLocaleUrlDefinitionDAO.java
URL: http://svn.apache.org/viewvc/tiles/framework/branches/TILES_2_1_X/tiles-core/src/main/java/org/apache/tiles/definition/dao/ResolvingLocaleUrlDefinitionDAO.java?rev=814502&r1=814501&r2=814502&view=diff
==============================================================================
--- tiles/framework/branches/TILES_2_1_X/tiles-core/src/main/java/org/apache/tiles/definition/dao/ResolvingLocaleUrlDefinitionDAO.java (original)
+++ tiles/framework/branches/TILES_2_1_X/tiles-core/src/main/java/org/apache/tiles/definition/dao/ResolvingLocaleUrlDefinitionDAO.java Mon Sep 14 07:14:57 2009
@@ -22,6 +22,7 @@
 package org.apache.tiles.definition.dao;
 
 import java.util.HashSet;
+import java.util.LinkedHashMap;
 import java.util.Locale;
 import java.util.Map;
 import java.util.Set;
@@ -54,7 +55,7 @@
     /** {@inheritDoc} */
     @Override
     protected Map<String, Definition> loadParentDefinitions(Locale parentLocale) {
-        return loadRawDefinitionsFromURLs(parentLocale);
+        return loadDefinitionsFromURLs(parentLocale);
     }
 
     /** {@inheritDoc} */
@@ -133,4 +134,27 @@
 
         definition.inherit(parent);
     }
+
+    /**
+     * Copies the definition map to be passed to a higher level of customization
+     * key.
+     *
+     * @param localeDefsMap The map of definition to be copied.
+     * @return The copy of the definition map. This particular implementation
+     * deep-copies the <code>localeDefsMap</code> into a {@link LinkedHashMap}.
+     * @since 2.1.4
+     */
+    @Override
+    protected Map<String, Definition> copyDefinitionMap(
+            Map<String, Definition> localeDefsMap) {
+        Map<String, Definition> retValue = new LinkedHashMap<String, Definition>(
+                localeDefsMap.size());
+
+        for (Map.Entry<String, Definition> entry : localeDefsMap.entrySet()) {
+            Definition definition = new Definition(entry.getValue());
+            retValue.put(entry.getKey(), definition);
+        }
+
+        return retValue;
+    }
 }

Modified: tiles/framework/branches/TILES_2_1_X/tiles-core/src/test/java/org/apache/tiles/definition/dao/CachingLocaleUrlDefinitionDAOTest.java
URL: http://svn.apache.org/viewvc/tiles/framework/branches/TILES_2_1_X/tiles-core/src/test/java/org/apache/tiles/definition/dao/CachingLocaleUrlDefinitionDAOTest.java?rev=814502&r1=814501&r2=814502&view=diff
==============================================================================
--- tiles/framework/branches/TILES_2_1_X/tiles-core/src/test/java/org/apache/tiles/definition/dao/CachingLocaleUrlDefinitionDAOTest.java (original)
+++ tiles/framework/branches/TILES_2_1_X/tiles-core/src/test/java/org/apache/tiles/definition/dao/CachingLocaleUrlDefinitionDAOTest.java Mon Sep 14 07:14:57 2009
@@ -39,7 +39,9 @@
 
 import junit.framework.TestCase;
 
+import org.apache.tiles.Attribute;
 import org.apache.tiles.Definition;
+import org.apache.tiles.ListAttribute;
 import org.apache.tiles.TilesApplicationContext;
 import org.apache.tiles.awareness.TilesApplicationContextAware;
 import org.apache.tiles.context.TilesRequestContext;
@@ -658,4 +660,30 @@
         definition = definitionDao.getDefinition("test.def3", null);
         assertNotNull("The simple definition is null", definition);
     }
+
+    /**
+     * Tests
+     * {@link ResolvingLocaleUrlDefinitionDAO#getDefinition(String, Locale)}
+     * when loading multiple files for a locale.
+     *
+     * @throws IOException If something goes wrong.
+     */
+    @SuppressWarnings("unchecked")
+    public void testListAttributeLocaleInheritance() throws IOException {
+        URL url = this.getClass().getClassLoader().getResource(
+                "org/apache/tiles/config/tiles-defs-2.1.xml");
+        definitionDao.addSourceURL(url);
+        TilesApplicationContext applicationContext = EasyMock
+                .createMock(TilesApplicationContext.class);
+        definitionDao.setReader(new DigesterDefinitionsReader());
+        EasyMock.replay(applicationContext);
+
+        Definition definition = definitionDao.getDefinition(
+                "test.inherit.list", Locale.ITALIAN);
+        ListAttribute listAttribute = (ListAttribute) definition
+                .getAttribute("list");
+        List<Attribute> attributes = (List<Attribute>) listAttribute.getValue();
+        // It is right not to resolve inheritance in this DAO.
+        assertEquals(1, attributes.size());
+    }
 }

Modified: tiles/framework/branches/TILES_2_1_X/tiles-core/src/test/java/org/apache/tiles/definition/dao/ResolvingLocaleUrlDefinitionDAOTest.java
URL: http://svn.apache.org/viewvc/tiles/framework/branches/TILES_2_1_X/tiles-core/src/test/java/org/apache/tiles/definition/dao/ResolvingLocaleUrlDefinitionDAOTest.java?rev=814502&r1=814501&r2=814502&view=diff
==============================================================================
--- tiles/framework/branches/TILES_2_1_X/tiles-core/src/test/java/org/apache/tiles/definition/dao/ResolvingLocaleUrlDefinitionDAOTest.java (original)
+++ tiles/framework/branches/TILES_2_1_X/tiles-core/src/test/java/org/apache/tiles/definition/dao/ResolvingLocaleUrlDefinitionDAOTest.java Mon Sep 14 07:14:57 2009
@@ -649,12 +649,27 @@
                 .setApplicationContext(applicationContext);
         definitionDao.setReader(new DigesterDefinitionsReader());
 
-        Definition definition = definitionDao.getDefinition("test.defName.subLayered", null);
+        Definition definition = definitionDao.getDefinition("test.defName.subLayered", Locale.ITALY);
         assertEquals("The template is not correct", "/testName.jsp", definition
                 .getTemplateAttribute().getValue());
         assertEquals("The header attribute is not correct",
                 "/common/headerLayered.jsp", definition.getAttribute("header")
                         .getValue());
+        definition = definitionDao.getDefinition("test.defName.subLayered", Locale.ITALIAN);
+        assertEquals("The template is not correct", "/testName.jsp", definition
+                .getTemplateAttribute().getValue());
+        assertEquals("The header attribute is not correct",
+                "/common/headerLayered.jsp", definition.getAttribute("header")
+                        .getValue());
+        definition = definitionDao.getDefinition("test.defName.subLayered", null);
+        assertEquals("The template is not correct", "/testName.jsp", definition
+                .getTemplateAttribute().getValue());
+        assertEquals("The header attribute is not correct",
+                "/common/headerLayered.jsp", definition.getAttribute("header")
+                        .getValue());
+        definition = definitionDao.getDefinition("test.defName.noAttribute", null);
+        assertEquals("/testName.jsp", definition.getTemplateAttribute().getValue());
+        assertEquals(null, definition.getLocalAttributeNames());
         definition = definitionDao.getDefinition("test.def3", null);
         assertNotNull("The simple definition is null", definition);
     }

Propchange: tiles/framework/branches/TILES_2_1_X/tiles-jsp/src/test/java/org/apache/tiles/jsp/taglib/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Sep 14 07:14:57 2009
@@ -1 +1 @@
-/tiles/framework/trunk/tiles-jsp/src/test/java/org/apache/tiles/jsp/taglib:749981,761052,761061,772781,785782,788065-789653,798944*
+/tiles/framework/trunk/tiles-jsp/src/test/java/org/apache/tiles/jsp/taglib:749981,761052,761061,772781,785782,788065-789653,798944*,814331*

Propchange: tiles/framework/branches/TILES_2_1_X/tiles-jsp/src/test/java/org/apache/tiles/jsp/taglib/ImportAttributeTagTest.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Sep 14 07:14:57 2009
@@ -1 +1 @@
-/tiles/framework/trunk/tiles-jsp/src/test/java/org/apache/tiles/jsp/taglib/ImportAttributeTagTest.java:749981,761052,761061,772781,785782,788065-789653,798944
+/tiles/framework/trunk/tiles-jsp/src/test/java/org/apache/tiles/jsp/taglib/ImportAttributeTagTest.java:749981,761052,761061,772781,785782,788065-789653,798944,814331