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