@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(); }
/** * Initializes a definitions factory. * * @param definitionsFactory The factory to initialize. * @param resourceString The string containing a comma-separated-list of * resources. * @param initParameters A map containing the initialization parameters. * @throws DefinitionsFactoryException If something goes wrong. * @deprecated Do not use, the Definitions Factory should be initialized by * the Tiles Container Factory. */ @Deprecated protected void initializeDefinitionsFactory( DefinitionsFactory definitionsFactory, String resourceString, Map<String, String> initParameters) { if (rendererFactory == null) { throw new IllegalStateException("No RendererFactory found"); } definitionsFactory.init(initParameters); if (log.isInfoEnabled()) { log.info("Tiles2 container initialization complete."); } }
defsFactory.init(initParams); ((KeyedDefinitionsFactoryTilesContainer) container) .setDefinitionsFactory(keys[i], defsFactory);
} 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);
/** * After the creation of the elements, it is possible to do other operations that * will be done after the creation and before the assignment to the container. * * @param contextFactory The Tiles context factory. * @param tilesContext The Tiles application context. * @param rendererFactory The renderer factory. * @param evaluator The attribute evaluator. * @param initParameters The initialization parameters. * @param configuration The merged configuration parameters (both defaults * and context ones). * @param container The container to use. * @since 2.1.1 */ protected void postCreationOperations(TilesRequestContextFactory contextFactory, TilesApplicationContext tilesContext, RendererFactory rendererFactory, AttributeEvaluator evaluator, Map<String, String> initParameters, Map<String, String> configuration, BasicTilesContainer container) { DefinitionsFactory defsFactory = (DefinitionsFactory) createFactory(configuration, DEFINITIONS_FACTORY_INIT_PARAM); if (defsFactory instanceof TilesApplicationContextAware) { ((TilesApplicationContextAware) defsFactory) .setApplicationContext(tilesContext); } defsFactory.init(configuration); container.setDefinitionsFactory(defsFactory); }
/** {@inheritDoc} */ @Override public Definition getDefinition(String definitionName, Request request) { Definition definition = definitionsFactory.getDefinition(definitionName, request); return definition; }
JstlUtils.exposeLocalizationContext(new RequestContext(request, servletContext)); Definition compositeDefinition = container.getDefinitionsFactory().getDefinition(getUrl(), tilesRequest);
/** * Returns a definition specifying its name. * * @param definitionName The name of the definition to find. * @param request The request context. * @return The definition, if found. * @throws DefinitionsFactoryException If the definitions factory throws an * exception. */ protected Definition getDefinition(String definitionName, TilesRequestContext request) { Definition definition = definitionsFactory.getDefinition(definitionName, request); return definition; }
/** * Returns a definition by name. * * @param definition The name of the definition. * @param request The current request. * @return The requested definition, either main or custom. * @throws org.apache.tiles.definition.DefinitionsFactoryException If * something goes wrong when obtaining a main definition. */ public Definition getDefinition(String definition, TilesRequestContext request) { Map<String, Definition> definitions = getDefinitions(request); if (definitions != null && definitions.containsKey(definition)) { return definitions.get(definition); } return getFactory().getDefinition(definition, request); }
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); } } } }
/** {@inheritDoc} */ @Override protected Definition getDefinition(String definitionName, TilesRequestContext request) { Definition retValue = null; String key = getDefinitionsFactoryKey(request); if (key != null) { DefinitionsFactory definitionsFactory = key2definitionsFactory.get(key); if (definitionsFactory != null) { retValue = definitionsFactory.getDefinition(definitionName, request); } } if (retValue == null) { retValue = super.getDefinition(definitionName, request); } return retValue; }
} 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); }
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")); }