BasicAttributeContext implements AttributeContext, Serializable { @Override public boolean equals(Object obj) { BasicAttributeContext bac = (BasicAttributeContext) obj; return nullSafeEquals(templateAttribute, bac.templateAttribute) && nullSafeEquals(preparer, bac.preparer) && nullSafeEquals(attributes, bac.attributes) && nullSafeEquals(cascadedAttributes, bac.cascadedAttributes); } BasicAttributeContext();  BasicAttributeContext(Map<String, Attribute> attributes);  BasicAttributeContext(AttributeContext context);  BasicAttributeContext(BasicAttributeContext context); Attribute getTemplateAttribute(); void setTemplateAttribute(Attribute templateAttribute); String getPreparer(); void setPreparer(String url); void inheritCascadedAttributes(AttributeContext context); void inherit(AttributeContext parent); void inherit(BasicAttributeContext parent); void addAll(Map<String, Attribute> newAttributes); void addMissing(Map<String, Attribute> defaultAttributes); Attribute getAttribute(String name); Attribute getLocalAttribute(String name); Attribute getCascadedAttribute(String name); Set<String> getLocalAttributeNames(); Set<String> getCascadedAttributeNames(); void putAttribute(String name, Attribute value); void putAttribute(String name, Attribute value, boolean cascade); void clear(); @Override boolean equals(Object obj); @Override int hashCode();  }
@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)); }