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());
+ }
}