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/18 14:32:28 UTC

svn commit: r795354 - in /tiles/framework/trunk/tiles-template/src: main/java/org/apache/tiles/template/ImportAttributeModel.java test/java/org/apache/tiles/template/ImportAttributeModelTest.java

Author: apetrelli
Date: Sat Jul 18 12:32:28 2009
New Revision: 795354

URL: http://svn.apache.org/viewvc?rev=795354&view=rev
Log:
TILES-441
Added fix for ImportAttributeModel in trunk. Added test cases.

Modified:
    tiles/framework/trunk/tiles-template/src/main/java/org/apache/tiles/template/ImportAttributeModel.java
    tiles/framework/trunk/tiles-template/src/test/java/org/apache/tiles/template/ImportAttributeModelTest.java

Modified: tiles/framework/trunk/tiles-template/src/main/java/org/apache/tiles/template/ImportAttributeModel.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-template/src/main/java/org/apache/tiles/template/ImportAttributeModel.java?rev=795354&r1=795353&r2=795354&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-template/src/main/java/org/apache/tiles/template/ImportAttributeModel.java (original)
+++ tiles/framework/trunk/tiles-template/src/main/java/org/apache/tiles/template/ImportAttributeModel.java Sat Jul 18 12:32:28 2009
@@ -104,37 +104,35 @@
             AttributeContext attributeContext, String name, String toName,
             boolean ignore, Map<String, Object> attributes,
             Object... requestItems) {
-        Attribute attribute = attributeContext.getAttribute(name);
-        if ((attribute == null || attribute.getValue() == null) && ignore) {
-            return;
-        }
-
-        if (attribute == null) {
-            throw new NoSuchAttributeException("Attribute with name '" + name
-                    + "' not found");
-        }
-
-        Object attributeValue = null;
-
-        try {
-            attributeValue = container.evaluate(attribute, requestItems);
-        } catch (RuntimeException e) {
-            if (!ignore) {
-                throw e;
-            } else if (log.isDebugEnabled()) {
-                log.debug("Ignoring Tiles Exception", e);
+        Attribute attr = attributeContext.getAttribute(name);
+        if (attr != null) {
+            try {
+                Object attributeValue = container.evaluate(attr,
+                        requestItems);
+                if (attributeValue == null) {
+                    if (!ignore) {
+                        throw new NoSuchAttributeException(
+                                "Error importing attributes. " + "Attribute '"
+                                        + name + "' has a null value ");
+                    }
+                } else {
+                    if (toName != null) {
+                        attributes.put(toName, attributeValue);
+                    } else {
+                        attributes.put(name, attributeValue);
+                    }
+                }
+            } catch (RuntimeException e) {
+                if (!ignore) {
+                    throw e;
+                } else if (log.isDebugEnabled()) {
+                    log.debug("Ignoring Tiles Exception", e);
+                }
             }
-        }
-
-        if (attributeValue == null && !ignore) {
-            throw new NoSuchAttributeException("Attribute with name '" + name
-                    + "' has a null value.");
-        }
-
-        if (toName != null) {
-            attributes.put(toName, attributeValue);
-        } else {
-            attributes.put(name, attributeValue);
+        } else if (!ignore) {
+            throw new NoSuchAttributeException(
+                    "Error importing attributes. " + "Attribute '" + name
+                            + "' is null");
         }
     }
 
@@ -167,30 +165,8 @@
                 continue;
             }
 
-            Attribute attr = attributeContext.getAttribute(name);
-
-            if (attr != null) {
-                try {
-                    Object attributeValue = container.evaluate(attr,
-                            requestItems);
-                    if (attributeValue == null && !ignore) {
-                        throw new NoSuchAttributeException(
-                                "Error importing attributes. " + "Attribute '"
-                                        + name + "' has a null value ");
-                    }
-                    attributes.put(name, attributeValue);
-                } catch (RuntimeException e) {
-                    if (!ignore) {
-                        throw e;
-                    } else if (log.isDebugEnabled()) {
-                        log.debug("Ignoring Tiles Exception", e);
-                    }
-                }
-            } else if (!ignore) {
-                throw new NoSuchAttributeException(
-                        "Error importing attributes. " + "Attribute '" + name
-                                + "' is null");
-            }
+            importSingleAttribute(container, attributeContext, name, name,
+                    ignore, attributes, requestItems);
         }
     }
 }

Modified: tiles/framework/trunk/tiles-template/src/test/java/org/apache/tiles/template/ImportAttributeModelTest.java
URL: http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-template/src/test/java/org/apache/tiles/template/ImportAttributeModelTest.java?rev=795354&r1=795353&r2=795354&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-template/src/test/java/org/apache/tiles/template/ImportAttributeModelTest.java (original)
+++ tiles/framework/trunk/tiles-template/src/test/java/org/apache/tiles/template/ImportAttributeModelTest.java Sat Jul 18 12:32:28 2009
@@ -144,4 +144,133 @@
         assertEquals("myEvaluatedValue3", attributes.get("myName3"));
         verify(container, attributeContext);
     }
