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/07/30 12:48:11 UTC

svn commit: r799232 - in /tiles/framework/trunk/tiles-core/src: main/java/org/apache/tiles/definition/pattern/PatternUtil.java test/java/org/apache/tiles/definition/pattern/PatternUtilTest.java

Author: apetrelli
Date: Thu Jul 30 10:48:11 2009
New Revision: 799232

URL: http://svn.apache.org/viewvc?rev=799232&view=rev
Log:
TILES-454
Added null checking and replacing placeholders in cascaded attributes.
Added test cases.

Modified:
    tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/pattern/PatternUtil.java
    tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/pattern/PatternUtilTest.java

Modified: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/pattern/PatternUtil.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/pattern/PatternUtil.java?rev=799232&r1=799231&r2=799232&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/pattern/PatternUtil.java (original)
+++ tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/pattern/PatternUtil.java Thu Jul 30 10:48:11 2009
@@ -67,12 +67,15 @@
         nudef.setExtends(replace(d.getExtends(), vars));
         nudef.setName(name);
         nudef.setPreparer(replace(d.getPreparer(), vars));
-        nudef.setTemplateAttribute(replaceVarsInAttribute(d
-                .getTemplateAttribute(), vars));
+        Attribute templateAttribute = d.getTemplateAttribute();
+        if (templateAttribute != null) {
+            nudef.setTemplateAttribute(replaceVarsInAttribute(
+                    templateAttribute, vars));
+        }
 
-        Set<String> localAttributeNames = d.getLocalAttributeNames();
-        if (localAttributeNames != null && !localAttributeNames.isEmpty()) {
-            for (String attributeName : localAttributeNames) {
+        Set<String> attributeNames = d.getLocalAttributeNames();
+        if (attributeNames != null && !attributeNames.isEmpty()) {
+            for (String attributeName : attributeNames) {
                 Attribute attr = d.getLocalAttribute(attributeName);
                 Attribute nuattr = replaceVarsInAttribute(attr, vars);
 
@@ -80,6 +83,16 @@
             }
         }
 
+        attributeNames = d.getCascadedAttributeNames();
+        if (attributeNames != null && !attributeNames.isEmpty()) {
+            for (String attributeName : attributeNames) {
+                Attribute attr = d.getCascadedAttribute(attributeName);
+                Attribute nuattr = replaceVarsInAttribute(attr, vars);
+
+                nudef.putAttribute(replace(attributeName, vars), nuattr, true);
+            }
+        }
+
         return nudef;
     }
 

Modified: tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/pattern/PatternUtilTest.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/pattern/PatternUtilTest.java?rev=799232&r1=799231&r2=799232&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/pattern/PatternUtilTest.java (original)
+++ tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/pattern/PatternUtilTest.java Thu Jul 30 10:48:11 2009
@@ -59,4 +59,45 @@
         attribute = nudef.getAttribute("attrib2");
         assertEquals("valuevalue2value3", attribute.getValue());
     }
+
+    /**
+     * Test method for
+     * {@link PatternUtil#replacePlaceholders(Definition, String, Object[])}.
+     */
+    @Test
+    public void testReplacePlaceholdersNullTemplate() {
+        Map<String, Attribute> attributes = new HashMap<String, Attribute>();
+        attributes.put("attrib1", new Attribute("value{2}"));
+        attributes.put("attrib2", new Attribute("value{2}{3}"));
+        Definition definition = new Definition("definitionName", (Attribute) null, attributes);
+        Definition nudef = PatternUtil.replacePlaceholders(definition, "nudef",
+                "value0", "value1", "value2", "value3");
+        assertEquals("nudef", nudef.getName());
+        assertNull(nudef.getTemplateAttribute());
+        Attribute attribute = nudef.getAttribute("attrib1");
+        assertEquals("valuevalue2", attribute.getValue());
+        attribute = nudef.getAttribute("attrib2");
+        assertEquals("valuevalue2value3", attribute.getValue());
+    }
+
+    /**
+     * Test method for
+     * {@link PatternUtil#replacePlaceholders(Definition, String, Object[])}.
+     */
+    @Test
+    public void testReplacePlaceholdersCascadedAttributes() {
+        Definition definition = new Definition("definitionName", new Attribute(
+                "template{1}"), null);
+        definition.putAttribute("attrib1", new Attribute("value{2}"), true);
+        definition.putAttribute("attrib2", new Attribute("value{2}{3}"), true);
+        Definition nudef = PatternUtil.replacePlaceholders(definition, "nudef",
+                "value0", "value1", "value2", "value3");
+        assertEquals("nudef", nudef.getName());
+        Attribute attribute = nudef.getTemplateAttribute();
+        assertEquals("templatevalue1", attribute.getValue());
+        attribute = nudef.getAttribute("attrib1");
+        assertEquals("valuevalue2", attribute.getValue());
+        attribute = nudef.getAttribute("attrib2");
+        assertEquals("valuevalue2value3", attribute.getValue());
+    }
 }