@Test public void simpleBootstrap() { MockServletContext servletContext = new MockServletContext(); TilesConfigurer tc = new TilesConfigurer(); tc.setDefinitions("/org/springframework/web/servlet/view/tiles3/tiles-definitions.xml"); tc.setCheckRefresh(true); tc.setServletContext(servletContext); tc.afterPropertiesSet(); ApplicationContext tilesContext = ServletUtil.getApplicationContext(servletContext); BasicTilesContainer container = (BasicTilesContainer) TilesAccess.getContainer(tilesContext); Request requestContext = new ServletRequest(container.getApplicationContext(), new MockHttpServletRequest(), new MockHttpServletResponse()); assertNotNull(container.getDefinitionsFactory().getDefinition("test", requestContext)); tc.destroy(); }
} else if (container.isValidDefinition(value, tilesRequest)) { resultMap.put(attributeName, attribute); Definition nestedDefinition = container.getDefinitionsFactory().getDefinition(value, tilesRequest); Assert.isTrue(nestedDefinition != definition, "Circular nested definition: " + value); flattenAttributeMap(container, tilesRequest, resultMap, nestedDefinition);
JstlUtils.exposeLocalizationContext(new RequestContext(request, servletContext)); Definition compositeDefinition = container.getDefinitionsFactory().getDefinition(getUrl(), tilesRequest);
private void flattenAttributeMap(BasicTilesContainer container, TilesRequestContext requestContext, Map resultMap, Definition compositeDefinition) throws Exception { Iterator i = compositeDefinition.getAttributes().keySet().iterator(); while (i.hasNext()) { Object key = i.next(); Attribute attr = (Attribute) compositeDefinition.getAttributes().get(key); Definition nestedDefinition = container.getDefinitionsFactory().getDefinition(attr.getValue().toString(), requestContext); resultMap.put(key, attr); if (nestedDefinition != null) { flattenAttributeMap(container, requestContext, resultMap, nestedDefinition); } } } }
/** * Reloads the definitions factory content, if necessary. * * @param context The context object to use * @throws org.apache.tiles.definition.DefinitionsFactoryException If * something goes wrong during reload. * @deprecated Let the definitions DAO manage auto-reload. */ @Deprecated public static void reloadDefinitionsFactory(Object context) { TilesContainer container = TilesAccess.getContainer(context); if (container instanceof BasicTilesContainer) { BasicTilesContainer basic = (BasicTilesContainer) container; DefinitionsFactory factory = basic.getDefinitionsFactory(); if (factory instanceof Refreshable) { Refreshable rFactory = (Refreshable) factory; if (rFactory.refreshRequired()) { rFactory.refresh(); } } } } }
} else if (container.isValidDefinition(value, new Object[] { request, response })) { resultMap.put(attributeName, attribute); Definition nestedDefinition = container.getDefinitionsFactory().getDefinition(value, requestContext); Assert.isTrue(nestedDefinition != compositeDefinition, "Circular nested definition: " + value); flattenAttributeMap(container, requestContext, resultMap, nestedDefinition, request, response);
} else if (container.isValidDefinition(value, tilesRequest)) { resultMap.put(attributeName, attribute); Definition nestedDefinition = container.getDefinitionsFactory().getDefinition(value, tilesRequest); Assert.isTrue(nestedDefinition != definition, "Circular nested definition: " + value); flattenAttributeMap(container, tilesRequest, resultMap, nestedDefinition);
} else if (container.isValidDefinition(value, tilesRequest)) { resultMap.put(attributeName, attribute); Definition nestedDefinition = container.getDefinitionsFactory().getDefinition(value, tilesRequest); Assert.isTrue(nestedDefinition != definition, "Circular nested definition: " + value); flattenAttributeMap(container, tilesRequest, resultMap, nestedDefinition);
final Definition nestedDefinition = container.getDefinitionsFactory().getDefinition(value, requestContext); flattenAttributeMap(container, requestContext, resultMap, nestedDefinition, request, response);
final Definition nestedDefinition = container.getDefinitionsFactory().getDefinition(value, requestContext); flattenAttributeMap(container, requestContext, resultMap, nestedDefinition, request, response);
final Definition nestedDefinition = container.getDefinitionsFactory().getDefinition(value, requestContext); flattenAttributeMap(container, requestContext, resultMap, nestedDefinition, request, response);
Definition compositeDefinition = container.getDefinitionsFactory().getDefinition(getUrl(), tilesRequestContext); Map flattenedAttributeMap = new HashMap();
@Override public boolean checkResource(final Locale locale) throws Exception { TilesContainer container = ServletUtil.getContainer(getServletContext()); if (!(container instanceof BasicTilesContainer)) { // Cannot check properly - let's assume it's there. return true; } BasicTilesContainer basicContainer = (BasicTilesContainer) container; TilesApplicationContext appContext = new ServletTilesApplicationContext(getServletContext()); TilesRequestContext requestContext = new ServletTilesRequestContext(appContext, null, null) { @Override public Locale getRequestLocale() { return locale; } }; return (basicContainer.getDefinitionsFactory().getDefinition(getUrl(), requestContext) != null); }
/** * Creates and exposes a TilesContainer for this web application, * delegating to the TilesInitializer. * @throws TilesException in case of setup failure * @see #createTilesInitializer() */ @Override public void afterPropertiesSet() throws TilesException { WildcardServletApplicationContext preliminaryContext = new WildcardServletApplicationContext(this.servletContext); if (this.tilesInitializer == null) { this.tilesInitializer = new SpringTilesInitializer(); } this.tilesInitializer.initialize(preliminaryContext); if (this.completeAutoload) { // We need to do this after initialization simply because we're reusing the // original CompleteAutoloadTilesInitializer above. We cannot subclass // CompleteAutoloadTilesInitializer when compiling against Tiles 2.1... logger.debug("Registering Tiles 3.0 SpringLocaleResolver for complete-autoload setup"); BasicTilesContainer container = (BasicTilesContainer) TilesAccess.getContainer(preliminaryContext); BeanWrapper bw = PropertyAccessorFactory.forBeanPropertyAccess(container.getDefinitionsFactory()); if (bw.isWritableProperty("localeResolver")) { bw.setPropertyValue("localeResolver", new SpringLocaleResolver()); } } }
public void testFlattenAttributeMap() throws Exception { ApplicationContext tilesAppContext = new WildcardServletApplicationContext(servletContext); Request tilesRequest = new ServletRequest(tilesAppContext, request, response); BasicTilesContainer container = (BasicTilesContainer) TilesAccess.getContainer(tilesAppContext); Definition compositeDefinition = container.getDefinitionsFactory().getDefinition("search", tilesRequest); Map<String, Attribute> resultMap = new HashMap<>(); ajaxTilesView.flattenAttributeMap(container, tilesRequest, resultMap, compositeDefinition); assertNotNull(resultMap.get("body")); assertNotNull(resultMap.get("searchForm")); assertEquals("/WEB-INF/searchForm.jsp", resultMap.get("searchForm").toString()); assertNotNull(resultMap.get("searchResults")); }
container.getDefinitionsFactory().getDefinition(getTemplateName(),tilesRequestContext);
JstlUtils.exposeLocalizationContext(new RequestContext(request, servletContext)); Definition compositeDefinition = container.getDefinitionsFactory().getDefinition(getUrl(), tilesRequest);
Definition compositeDefinition = container.getDefinitionsFactory().getDefinition(getUrl(), tilesRequestContext);
JstlUtils.exposeLocalizationContext(new RequestContext(request, servletContext)); Definition compositeDefinition = container.getDefinitionsFactory().getDefinition(getUrl(), tilesRequest);
public void testRenderFragment_InheritCascadedAttribute() throws Exception { ApplicationContext tilesAppContext = new WildcardServletApplicationContext(servletContext); Request tilesRequest = new ServletRequest(tilesAppContext, request, response); BasicTilesContainer container = (BasicTilesContainer) TilesAccess.getContainer(tilesAppContext); Definition definition = container.getDefinitionsFactory().getDefinition("search.body", tilesRequest); definition.setPreparer(AttributeTestingPreparer.class.getName()); setupStaticWebApplicationContext(); request.addHeader("Accept", DefaultAjaxHandler.AJAX_ACCEPT_CONTENT_TYPE); request.addParameter("fragments", "body"); ajaxTilesView.setUrl("search"); ajaxTilesView.afterPropertiesSet(); ajaxTilesView.renderMergedOutputModel(new HashMap<>(), request, response); assertTrue(AttributeTestingPreparer.invoked); }