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