+
+    /**
+     * Test method for {@link org.apache.tiles.template.ImportAttributeModel
+     * #getImportedAttributes(org.apache.tiles.TilesContainer, java.lang.String,
+     * java.lang.String, boolean, java.lang.Object[])}.
+     */
+    @Test(expected = NoSuchAttributeException.class)
+    public void testGetImportedAttributesSingleNullAttributeException() {
+        TilesContainer container = createMock(TilesContainer.class);
+        Integer requestItem = new Integer(1);
+        AttributeContext attributeContext = createMock(AttributeContext.class);
+        expect(container.getAttributeContext(requestItem)).andReturn(attributeContext);
+        expect(attributeContext.getAttribute("myName")).andReturn(null);
+
+        replay(container, attributeContext);
+        try {
+            model.getImportedAttributes(container, "myName", null, false, requestItem);
+        } finally {
+            verify(container, attributeContext);
+        }
+    }
+
+    /**
+     * Test method for {@link org.apache.tiles.template.ImportAttributeModel
+     * #getImportedAttributes(org.apache.tiles.TilesContainer, java.lang.String,
+     * java.lang.String, boolean, java.lang.Object[])}.
+     */
+    @Test(expected = NoSuchAttributeException.class)
+    public void testGetImportedAttributesSingleNullAttributeValueException() {
+        TilesContainer container = createMock(TilesContainer.class);
+        Integer requestItem = new Integer(1);
+        AttributeContext attributeContext = createMock(AttributeContext.class);
+        Attribute attribute = new Attribute();
+
+        expect(container.getAttributeContext(requestItem)).andReturn(attributeContext);
+        expect(attributeContext.getAttribute("myName")).andReturn(attribute);
+        expect(container.evaluate(attribute, requestItem)).andReturn(null);
+
+        replay(container, attributeContext);
+        try {
+            model.getImportedAttributes(container, "myName", null, false, requestItem);
+        } finally {
+            verify(container, attributeContext);
+        }
+    }
+
+    /**
+     * Test method for {@link org.apache.tiles.template.ImportAttributeModel
+     * #getImportedAttributes(org.apache.tiles.TilesContainer, java.lang.String,
+     * java.lang.String, boolean, java.lang.Object[])}.
+     */
+    @Test(expected = RuntimeException.class)
+    public void testGetImportedAttributesSingleRuntimeException() {
+        TilesContainer container = createMock(TilesContainer.class);
+        Integer requestItem = new Integer(1);
+        AttributeContext attributeContext = createMock(AttributeContext.class);
+        Attribute attribute = new Attribute();
+
+        expect(container.getAttributeContext(requestItem)).andReturn(attributeContext);
+        expect(attributeContext.getAttribute("myName")).andReturn(attribute);
+        expect(container.evaluate(attribute, requestItem)).andThrow(new RuntimeException());
+
+        replay(container, attributeContext);
+        try {
+            model.getImportedAttributes(container, "myName", null, false, requestItem);
+        } finally {
+            verify(container, attributeContext);
+        }
+    }
+
+    /**
+     * Test method for {@link org.apache.tiles.template.ImportAttributeModel
+     * #getImportedAttributes(org.apache.tiles.TilesContainer, java.lang.String,
+     * java.lang.String, boolean, java.lang.Object[])}.
+     */
+    @Test
+    public void testGetImportedAttributesSingleNullAttributeIgnore() {
+        TilesContainer container = createMock(TilesContainer.class);
+        Integer requestItem = new Integer(1);
+        AttributeContext attributeContext = createMock(AttributeContext.class);
+        expect(container.getAttributeContext(requestItem)).andReturn(attributeContext);
+        expect(attributeContext.getAttribute("myName")).andReturn(null);
+
+        replay(container, attributeContext);
+        model.getImportedAttributes(container, "myName", null, true, requestItem);
+        verify(container, attributeContext);
+    }
+
+    /**
+     * Test method for {@link org.apache.tiles.template.ImportAttributeModel
+     * #getImportedAttributes(org.apache.tiles.TilesContainer, java.lang.String,
+     * java.lang.String, boolean, java.lang.Object[])}.
+     */
+    @Test
+    public void testGetImportedAttributesSingleNullAttributeValueIgnore() {
+        TilesContainer container = createMock(TilesContainer.class);
+        Integer requestItem = new Integer(1);
+        AttributeContext attributeContext = createMock(AttributeContext.class);
+        Attribute attribute = new Attribute();
+
+        expect(container.getAttributeContext(requestItem)).andReturn(attributeContext);
+        expect(attributeContext.getAttribute("myName")).andReturn(attribute);
+        expect(container.evaluate(attribute, requestItem)).andReturn(null);
+
+        replay(container, attributeContext);
+        model.getImportedAttributes(container, "myName", null, true, requestItem);
+        verify(container, attributeContext);
+    }
+
+    /**
+     * Test method for {@link org.apache.tiles.template.ImportAttributeModel
+     * #getImportedAttributes(org.apache.tiles.TilesContainer, java.lang.String,
+     * java.lang.String, boolean, java.lang.Object[])}.
+     */
+    @Test
+    public void testGetImportedAttributesSingleRuntimeIgnore() {
+        TilesContainer container = createMock(TilesContainer.class);
+        Integer requestItem = new Integer(1);
+        AttributeContext attributeContext = createMock(AttributeContext.class);
+        Attribute attribute = new Attribute();
+
+        expect(container.getAttributeContext(requestItem)).andReturn(attributeContext);
+        expect(attributeContext.getAttribute("myName")).andReturn(attribute);
+        expect(container.evaluate(attribute, requestItem)).andThrow(new RuntimeException());
+
+        replay(container, attributeContext);
+        model.getImportedAttributes(container, "myName", null, true, requestItem);
+        verify(container, attributeContext);
+    }
 }