VelocityStyleTilesTool extends ContextHolder { public VelocityStyleTilesTool endAttributeContext() { Request velocityRequest = createVelocityRequest(getServletContext(), null); TilesContainer container = TilesAccess .getCurrentContainer(velocityRequest); container.endContext(velocityRequest); return this; }  Attribute get(String key); Attribute createAttribute(); Attribute clone(Attribute attribute); Attribute createTemplateAttribute(String template); Renderable render(final Attribute attribute); Renderable renderDefinition(final String definitionName); Renderable renderAttributeContext(); AttributeContext startAttributeContext(); VelocityStyleTilesTool endAttributeContext(); AttributeContext getAttributeContext(); VelocityStyleTilesTool setCurrentContainer(String containerKey); @Override String toString();  }
@Test public void testEndAttributeContext() { TilesContainer container = createMock(TilesContainer.class); AttributeContext attributeContext = createMock(AttributeContext.class); ApplicationContext applicationContext = createMock(ApplicationContext.class); Map<String, Object> requestScope = new HashMap<String, Object>(); Map<String, Object> applicationScope = new HashMap<String, Object>(); requestScope.put(TilesAccess.CURRENT_CONTAINER_ATTRIBUTE_NAME, container); expect(request.getAttribute(TilesAccess.CURRENT_CONTAINER_ATTRIBUTE_NAME)).andReturn(container); expect(applicationContext.getApplicationScope()).andReturn(applicationScope).anyTimes(); expect(servletContext.getAttribute(ApplicationAccess .APPLICATION_CONTEXT_ATTRIBUTE)).andReturn(applicationContext) .anyTimes(); container.endContext(isA(VelocityRequest.class)); replay(velocityContext, request, response, servletContext, container, attributeContext, applicationContext); initializeTool(); tool.endAttributeContext(); verify(velocityContext, request, response, servletContext, container, attributeContext, applicationContext); }