Author: apetrelli
Date: Thu Aug 26 18:28:14 2010
New Revision: 989864

URL: http://svn.apache.org/viewvc?rev=989864&view=rev
Log:
TILES-512
If the "extends" attribute is declared and no "templateType" is declared, 
simply set templateType to null. When resolving inheritance, it will be 
inherited from parent.

Modified:
    
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/digester/DigesterDefinitionsReader.java
    
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/config/tiles-defs-2.1.xml
    
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/dao/ResolvingLocaleUrlDefinitionDAOTest.java

Modified: 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/digester/DigesterDefinitionsReader.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/digester/DigesterDefinitionsReader.java?rev=989864&r1=989863&r2=989864&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/digester/DigesterDefinitionsReader.java
 (original)
+++ 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/digester/DigesterDefinitionsReader.java
 Thu Aug 26 18:28:14 2010
@@ -162,7 +162,8 @@ public class DigesterDefinitionsReader i
             Definition definition = (Definition) digester.peek();
             definition.setName(attributes.getValue("name"));
             definition.setPreparer(attributes.getValue("preparer"));
-            definition.setExtends(attributes.getValue("extends"));
+            String extendsAttribute = attributes.getValue("extends");
+            definition.setExtends(extendsAttribute);
 
             String template = attributes.getValue("template");
             Attribute attribute = Attribute.createTemplateAttribute(template);
@@ -173,6 +174,8 @@ public class DigesterDefinitionsReader i
             String templateType = attributes.getValue("templateType");
             if (templateType != null) {
                 attribute.setRenderer(templateType);
+            } else if (extendsAttribute != null && templateType == null) {
+                attribute.setRenderer(null);
             }
             definition.setTemplateAttribute(attribute);
         }

Modified: 
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/config/tiles-defs-2.1.xml
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/config/tiles-defs-2.1.xml?rev=989864&r1=989863&r2=989864&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/config/tiles-defs-2.1.xml
 (original)
+++ 
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/config/tiles-defs-2.1.xml
 Thu Aug 26 18:28:14 2010
@@ -80,4 +80,11 @@
           templateType="mytype" >
       <put-attribute name="body" expression="${my.attribute.expression}" />
   </definition>
+
+  <definition name="test.inherit.othertype.base" template="/layout.ftl" 
templateType="freemarker">
+      <put-attribute name="body" value="/jsp/body.jsp" />
+  </definition>
+
+  <definition name="test.inherit.othertype" 
extends="test.inherit.othertype.base">
+  </definition>
 </tiles-definitions>

Modified: 
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/dao/ResolvingLocaleUrlDefinitionDAOTest.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/dao/ResolvingLocaleUrlDefinitionDAOTest.java?rev=989864&r1=989863&r2=989864&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/dao/ResolvingLocaleUrlDefinitionDAOTest.java
 (original)
+++ 
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/dao/ResolvingLocaleUrlDefinitionDAOTest.java
 Thu Aug 26 18:28:14 2010
@@ -722,4 +722,26 @@ public class ResolvingLocaleUrlDefinitio
         List<Attribute> attributes = (List<Attribute>) 
listAttribute.getValue();
         assertEquals(2, attributes.size());
     }
+
+    /**
+     * Tests
+     * {...@link ResolvingLocaleUrlDefinitionDAO#getDefinition(String, Locale)}
+     * to solve the TILES-512 issue.
+     *
+     * @throws IOException If something goes wrong.
+     */
+    public void testTiles512() 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.othertype", Locale.ITALIAN);
+        assertEquals("/layout.ftl", 
definition.getTemplateAttribute().getValue());
+        assertEquals("freemarker", 
definition.getTemplateAttribute().getRenderer());
+    }
 }


Reply via email to