package org.springframework.web.servlet.config;
import junit.framework.TestCase;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.support.RootBeanDefinition;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.view.BeanNameViewResolver;
import org.springframework.web.servlet.view.InternalResourceView;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView;
import org.springframework.web.servlet.view.tiles.TilesJstlView;
public class ViewResolversBeanDefinitionParserTests extends TestCase {
public void testParserWithTwoResolversAndDefaults() {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
"org/springframework/web/servlet/config/viewResolvers-defaults.xml");
ConfigurableListableBeanFactory bf =
(ConfigurableListableBeanFactory)context.getAutowireCapableBeanFactory();
String[] vrNames = bf.getBeanNamesForType(ViewResolver.class);
assertEquals(2, vrNames.length);
// test bean name view resolver
RootBeanDefinition definition = (RootBeanDefinition)bf.getBeanDefinition(vrNames[0]);
assertEquals(BeanNameViewResolver.class, definition.getBeanClass());
assertPropertyValue(new Integer(0), definition, "order");
// test internal resource view resolver with attributes set
definition = (RootBeanDefinition)bf.getBeanDefinition(vrNames[1]);
assertEquals(InternalResourceViewResolver.class, definition.getBeanClass());
assertPropertyValue(InternalResourceView.class, definition, "viewClass");
assertPropertyValue("/WEB-INF/jsp/", definition, "prefix");
assertPropertyValue(".jsp", definition, "suffix");
assertPropertyValue("true", definition, "cache");
assertPropertyValue("true", definition, "redirectHttp10Compatible");
assertPropertyValue("true", definition, "redirectContextRelative");
assertNull(definition.getPropertyValues().getPropertyValue("content-type"));
assertNull(definition.getPropertyValues().getPropertyValue("requestContextAttribute"));
}
public void testParserWithOneResolversAndAttributes() {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
"org/springframework/web/servlet/config/viewResolvers-attributes.xml");
ConfigurableListableBeanFactory bf =
(ConfigurableListableBeanFactory)context.getAutowireCapableBeanFactory();
String[] vrNames = bf.getBeanNamesForType(ViewResolver.class);
assertEquals(1, vrNames.length);
RootBeanDefinition definition = (RootBeanDefinition)bf.getBeanDefinition(vrNames[0]);
assertEquals(InternalResourceViewResolver.class, definition.getBeanClass());
assertPropertyValue(TilesJstlView.class, definition, "viewClass");
assertPropertyValue("false", definition, "cache");
assertPropertyValue("/WEB-INF/jsp/", definition, "prefix");
assertPropertyValue(".jsp", definition, "suffix");
assertPropertyValue("false", definition, "redirectHttp10Compatible");
assertPropertyValue("false", definition, "redirectContextRelative");
assertPropertyValue("text/html", definition, "contentType");
assertPropertyValue("requestContext", definition, "requestContextAttribute");
}
private void assertPropertyValue(Object assertionValue, RootBeanDefinition definition, String property) {
assertNotNull(definition.getPropertyValues().getPropertyValue(property));
assertEquals(assertionValue, definition.getPropertyValues().getPropertyValue(property).getValue());
}
}