| /* |
| * $Id$ |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| */ |
| package org.apache.tiles; |
| |
| import static org.junit.Assert.*; |
| import static org.easymock.EasyMock.*; |
| |
| import java.util.ArrayList; |
| import java.util.HashMap; |
| import java.util.HashSet; |
| import java.util.LinkedHashSet; |
| import java.util.List; |
| import java.util.Map; |
| import java.util.Set; |
| |
| import org.junit.Test; |
| |
| /** |
| * Tests <code>BasicAttributeContext</code>. |
| * |
| * @version $Rev$ $Date$ |
| */ |
| public class BasicAttributeContextTest { |
| |
| /** |
| * Tests {@link BasicAttributeContext#BasicAttributeContext()}. |
| */ |
| @Test |
| public void testBasicAttributeContext() { |
| AttributeContext context = new BasicAttributeContext(); |
| assertNull("There are some spurious attributes", context |
| .getLocalAttributeNames()); |
| assertNull("There are some spurious attributes", context |
| .getCascadedAttributeNames()); |
| } |
| |
| /** |
| * Tests {@link BasicAttributeContext#BasicAttributeContext(Map)}. |
| */ |
| @Test |
| public void testBasicAttributeContextMapOfStringAttribute() { |
| Map<String, Attribute> name2attrib = new HashMap<String, Attribute>(); |
| Attribute attribute = new Attribute("Value 1"); |
| name2attrib.put("name1", attribute); |
| attribute = new Attribute("Value 2"); |
| name2attrib.put("name2", attribute); |
| AttributeContext context = new BasicAttributeContext(name2attrib); |
| attribute = context.getAttribute("name1"); |
| assertNotNull("Attribute name1 not found", attribute); |
| assertEquals("Attribute name1 has not been set correctly", "Value 1", |
| attribute.getValue()); |
| attribute = context.getAttribute("name2"); |
| assertNotNull("Attribute name2 not found", attribute); |
| assertEquals("Attribute name2 has not been set correctly", "Value 2", |
| attribute.getValue()); |
| } |
| |
| /** |
| * Tests |
| * {@link BasicAttributeContext#BasicAttributeContext(AttributeContext)}. |
| */ |
| @Test |
| public void testBasicAttributeContextAttributeContext() { |
| Set<String> localAttributes = new LinkedHashSet<String>(); |
| Set<String> cascadedAttributes = new LinkedHashSet<String>(); |
| localAttributes.add("local1"); |
| localAttributes.add("local2"); |
| cascadedAttributes.add("cascaded1"); |
| cascadedAttributes.add("cascaded2"); |
| AttributeContext toCopy = createMock(AttributeContext.class); |
| expect(toCopy.getLocalAttributeNames()).andReturn(localAttributes); |
| expect(toCopy.getLocalAttribute("local1")).andReturn( |
| new Attribute("value1")).anyTimes(); |
| expect(toCopy.getLocalAttribute("local2")).andReturn( |
| new Attribute("value2")).anyTimes(); |
| expect(toCopy.getCascadedAttributeNames()) |
| .andReturn(cascadedAttributes); |
| expect(toCopy.getCascadedAttribute("cascaded1")).andReturn( |
| new Attribute("value3")).anyTimes(); |
| expect(toCopy.getCascadedAttribute("cascaded2")).andReturn( |
| new Attribute("value4")).anyTimes(); |
| Attribute templateAttribute = new Attribute("/template.jsp", Expression |
| .createExpression("expression", null), "role1,role2", |
| "template"); |
| expect(toCopy.getTemplateAttribute()).andReturn(templateAttribute); |
| Set<String> roles = new HashSet<String>(); |
| roles.add("role1"); |
| roles.add("role2"); |
| expect(toCopy.getPreparer()).andReturn("my.preparer.Preparer"); |
| replay(toCopy); |
| BasicAttributeContext context = new BasicAttributeContext(toCopy); |
| assertEquals("The template has not been set correctly", |
| "/template.jsp", context.getTemplateAttribute().getValue()); |
| assertEquals("The template expression has not been set correctly", |
| "expression", context.getTemplateAttribute() |
| .getExpressionObject().getExpression()); |
| assertEquals("The roles are not the same", roles, context |
| .getTemplateAttribute().getRoles()); |
| assertEquals("The preparer has not been set correctly", |
| "my.preparer.Preparer", context.getPreparer()); |
| Attribute attribute = context.getLocalAttribute("local1"); |
| assertNotNull("Attribute local1 not found", attribute); |
| assertEquals("Attribute local1 has not been set correctly", "value1", |
| attribute.getValue()); |
| attribute = context.getLocalAttribute("local2"); |
| assertNotNull("Attribute local2 not found", attribute); |
| assertEquals("Attribute local2 has not been set correctly", "value2", |
| attribute.getValue()); |
| attribute = context.getCascadedAttribute("cascaded1"); |
| assertNotNull("Attribute cascaded1 not found", attribute); |
| assertEquals("Attribute cascaded1 has not been set correctly", |
| "value3", attribute.getValue()); |
| attribute = context.getCascadedAttribute("cascaded2"); |
| assertNotNull("Attribute cascaded2 not found", attribute); |
| assertEquals("Attribute cascaded2 has not been set correctly", |
| "value4", attribute.getValue()); |
| } |
| |
| /** |
| * Tests |
| * {@link BasicAttributeContext#BasicAttributeContext(BasicAttributeContext)} |
| * . |
| */ |
| @Test |
| public void testBasicAttributeContextBasicAttributeContext() { |
| BasicAttributeContext toCopy = new BasicAttributeContext(); |
| toCopy.putAttribute("name1", new Attribute("value1"), false); |
| toCopy.putAttribute("name2", new Attribute("value2"), true); |
| Attribute templateAttribute = Attribute |
| .createTemplateAttribute("/template.jsp"); |
| Set<String> roles = new HashSet<String>(); |
| roles.add("role1"); |
| roles.add("role2"); |
| templateAttribute.setRoles(roles); |
| toCopy.setTemplateAttribute(templateAttribute); |
| toCopy.setPreparer("my.preparer.Preparer"); |
| AttributeContext context = new BasicAttributeContext(toCopy); |
| assertEquals("The template has not been set correctly", |
| "/template.jsp", context.getTemplateAttribute().getValue()); |
| assertEquals("The roles are not the same", roles, context |
| .getTemplateAttribute().getRoles()); |
| assertEquals("The preparer has not been set correctly", |
| "my.preparer.Preparer", context.getPreparer()); |
| Attribute attribute = context.getLocalAttribute("name1"); |
| assertNotNull("Attribute name1 not found", attribute); |
| assertEquals("Attribute name1 has not been set correctly", "value1", |
| attribute.getValue()); |
| attribute = context.getCascadedAttribute("name2"); |
| assertNotNull("Attribute name2 not found", attribute); |
| assertEquals("Attribute name2 has not been set correctly", "value2", |
| attribute.getValue()); |
| } |
| |
| /** |
| * Tests |
| * {@link BasicAttributeContext#inheritCascadedAttributes(AttributeContext)} |
| * . |
| */ |
| @Test |
| public void testInheritCascadedAttributes() { |
| AttributeContext toCopy = new BasicAttributeContext(); |
| toCopy.putAttribute("name1", new Attribute("value1"), false); |
| toCopy.putAttribute("name2", new Attribute("value2"), true); |
| AttributeContext context = new BasicAttributeContext(); |
| context.inheritCascadedAttributes(toCopy); |
| Attribute attribute = context.getLocalAttribute("name1"); |
| assertNull("Attribute name1 found", attribute); |
| attribute = context.getCascadedAttribute("name2"); |
| assertNotNull("Attribute name2 not found", attribute); |
| assertEquals("Attribute name2 has not been set correctly", "value2", |
| attribute.getValue()); |
| } |
| |
| /** |
| * Tests {@link BasicAttributeContext#inherit(BasicAttributeContext)} |
| * testing inheritance between {@link ListAttribute} instances. |
| */ |
| @SuppressWarnings("unchecked") |
| @Test |
| public void testInheritListAttribute() { |
| AttributeContext toCopy = new BasicAttributeContext(); |
| ListAttribute parentListAttribute = new ListAttribute(); |
| parentListAttribute.add("first"); |
| toCopy.putAttribute("list", parentListAttribute); |
| AttributeContext context = new BasicAttributeContext(); |
| ListAttribute listAttribute = new ListAttribute(); |
| listAttribute.setInherit(true); |
| listAttribute.add("second"); |
| context.putAttribute("list", listAttribute); |
| context.inherit(toCopy); |
| ListAttribute result = (ListAttribute) context.getAttribute("list"); |
| assertNotNull("The attribute must exist", result); |
| List<Object> value = (List<Object>) result.getValue(); |
| assertNotNull("The list must exist", value); |
| assertEquals("The size is not correct", 2, value.size()); |
| assertEquals("The first element is not correct", "first", value.get(0)); |
| assertEquals("The second element is not correct", "second", value |
| .get(1)); |
| |
| context = new BasicAttributeContext(); |
| listAttribute = new ListAttribute(); |
| listAttribute.add("second"); |
| context.putAttribute("list", listAttribute); |
| context.inherit(toCopy); |
| result = (ListAttribute) context.getAttribute("list"); |
| assertNotNull("The attribute must exist", result); |
| value = (List<Object>) result.getValue(); |
| assertNotNull("The list must exist", value); |
| assertEquals("The size is not correct", 1, value.size()); |
| assertEquals("The second element is not correct", "second", value |
| .get(0)); |
| } |
| |
| /** |
| * Tests |
| * {@link BasicAttributeContext#inheritCascadedAttributes(AttributeContext)} |
| * . |
| */ |
| @Test |
| public void testInherit() { |
| AttributeContext toCopy = new BasicAttributeContext(); |
| Attribute parentTemplateAttribute = new Attribute(); |
| parentTemplateAttribute.setValue("/parent/template.jsp"); |
| toCopy.setTemplateAttribute(parentTemplateAttribute); |
| toCopy.putAttribute("name1", new Attribute("value1"), true); |
| toCopy.putAttribute("name2", new Attribute("value2"), true); |
| toCopy.putAttribute("name3", new Attribute("value3"), false); |
| toCopy.putAttribute("name4", new Attribute("value4"), false); |
| AttributeContext context = new BasicAttributeContext(); |
| Attribute templateAttribute = new Attribute(); |
| templateAttribute.setRole("role1,role2"); |
| context.setTemplateAttribute(templateAttribute); |
| context.putAttribute("name1", new Attribute("newValue1"), true); |
| context.putAttribute("name3", new Attribute("newValue3"), false); |
| context.inherit(toCopy); |
| Attribute attribute = context.getTemplateAttribute(); |
| assertEquals("/parent/template.jsp", attribute.getValue()); |
| assertTrue(attribute.getRoles().contains("role1")); |
| assertTrue(attribute.getRoles().contains("role2")); |
| attribute = context.getCascadedAttribute("name1"); |
| assertNotNull("Attribute name1 not found", attribute); |
| assertEquals("Attribute name1 has not been set correctly", "newValue1", |
| attribute.getValue()); |
| attribute = context.getCascadedAttribute("name2"); |
| assertNotNull("Attribute name2 not found", attribute); |
| assertEquals("Attribute name2 has not been set correctly", "value2", |
| attribute.getValue()); |
| attribute = context.getLocalAttribute("name3"); |
| assertNotNull("Attribute name3 not found", attribute); |
| assertEquals("Attribute name3 has not been set correctly", "newValue3", |
| attribute.getValue()); |
| attribute = context.getLocalAttribute("name4"); |
| assertNotNull("Attribute name4 not found", attribute); |
| assertEquals("Attribute name4 has not been set correctly", "value4", |
| attribute.getValue()); |
| |
| toCopy = new BasicAttributeContext(); |
| toCopy.putAttribute("name1", new Attribute("value1"), true); |
| toCopy.putAttribute("name2", new Attribute("value2"), true); |
| toCopy.putAttribute("name3", new Attribute("value3"), false); |
| toCopy.putAttribute("name4", new Attribute("value4"), false); |
| context = new BasicAttributeContext(); |
| context.inherit(toCopy); |
| attribute = context.getCascadedAttribute("name1"); |
| assertNotNull("Attribute name1 not found", attribute); |
| assertEquals("Attribute name1 has not been set correctly", "value1", |
| attribute.getValue()); |
| attribute = context.getCascadedAttribute("name2"); |
| assertNotNull("Attribute name2 not found", attribute); |
| assertEquals("Attribute name2 has not been set correctly", "value2", |
| attribute.getValue()); |
| attribute = context.getLocalAttribute("name3"); |
| assertNotNull("Attribute name3 not found", attribute); |
| assertEquals("Attribute name3 has not been set correctly", "value3", |
| attribute.getValue()); |
| attribute = context.getLocalAttribute("name4"); |
| assertNotNull("Attribute name4 not found", attribute); |
| assertEquals("Attribute name4 has not been set correctly", "value4", |
| attribute.getValue()); |
| } |
| |
| /** |
| * Tests |
| * {@link BasicAttributeContext#inherit(AttributeContext)} |
| * . |
| */ |
| @Test |
| public void testInheritAttributeContext() { |
| AttributeContext toCopy = createMock(AttributeContext.class); |
| Attribute templateAttribute = Attribute.createTemplateAttribute("/my/template.jsp"); |
| expect(toCopy.getTemplateAttribute()).andReturn(templateAttribute); |
| expect(toCopy.getPreparer()).andReturn("my.preparer"); |
| Set<String> cascadedNames = new HashSet<String>(); |
| cascadedNames.add("name1"); |
| cascadedNames.add("name2"); |
| expect(toCopy.getCascadedAttributeNames()).andReturn(cascadedNames); |
| expect(toCopy.getCascadedAttribute("name1")).andReturn(new Attribute("value1")); |
| expect(toCopy.getCascadedAttribute("name2")).andReturn(new Attribute("value2")); |
| Set<String> names = new HashSet<String>(); |
| names.add("name3"); |
| names.add("name4"); |
| expect(toCopy.getLocalAttributeNames()).andReturn(names); |
| expect(toCopy.getLocalAttribute("name3")).andReturn(new Attribute("value3")); |
| expect(toCopy.getLocalAttribute("name4")).andReturn(new Attribute("value4")); |
| |
| replay(toCopy); |
| AttributeContext context = new BasicAttributeContext(); |
| context.putAttribute("name1", new Attribute("newValue1"), true); |
| context.putAttribute("name3", new Attribute("newValue3"), false); |
| context.inherit(toCopy); |
| Attribute attribute = context.getCascadedAttribute("name1"); |
| assertEquals("/my/template.jsp", context.getTemplateAttribute().getValue()); |
| assertEquals("my.preparer", context.getPreparer()); |
| assertNotNull("Attribute name1 not found", attribute); |
| assertEquals("Attribute name1 has not been set correctly", "newValue1", |
| attribute.getValue()); |
| attribute = context.getCascadedAttribute("name2"); |
| assertNotNull("Attribute name2 not found", attribute); |
| assertEquals("Attribute name2 has not been set correctly", "value2", |
| attribute.getValue()); |
| attribute = context.getLocalAttribute("name3"); |
| assertNotNull("Attribute name3 not found", attribute); |
| assertEquals("Attribute name3 has not been set correctly", "newValue3", |
| attribute.getValue()); |
| attribute = context.getLocalAttribute("name4"); |
| assertNotNull("Attribute name4 not found", attribute); |
| assertEquals("Attribute name4 has not been set correctly", "value4", |
| attribute.getValue()); |
| verify(toCopy); |
| } |
| |
| /** |
| * Tests {@link BasicAttributeContext#inherit(AttributeContext)} |
| * testing inheritance between {@link ListAttribute} instances. |
| */ |
| @SuppressWarnings("unchecked") |
| @Test |
| public void testInheritAttributeContextListAttribute() { |
| AttributeContext toCopy = createMock(AttributeContext.class); |
| Attribute templateAttribute = Attribute.createTemplateAttribute("/my/template.jsp"); |
| expect(toCopy.getTemplateAttribute()).andReturn(templateAttribute).times(2); |
| expect(toCopy.getPreparer()).andReturn("my.preparer").times(2); |
| ListAttribute parentListAttribute = new ListAttribute(); |
| parentListAttribute.add("first"); |
| ListAttribute parentListAttribute2 = new ListAttribute(); |
| parentListAttribute2.add("third"); |
| Set<String> names = new HashSet<String>(); |
| names.add("list"); |
| Set<String> cascadedNames = new HashSet<String>(); |
| cascadedNames.add("list2"); |
| expect(toCopy.getCascadedAttributeNames()).andReturn(cascadedNames).times(2); |
| expect(toCopy.getCascadedAttribute("list2")).andReturn(parentListAttribute2).times(2); |
| expect(toCopy.getLocalAttributeNames()).andReturn(names).times(2); |
| expect(toCopy.getLocalAttribute("list")).andReturn(parentListAttribute).times(2); |
| |
| replay(toCopy); |
| AttributeContext context = new BasicAttributeContext(); |
| ListAttribute listAttribute = new ListAttribute(); |
| listAttribute.setInherit(true); |
| listAttribute.add("second"); |
| context.putAttribute("list", listAttribute, false); |
| ListAttribute listAttribute2 = new ListAttribute(); |
| listAttribute2.setInherit(true); |
| listAttribute2.add("fourth"); |
| context.putAttribute("list2", listAttribute2, true); |
| context.inherit(toCopy); |
| ListAttribute result = (ListAttribute) context.getAttribute("list"); |
| assertNotNull("The attribute must exist", result); |
| List<Object> value = (List<Object>) result.getValue(); |
| assertNotNull("The list must exist", value); |
| assertEquals("The size is not correct", 2, value.size()); |
| assertEquals("The first element is not correct", "first", value.get(0)); |
| assertEquals("The second element is not correct", "second", value |
| .get(1)); |
| result = (ListAttribute) context.getAttribute("list2"); |
| assertNotNull("The attribute must exist", result); |
| value = (List<Object>) result.getValue(); |
| assertNotNull("The list must exist", value); |
| assertEquals("The size is not correct", 2, value.size()); |
| assertEquals("The first element is not correct", "third", value.get(0)); |
| assertEquals("The second element is not correct", "fourth", value |
| .get(1)); |
| |
| context = new BasicAttributeContext(); |
| listAttribute = new ListAttribute(); |
| listAttribute.add("second"); |
| context.putAttribute("list", listAttribute); |
| context.inherit(toCopy); |
| result = (ListAttribute) context.getAttribute("list"); |
| assertNotNull("The attribute must exist", result); |
| value = (List<Object>) result.getValue(); |
| assertNotNull("The list must exist", value); |
| assertEquals("The size is not correct", 1, value.size()); |
| assertEquals("The second element is not correct", "second", value |
| .get(0)); |
| verify(toCopy); |
| } |
| |
| /** |
| * Tests {@link BasicAttributeContext#addAll(Map)}. |
| */ |
| @Test |
| public void testAddAll() { |
| AttributeContext context = new BasicAttributeContext(); |
| Map<String, Attribute> name2attrib = new HashMap<String, Attribute>(); |
| Attribute attribute = new Attribute("Value 1"); |
| name2attrib.put("name1", attribute); |
| attribute = new Attribute("Value 2"); |
| name2attrib.put("name2", attribute); |
| context.addAll(name2attrib); |
| attribute = context.getAttribute("name1"); |
| assertNotNull("Attribute name1 not found", attribute); |
| assertEquals("Attribute name1 has not been set correctly", "Value 1", |
| attribute.getValue()); |
| attribute = context.getAttribute("name2"); |
| assertNotNull("Attribute name2 not found", attribute); |
| assertEquals("Attribute name2 has not been set correctly", "Value 2", |
| attribute.getValue()); |
| |
| context.addAll(null); |
| attribute = context.getAttribute("name1"); |
| assertNotNull("Attribute name1 not found", attribute); |
| assertEquals("Attribute name1 has not been set correctly", "Value 1", |
| attribute.getValue()); |
| attribute = context.getAttribute("name2"); |
| assertNotNull("Attribute name2 not found", attribute); |
| assertEquals("Attribute name2 has not been set correctly", "Value 2", |
| attribute.getValue()); |
| |
| name2attrib = new HashMap<String, Attribute>(); |
| name2attrib.put("name3", new Attribute("Value 3")); |
| context.addAll(name2attrib); |
| attribute = context.getAttribute("name1"); |
| assertNotNull("Attribute name1 not found", attribute); |
| assertEquals("Attribute name1 has not been set correctly", "Value 1", |
| attribute.getValue()); |
| attribute = context.getAttribute("name2"); |
| assertNotNull("Attribute name2 not found", attribute); |
| assertEquals("Attribute name2 has not been set correctly", "Value 2", |
| attribute.getValue()); |
| attribute = context.getAttribute("name3"); |
| assertNotNull("Attribute name3 not found", attribute); |
| assertEquals("Attribute name3 has not been set correctly", "Value 3", |
| attribute.getValue()); |
| } |
| |
| /** |
| * Tests {@link BasicAttributeContext#addMissing(Map)}. |
| */ |
| @Test |
| public void testAddMissing() { |
| Map<String, Attribute> name2attrib = new HashMap<String, Attribute>(); |
| Attribute attribute = new Attribute("Value 1"); |
| name2attrib.put("name1", attribute); |
| attribute = new Attribute("Value 2"); |
| name2attrib.put("name2", attribute); |
| AttributeContext context = new BasicAttributeContext(name2attrib); |
| name2attrib.remove("name2"); |
| name2attrib.put("name1", new Attribute("Value 1a")); |
| name2attrib.put("name3", new Attribute("Value 3")); |
| context.addMissing(name2attrib); |
| attribute = context.getAttribute("name1"); |
| assertNotNull("Attribute name1 not found", attribute); |
| assertEquals("Attribute name1 has not been set correctly", "Value 1", |
| attribute.getValue()); |
| attribute = context.getAttribute("name2"); |
| assertNotNull("Attribute name2 not found", attribute); |
| assertEquals("Attribute name2 has not been set correctly", "Value 2", |
| attribute.getValue()); |
| attribute = context.getAttribute("name3"); |
| assertNotNull("Attribute name3 not found", attribute); |
| assertEquals("Attribute name3 has not been set correctly", "Value 3", |
| attribute.getValue()); |
| |
| context.addMissing(null); |
| attribute = context.getAttribute("name1"); |
| assertNotNull("Attribute name1 not found", attribute); |
| assertEquals("Attribute name1 has not been set correctly", "Value 1", |
| attribute.getValue()); |
| attribute = context.getAttribute("name2"); |
| assertNotNull("Attribute name2 not found", attribute); |
| assertEquals("Attribute name2 has not been set correctly", "Value 2", |
| attribute.getValue()); |
| attribute = context.getAttribute("name3"); |
| assertNotNull("Attribute name3 not found", attribute); |
| assertEquals("Attribute name3 has not been set correctly", "Value 3", |
| attribute.getValue()); |
| |
| context = new BasicAttributeContext(); |
| name2attrib = new HashMap<String, Attribute>(); |
| name2attrib.put("name1", new Attribute("Value 1a")); |
| name2attrib.put("name3", new Attribute("Value 3")); |
| context.addMissing(name2attrib); |
| attribute = context.getAttribute("name1"); |
| assertNotNull("Attribute name1 not found", attribute); |
| assertEquals("Attribute name1 has not been set correctly", "Value 1a", |
| attribute.getValue()); |
| attribute = context.getAttribute("name3"); |
| assertNotNull("Attribute name3 not found", attribute); |
| assertEquals("Attribute name3 has not been set correctly", "Value 3", |
| attribute.getValue()); |
| |
| context = new BasicAttributeContext(); |
| context.putAttribute("name2", new Attribute("Value 2a"), true); |
| name2attrib = new HashMap<String, Attribute>(); |
| name2attrib.put("name1", new Attribute("Value 1a")); |
| name2attrib.put("name3", new Attribute("Value 3")); |
| context.addMissing(name2attrib); |
| attribute = context.getAttribute("name1"); |
| assertNotNull("Attribute name1 not found", attribute); |
| assertEquals("Attribute name1 has not been set correctly", "Value 1a", |
| attribute.getValue()); |
| attribute = context.getAttribute("name2"); |
| assertNotNull("Attribute name2 not found", attribute); |
| assertEquals("Attribute name2 has not been set correctly", "Value 2a", |
| attribute.getValue()); |
| attribute = context.getAttribute("name3"); |
| assertNotNull("Attribute name3 not found", attribute); |
| assertEquals("Attribute name3 has not been set correctly", "Value 3", |
| attribute.getValue()); |
| |
| context = new BasicAttributeContext(); |
| context.putAttribute("name2", new Attribute("Value 2a"), true); |
| name2attrib = new HashMap<String, Attribute>(); |
| name2attrib.put("name2", new Attribute("Value 2b")); |
| name2attrib.put("name3", new Attribute("Value 3")); |
| context.addMissing(name2attrib); |
| attribute = context.getAttribute("name2"); |
| assertNotNull("Attribute name2 not found", attribute); |
| assertEquals("Attribute name2 has not been set correctly", "Value 2a", |
| attribute.getValue()); |
| attribute = context.getAttribute("name3"); |
| assertNotNull("Attribute name3 not found", attribute); |
| assertEquals("Attribute name3 has not been set correctly", "Value 3", |
| attribute.getValue()); |
| } |
| |
| /** |
| * Tests {@link BasicAttributeContext#getAttribute(String)}. |
| */ |
| @Test |
| public void testGetAttribute() { |
| AttributeContext context = new BasicAttributeContext(); |
| context.putAttribute("name1", new Attribute("value1"), false); |
| context.putAttribute("name2", new Attribute("value2"), true); |
| context.putAttribute("name3", new Attribute("value3a"), true); |
| context.putAttribute("name3", new Attribute("value3"), false); |
| Attribute attribute = context.getAttribute("name1"); |
| assertNotNull("Attribute name1 not found", attribute); |
| assertEquals("Attribute name1 has not been set correctly", "value1", |
| attribute.getValue()); |
| attribute = context.getAttribute("name2"); |
| assertNotNull("Attribute name2 not found", attribute); |
| assertEquals("Attribute name2 has not been set correctly", "value2", |
| attribute.getValue()); |
| attribute = context.getAttribute("name3"); |
| assertNotNull("Attribute name3 not found", attribute); |
| assertEquals("Attribute name3 has not been set correctly", "value3", |
| attribute.getValue()); |
| } |
| |
| /** |
| * Tests {@link BasicAttributeContext#getLocalAttribute(String)}. |
| */ |
| @Test |
| public void testGetLocalAttribute() { |
| AttributeContext context = new BasicAttributeContext(); |
| context.putAttribute("name1", new Attribute("value1"), false); |
| context.putAttribute("name2", new Attribute("value2"), true); |
| context.putAttribute("name3", new Attribute("value3a"), true); |
| context.putAttribute("name3", new Attribute("value3"), false); |
| Attribute attribute = context.getLocalAttribute("name1"); |
| assertNotNull("Attribute name1 not found", attribute); |
| assertEquals("Attribute name1 has not been set correctly", "value1", |
| attribute.getValue()); |
| attribute = context.getLocalAttribute("name2"); |
| assertNull("Attribute name2 found", attribute); |
| attribute = context.getLocalAttribute("name3"); |
| assertNotNull("Attribute name3 not found", attribute); |
| assertEquals("Attribute name3 has not been set correctly", "value3", |
| attribute.getValue()); |
| } |
| |
| /** |
| * Tests {@link BasicAttributeContext#getCascadedAttribute(String)}. |
| */ |
| @Test |
| public void testGetCascadedAttribute() { |
| AttributeContext context = new BasicAttributeContext(); |
| context.putAttribute("name1", new Attribute("value1"), false); |
| context.putAttribute("name2", new Attribute("value2"), true); |
| context.putAttribute("name3", new Attribute("value3a"), true); |
| context.putAttribute("name3", new Attribute("value3"), false); |
| Attribute attribute = context.getCascadedAttribute("name1"); |
| assertNull("Attribute name1 found", attribute); |
| attribute = context.getCascadedAttribute("name2"); |
| assertNotNull("Attribute name2 not found", attribute); |
| assertEquals("Attribute name2 has not been set correctly", "value2", |
| attribute.getValue()); |
| attribute = context.getCascadedAttribute("name3"); |
| assertNotNull("Attribute name3 not found", attribute); |
| assertEquals("Attribute name3 has not been set correctly", "value3a", |
| attribute.getValue()); |
| } |
| |
| /** |
| * Tests {@link BasicAttributeContext#getLocalAttributeNames()}. |
| */ |
| @Test |
| public void testGetLocalAttributeNames() { |
| AttributeContext context = new BasicAttributeContext(); |
| context.putAttribute("name1", new Attribute("value1"), false); |
| context.putAttribute("name2", new Attribute("value2"), true); |
| context.putAttribute("name3", new Attribute("value3a"), true); |
| context.putAttribute("name3", new Attribute("value3"), false); |
| Set<String> names = context.getLocalAttributeNames(); |
| assertTrue("Attribute name1 is not present", names.contains("name1")); |
| assertFalse("Attribute name2 is present", names.contains("name2")); |
| assertTrue("Attribute name3 is not present", names.contains("name3")); |
| } |
| |
| /** |
| * Tests {@link BasicAttributeContext#getCascadedAttributeNames()}. |
| */ |
| @Test |
| public void testGetCascadedAttributeNames() { |
| AttributeContext context = new BasicAttributeContext(); |
| context.putAttribute("name1", new Attribute("value1"), false); |
| context.putAttribute("name2", new Attribute("value2"), true); |
| context.putAttribute("name3", new Attribute("value3a"), true); |
| context.putAttribute("name3", new Attribute("value3"), false); |
| Set<String> names = context.getCascadedAttributeNames(); |
| assertFalse("Attribute name1 is present", names.contains("name1")); |
| assertTrue("Attribute name2 is not present", names.contains("name2")); |
| assertTrue("Attribute name3 is not present", names.contains("name3")); |
| } |
| |
| /** |
| * Tests {@link BasicAttributeContext#putAttribute(String, Attribute)}. |
| */ |
| @Test |
| public void testPutAttributeStringAttribute() { |
| AttributeContext context = new BasicAttributeContext(); |
| context.putAttribute("name1", new Attribute("value1")); |
| Attribute attribute = context.getLocalAttribute("name1"); |
| assertNotNull("Attribute name1 not found", attribute); |
| assertEquals("Attribute name1 has not been set correctly", "value1", |
| attribute.getValue()); |
| attribute = context.getCascadedAttribute("name1"); |
| assertNull("Attribute name1 found", attribute); |
| } |
| |
| /** |
| * Tests |
| * {@link BasicAttributeContext#putAttribute(String, Attribute, boolean)}. |
| */ |
| @Test |
| public void testPutAttributeStringAttributeBoolean() { |
| AttributeContext context = new BasicAttributeContext(); |
| context.putAttribute("name1", new Attribute("value1"), false); |
| context.putAttribute("name2", new Attribute("value2"), true); |
| Attribute attribute = context.getLocalAttribute("name1"); |
| assertNotNull("Attribute name1 not found", attribute); |
| assertEquals("Attribute name1 has not been set correctly", "value1", |
| attribute.getValue()); |
| attribute = context.getCascadedAttribute("name1"); |
| assertNull("Attribute name1 found", attribute); |
| attribute = context.getCascadedAttribute("name2"); |
| assertNotNull("Attribute name2 not found", attribute); |
| assertEquals("Attribute name2 has not been set correctly", "value2", |
| attribute.getValue()); |
| attribute = context.getLocalAttribute("name2"); |
| assertNull("Attribute name2 found", attribute); |
| } |
| |
| /** |
| * Tests {@link BasicAttributeContext#clear()}. |
| */ |
| @Test |
| public void testClear() { |
| AttributeContext context = new BasicAttributeContext(); |
| context.putAttribute("name1", new Attribute("value1"), false); |
| context.putAttribute("name2", new Attribute("value2"), true); |
| context.clear(); |
| Set<String> names = context.getLocalAttributeNames(); |
| assertTrue("There are local attributes", names == null |
| || names.isEmpty()); |
| names = context.getCascadedAttributeNames(); |
| assertTrue("There are cascaded attributes", names == null |
| || names.isEmpty()); |
| } |
| |
| /** |
| * Tests {@link BasicAttributeContext#equals(Object)}. |
| */ |
| @Test |
| public void testEquals() { |
| BasicAttributeContext attributeContext = new BasicAttributeContext(); |
| attributeContext.setPreparer("my.preparer"); |
| attributeContext.setTemplateAttribute(Attribute.createTemplateAttribute("/my/template.jsp")); |
| attributeContext.putAttribute("attribute1", new Attribute("value1"), true); |
| attributeContext.putAttribute("attribute2", new Attribute("value2"), true); |
| attributeContext.putAttribute("attribute3", new Attribute("value3"), false); |
| BasicAttributeContext toCompare = new BasicAttributeContext(attributeContext); |
| assertTrue(toCompare.equals(attributeContext)); |
| toCompare = new BasicAttributeContext(attributeContext); |
| toCompare.putAttribute("attribute4", new Attribute("value4"), true); |
| assertFalse(toCompare.equals(attributeContext)); |
| toCompare = new BasicAttributeContext(attributeContext); |
| toCompare.putAttribute("attribute4", new Attribute("value4"), false); |
| assertFalse(toCompare.equals(attributeContext)); |
| toCompare = new BasicAttributeContext(attributeContext); |
| toCompare.setPreparer("another.preparer"); |
| assertFalse(toCompare.equals(attributeContext)); |
| toCompare = new BasicAttributeContext(attributeContext); |
| toCompare.setTemplateAttribute(Attribute.createTemplateAttribute("/another/template.jsp")); |
| assertFalse(toCompare.equals(attributeContext)); |
| } |
| |
| /** |
| * Tests {@link BasicAttributeContext#hashCode()}. |
| */ |
| @Test |
| public void testHashCode() { |
| BasicAttributeContext attributeContext = new BasicAttributeContext(); |
| attributeContext.setPreparer("my.preparer"); |
| Attribute templateAttribute = Attribute.createTemplateAttribute("/my/template.jsp"); |
| attributeContext.setTemplateAttribute(templateAttribute); |
| Attribute attribute1 = new Attribute("value1"); |
| Attribute attribute2 = new Attribute("value2"); |
| Attribute attribute3 = new Attribute("value3"); |
| attributeContext.putAttribute("attribute1", attribute1, true); |
| attributeContext.putAttribute("attribute2", attribute2, true); |
| attributeContext.putAttribute("attribute3", attribute3, false); |
| Map<String, Attribute> cascadedAttributes = new HashMap<String, Attribute>(); |
| cascadedAttributes.put("attribute1", attribute1); |
| cascadedAttributes.put("attribute2", attribute2); |
| Map<String, Attribute> attributes = new HashMap<String, Attribute>(); |
| attributes.put("attribute3", attribute3); |
| assertEquals(templateAttribute.hashCode() + "my.preparer".hashCode() |
| + attributes.hashCode() + cascadedAttributes.hashCode(), |
| attributeContext.hashCode()); |
| } |
| |
| /** |
| * Tests {@link BasicAttributeContext} for the TILES-429 bug. |
| */ |
| @Test |
| public void testTiles429() { |
| AttributeContext toCopy = new BasicAttributeContext(); |
| toCopy.putAttribute("name1", new Attribute("value1"), false); |
| toCopy.putAttribute("name2", new Attribute("value2"), true); |
| List<Object> listOfObjects = new ArrayList<Object>(); |
| listOfObjects.add(1); |
| ListAttribute listAttribute = new ListAttribute(listOfObjects); |
| listAttribute.setInherit(true); |
| toCopy.putAttribute("name3", listAttribute); |
| Attribute templateAttribute = Attribute |
| .createTemplateAttribute("/template.jsp"); |
| Set<String> roles = new HashSet<String>(); |
| roles.add("role1"); |
| roles.add("role2"); |
| templateAttribute.setRoles(roles); |
| toCopy.setTemplateAttribute(templateAttribute); |
| toCopy.setPreparer("my.preparer.Preparer"); |
| AttributeContext context = new BasicAttributeContext(toCopy); |
| Attribute attribute = context.getAttribute("name1"); |
| attribute.setValue("newValue1"); |
| attribute = context.getAttribute("name1"); |
| assertEquals("newValue1", attribute.getValue()); |
| attribute = toCopy.getAttribute("name1"); |
| assertEquals("value1", attribute.getValue()); |
| attribute = context.getAttribute("name3"); |
| assertTrue(attribute instanceof ListAttribute); |
| assertTrue(((ListAttribute) attribute).isInherit()); |
| } |
| } |