提交 27f58db3 编写于 作者: R Rossen Stoyanchev

Polish ViewResolversBeanDefinitionParser

上级 d293889b
...@@ -70,10 +70,6 @@ public class ViewResolversBeanDefinitionParser implements BeanDefinitionParser { ...@@ -70,10 +70,6 @@ public class ViewResolversBeanDefinitionParser implements BeanDefinitionParser {
Object source = context.extractSource(element); Object source = context.extractSource(element);
context.pushContainingComponent(new CompositeComponentDefinition(element.getTagName(), source)); context.pushContainingComponent(new CompositeComponentDefinition(element.getTagName(), source));
RootBeanDefinition compositeResolverBeanDef = new RootBeanDefinition(ViewResolverComposite.class);
compositeResolverBeanDef.setSource(source);
compositeResolverBeanDef.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
ManagedList<Object> resolvers = new ManagedList<Object>(4); ManagedList<Object> resolvers = new ManagedList<Object>(4);
resolvers.setSource(context.extractSource(element)); resolvers.setSource(context.extractSource(element));
String[] names = new String[] {"jsp", "tiles", "bean-name", "freemarker", "velocity", "groovy", "bean", "ref"}; String[] names = new String[] {"jsp", "tiles", "bean-name", "freemarker", "velocity", "groovy", "bean", "ref"};
...@@ -122,13 +118,19 @@ public class ViewResolversBeanDefinitionParser implements BeanDefinitionParser { ...@@ -122,13 +118,19 @@ public class ViewResolversBeanDefinitionParser implements BeanDefinitionParser {
resolvers.add(resolverBeanDef); resolvers.add(resolverBeanDef);
} }
List<Element> elementList = DomUtils.getChildElementsByTagName(element, new String[] {"content-negotiation"}); String beanName = VIEW_RESOLVER_BEAN_NAME;
if (elementList.isEmpty()) { RootBeanDefinition compositeResolverBeanDef = new RootBeanDefinition(ViewResolverComposite.class);
compositeResolverBeanDef.setSource(source);
compositeResolverBeanDef.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
names = new String[] {"content-negotiation"};
List<Element> contentnNegotiationElements = DomUtils.getChildElementsByTagName(element, names);
if (contentnNegotiationElements.isEmpty()) {
compositeResolverBeanDef.getPropertyValues().add("order", 0); compositeResolverBeanDef.getPropertyValues().add("order", 0);
compositeResolverBeanDef.getPropertyValues().add("viewResolvers", resolvers); compositeResolverBeanDef.getPropertyValues().add("viewResolvers", resolvers);
} }
else if (elementList.size() == 1) { else if (contentnNegotiationElements.size() == 1) {
BeanDefinition beanDef = createContentNegotiatingViewResolver(elementList.get(0), context); BeanDefinition beanDef = createContentNegotiatingViewResolver(contentnNegotiationElements.get(0), context);
beanDef.getPropertyValues().add("viewResolvers", resolvers); beanDef.getPropertyValues().add("viewResolvers", resolvers);
ManagedList<Object> list = new ManagedList<Object>(1); ManagedList<Object> list = new ManagedList<Object>(1);
list.add(beanDef); list.add(beanDef);
...@@ -136,14 +138,12 @@ public class ViewResolversBeanDefinitionParser implements BeanDefinitionParser { ...@@ -136,14 +138,12 @@ public class ViewResolversBeanDefinitionParser implements BeanDefinitionParser {
compositeResolverBeanDef.getPropertyValues().add("order", Ordered.HIGHEST_PRECEDENCE); compositeResolverBeanDef.getPropertyValues().add("order", Ordered.HIGHEST_PRECEDENCE);
compositeResolverBeanDef.getPropertyValues().add("viewResolvers", list); compositeResolverBeanDef.getPropertyValues().add("viewResolvers", list);
} }
else if (elementList.size() > 1) { else if (contentnNegotiationElements.size() > 1) {
throw new IllegalArgumentException("Only one <content-negotiation> element is allowed."); throw new IllegalArgumentException("Only one <content-negotiation> element is allowed.");
} }
String beanName = VIEW_RESOLVER_BEAN_NAME;
context.getReaderContext().getRegistry().registerBeanDefinition(beanName, compositeResolverBeanDef); context.getReaderContext().getRegistry().registerBeanDefinition(beanName, compositeResolverBeanDef);
context.registerComponent(new BeanComponentDefinition(compositeResolverBeanDef, beanName)); context.registerComponent(new BeanComponentDefinition(compositeResolverBeanDef, beanName));
context.popAndRegisterContainingComponent(); context.popAndRegisterContainingComponent();
return null; return null;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册