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 2007/05/07 13:46:55 UTC
svn commit: r535861 - in /tiles/framework/trunk:
tiles-api/src/main/java/org/apache/tiles/
tiles-core/src/main/java/org/apache/tiles/impl/
tiles-core/src/main/resources/org/apache/tiles/resources/
tiles-core/src/test/java/org/apache/tiles/config/ tiles...
Author: apetrelli
Date: Mon May 7 04:46:54 2007
New Revision: 535861
URL: http://svn.apache.org/viewvc?view=rev&rev=535861
Log:
TILES-168
Added support for "object" attribute type.
Added test case.
Modified:
tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/Attribute.java
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/impl/BasicTilesContainer.java
tiles/framework/trunk/tiles-core/src/main/resources/org/apache/tiles/resources/tiles-config_2_0.dtd
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/config/tiles-defs.xml
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/impl/BasicTilesContainerTest.java
Modified: tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/Attribute.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/Attribute.java?view=diff&rev=535861&r1=535860&r2=535861
==============================================================================
--- tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/Attribute.java (original)
+++ tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/Attribute.java Mon May 7 04:46:54 2007
@@ -48,6 +48,11 @@
public static final String STRING = "string";
/**
+ * Attribute of type object.
+ */
+ public static final String OBJECT = "object";
+
+ /**
* Role associated to this attribute.
*/
protected String role = null;
Modified: tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/impl/BasicTilesContainer.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/impl/BasicTilesContainer.java?view=diff&rev=535861&r1=535860&r2=535861
==============================================================================
--- tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/impl/BasicTilesContainer.java (original)
+++ tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/impl/BasicTilesContainer.java Mon May 7 04:46:54 2007
@@ -434,7 +434,13 @@
TilesRequestContext request = getRequestContext(requestItems);
String type = calculateType(attr, request);
- if ("string".equalsIgnoreCase(type)) {
+
+ if (Attribute.OBJECT.equals(type)) {
+ throw new TilesException(
+ "Cannot insert an attribute of 'object' type");
+ }
+
+ if (Attribute.STRING.equals(type)) {
writer.write(attr.getValue().toString());
return;
@@ -488,6 +494,8 @@
} else {
type = Attribute.STRING;
}
+ } else {
+ type = Attribute.OBJECT;
}
if (type == null) {
throw new TilesException("Unrecognized type for attribute value "
Modified: tiles/framework/trunk/tiles-core/src/main/resources/org/apache/tiles/resources/tiles-config_2_0.dtd
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/resources/org/apache/tiles/resources/tiles-config_2_0.dtd?view=diff&rev=535861&r1=535860&r2=535861
==============================================================================
--- tiles/framework/trunk/tiles-core/src/main/resources/org/apache/tiles/resources/tiles-config_2_0.dtd (original)
+++ tiles/framework/trunk/tiles-core/src/main/resources/org/apache/tiles/resources/tiles-config_2_0.dtd Mon May 7 04:46:54 2007
@@ -39,7 +39,7 @@
<!-- A "ContentType" is the content type of an attribute passed to a template.
-->
-<!ENTITY % ContentType "(string|template|definition)">
+<!ENTITY % ContentType "(string|template|definition|object)">
<!-- A "ClassName" is the fully qualified name of a Java class that is
instantiated to provide the functionality of the enclosing element.
Modified: tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/config/tiles-defs.xml
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/config/tiles-defs.xml?view=diff&rev=535861&r1=535860&r2=535861
==============================================================================
--- tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/config/tiles-defs.xml (original)
+++ tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/config/tiles-defs.xml Mon May 7 04:46:54 2007
@@ -41,6 +41,7 @@
<put-attribute name="menu" value="doc.menu.main" />
<put-attribute name="footer" value="/common/footer.jsp" />
<put-attribute name="body" value="doc.portal.body" />
+ <put-attribute name="bean" value="This is an object" type="object" />
</definition>
<!-- ======================================================= -->
Modified: tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/impl/BasicTilesContainerTest.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/impl/BasicTilesContainerTest.java?view=diff&rev=535861&r1=535860&r2=535861
==============================================================================
--- tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/impl/BasicTilesContainerTest.java (original)
+++ tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/impl/BasicTilesContainerTest.java Mon May 7 04:46:54 2007
@@ -20,14 +20,22 @@
*/
package org.apache.tiles.impl;
+import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Vector;
import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
import junit.framework.TestCase;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.shale.test.mock.MockHttpServletRequest;
+import org.apache.shale.test.mock.MockHttpServletResponse;
+import org.apache.tiles.Attribute;
import org.apache.tiles.TilesException;
import org.apache.tiles.factory.TilesContainerFactory;
import org.easymock.EasyMock;
@@ -39,6 +47,17 @@
public class BasicTilesContainerTest extends TestCase {
/**
+ * The logging object.
+ */
+ private static final Log LOG = LogFactory
+ .getLog(BasicTilesContainerTest.class);
+
+ /**
+ * A sample integer value to check object rendering.
+ */
+ private static final int SAMPLE_INT = 15;
+
+ /**
* The container.
*/
private BasicTilesContainer container;
@@ -79,5 +98,29 @@
assertNotNull(container.getContextFactory());
assertNotNull(container.getPreparerFactory());
assertNotNull(container.getDefinitionsFactory());
+ }
+
+ /**
+ * Tests that attributes of type "object" won't be rendered.
+ *
+ * @throws IOException If something goes wrong, but it's not a Tiles
+ * exception.
+ */
+ public void testObjectAttribute() throws IOException {
+ Attribute attribute = new Attribute();
+ HttpServletRequest request = new MockHttpServletRequest();
+ HttpServletResponse response = new MockHttpServletResponse();
+ boolean exceptionFound = false;
+
+ attribute.setValue(new Integer(SAMPLE_INT)); // A simple object
+ try {
+ container.render(attribute, null, request, response);
+ } catch (TilesException e) {
+ LOG.debug("Intercepted a TilesException, it is correct", e);
+ exceptionFound = true;
+ }
+
+ assertTrue("An attribute of 'object' type cannot be rendered",
+ exceptionFound);
}
}