DefaultAttributeResolver implements AttributeResolver { public Attribute computeAttribute(TilesContainer container, Attribute attribute, String name, String role, boolean ignore, Object defaultValue, String defaultValueRole, String defaultValueType, Request request) { if (attribute == null) { AttributeContext evaluatingContext = container .getAttributeContext(request); attribute = evaluatingContext.getAttribute(name); if (attribute == null) { attribute = computeDefaultAttribute(defaultValue, defaultValueRole, defaultValueType); if (attribute == null && !ignore) { throw new NoSuchAttributeException("Attribute '" + name + "' not found."); } } } if (attribute != null && role != null && !"".equals(role.trim())) { attribute = new Attribute(attribute); attribute.setRole(role); } return attribute; }  Attribute computeAttribute(TilesContainer container, Attribute attribute,
            String name, String role, boolean ignore,
            Object defaultValue, String defaultValueRole, String defaultValueType, Request request);  }
@Test public void testComputeAttributeInContext() { TilesContainer container = createMock(TilesContainer.class); AttributeContext attributeContext = createMock(AttributeContext.class); Request request = createMock(Request.class); Attribute attribute = new Attribute("myValue", Expression .createExpression("myExpression", null), "myRole", "myRenderer"); expect(container.getAttributeContext(request)).andReturn(attributeContext); expect(attributeContext.getAttribute("myName")).andReturn(attribute); replay(container, attributeContext, request); assertEquals(attribute, resolver.computeAttribute(container, null, "myName", null, false, null, null, null, request)); verify(container, attributeContext, request); }
@Test public void testComputeAttributeInCall() { TilesContainer container = createMock(TilesContainer.class); Request request = createMock(Request.class); Attribute attribute = new Attribute("myValue", Expression .createExpression("myExpression", null), "myRole", "myRenderer"); replay(container, request); assertEquals(attribute, resolver.computeAttribute(container, attribute, null, null, false, null, null, null, request)); verify(container, request); }
@Test public void testComputeAttributeDefault() { TilesContainer container = createMock(TilesContainer.class); Request request = createMock(Request.class); AttributeContext attributeContext = createMock(AttributeContext.class); expect(container.getAttributeContext(request)).andReturn(attributeContext); expect(attributeContext.getAttribute("myName")).andReturn(null); replay(container, attributeContext, request); Attribute attribute = resolver.computeAttribute(container, null, "myName", null, false, "defaultValue", "defaultRole", "defaultType", request); assertEquals("defaultValue", attribute.getValue()); assertEquals("defaultRole", attribute.getRole()); assertEquals("defaultType", attribute.getRenderer()); verify(container, attributeContext, request); }
@Test(expected = NoSuchAttributeException.class) public void testComputeAttributeException() { TilesContainer container = createMock(TilesContainer.class); AttributeContext attributeContext = createMock(AttributeContext.class); Request request = createMock(Request.class); expect(container.getAttributeContext(request)).andReturn(attributeContext); expect(attributeContext.getAttribute("myName")).andReturn(null); replay(container, attributeContext, request); resolver.computeAttribute(container, null, "myName", null, false, null, "defaultRole", "defaultType", request); verify(container, attributeContext, request); }
@Test public void testComputeAttributeIgnore() { TilesContainer container = createMock(TilesContainer.class); AttributeContext attributeContext = createMock(AttributeContext.class); Request request = createMock(Request.class); expect(container.getAttributeContext(request)).andReturn(attributeContext); expect(attributeContext.getAttribute("myName")).andReturn(null); replay(container, attributeContext, request); assertNull(resolver.computeAttribute(container, null, "myName", null, true, null, "defaultRole", "defaultType", request)); verify(container, attributeContext, request); }