class 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;
    }

}