From 6aa9e0caf984ec99a4d1bc276f116ebd62eff311 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Tue, 25 Aug 2015 18:10:27 +0200 Subject: [PATCH] mvc:tiles-configurer supports preparer-factory and definitions-factory Issue: SPR-13363 --- .../TilesConfigurerBeanDefinitionParser.java | 16 ++++--- .../web/servlet/config/spring-mvc-4.2.xsd | 16 +++++++ .../web/servlet/config/MvcNamespaceTests.java | 4 ++ .../config/mvc-config-view-resolution.xml | 43 ++++++++++--------- 4 files changed, 51 insertions(+), 28 deletions(-) diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/TilesConfigurerBeanDefinitionParser.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/TilesConfigurerBeanDefinitionParser.java index 4baf6f69641..3b6079930a4 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/TilesConfigurerBeanDefinitionParser.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/TilesConfigurerBeanDefinitionParser.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2014 the original author or authors. + * Copyright 2002-2015 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -29,9 +29,10 @@ import org.springframework.util.xml.DomUtils; /** * Parse the MVC namespace element and register - * TilesConfigurer bean + * a corresponding TilesConfigurer bean. * @author Rossen Stoyanchev + * @author Juergen Hoeller * @since 4.1 */ public class TilesConfigurerBeanDefinitionParser extends AbstractSingleBeanDefinitionParser { @@ -49,11 +50,6 @@ public class TilesConfigurerBeanDefinitionParser extends AbstractSingleBeanDefin return BEAN_NAME; } - @Override - protected boolean shouldGenerateId() { - return super.shouldGenerateId(); - } - @Override protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) { List childElements = DomUtils.getChildElementsByTagName(element, "definitions"); @@ -70,6 +66,12 @@ public class TilesConfigurerBeanDefinitionParser extends AbstractSingleBeanDefin if (element.hasAttribute("validate-definitions")) { builder.addPropertyValue("validateDefinitions", element.getAttribute("validate-definitions")); } + if (element.hasAttribute("definitions-factory")) { + builder.addPropertyValue("definitionsFactoryClass", element.getAttribute("definitions-factory")); + } + if (element.hasAttribute("preparer-factory")) { + builder.addPropertyValue("preparerFactoryClass", element.getAttribute("preparer-factory")); + } } } diff --git a/spring-webmvc/src/main/resources/org/springframework/web/servlet/config/spring-mvc-4.2.xsd b/spring-webmvc/src/main/resources/org/springframework/web/servlet/config/spring-mvc-4.2.xsd index 80226cdbd83..0b67e835e0e 100644 --- a/spring-webmvc/src/main/resources/org/springframework/web/servlet/config/spring-mvc-4.2.xsd +++ b/spring-webmvc/src/main/resources/org/springframework/web/servlet/config/spring-mvc-4.2.xsd @@ -1128,6 +1128,22 @@ ]]> + + + + + + + + + + diff --git a/spring-webmvc/src/test/java/org/springframework/web/servlet/config/MvcNamespaceTests.java b/spring-webmvc/src/test/java/org/springframework/web/servlet/config/MvcNamespaceTests.java index 6e790cda81d..1982cee5e7f 100644 --- a/spring-webmvc/src/test/java/org/springframework/web/servlet/config/MvcNamespaceTests.java +++ b/spring-webmvc/src/test/java/org/springframework/web/servlet/config/MvcNamespaceTests.java @@ -38,6 +38,7 @@ import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.MapperFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.dataformat.xml.XmlMapper; +import org.apache.tiles.definition.UnresolvingLocaleDefinitionsFactory; import org.hamcrest.Matchers; import org.joda.time.LocalDate; import org.junit.Before; @@ -136,6 +137,7 @@ import org.springframework.web.servlet.view.groovy.GroovyMarkupConfigurer; import org.springframework.web.servlet.view.groovy.GroovyMarkupViewResolver; import org.springframework.web.servlet.view.script.ScriptTemplateConfigurer; import org.springframework.web.servlet.view.script.ScriptTemplateViewResolver; +import org.springframework.web.servlet.view.tiles3.SpringBeanPreparerFactory; import org.springframework.web.servlet.view.tiles3.TilesConfigurer; import org.springframework.web.servlet.view.tiles3.TilesViewResolver; import org.springframework.web.servlet.view.velocity.VelocityConfigurer; @@ -779,6 +781,8 @@ public class MvcNamespaceTests { accessor = new DirectFieldAccessor(tilesConfigurer); assertArrayEquals(definitions, (String[]) accessor.getPropertyValue("definitions")); assertTrue((boolean) accessor.getPropertyValue("checkRefresh")); + assertEquals(UnresolvingLocaleDefinitionsFactory.class, accessor.getPropertyValue("definitionsFactoryClass")); + assertEquals(SpringBeanPreparerFactory.class, accessor.getPropertyValue("preparerFactoryClass")); FreeMarkerConfigurer freeMarkerConfigurer = appContext.getBean(FreeMarkerConfigurer.class); assertNotNull(freeMarkerConfigurer); diff --git a/spring-webmvc/src/test/resources/org/springframework/web/servlet/config/mvc-config-view-resolution.xml b/spring-webmvc/src/test/resources/org/springframework/web/servlet/config/mvc-config-view-resolution.xml index 2c384c8bb82..3422243a6f4 100644 --- a/spring-webmvc/src/test/resources/org/springframework/web/servlet/config/mvc-config-view-resolution.xml +++ b/spring-webmvc/src/test/resources/org/springframework/web/servlet/config/mvc-config-view-resolution.xml @@ -2,42 +2,43 @@ + xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd + http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> - - - - - - - - - + + + + + + + + + - + - - - + + + - - + + - + - + - +