|
16 | 16 |
|
17 | 17 | package org.springframework.web.servlet.config;
|
18 | 18 |
|
19 |
| -import java.util.List; |
20 |
| - |
21 | 19 | import org.springframework.beans.factory.config.BeanDefinition;
|
22 | 20 | import org.springframework.beans.factory.config.RuntimeBeanReference;
|
23 | 21 | import org.springframework.beans.factory.parsing.BeanComponentDefinition;
|
24 | 22 | import org.springframework.beans.factory.parsing.CompositeComponentDefinition;
|
25 |
| -import org.springframework.beans.factory.support.ManagedList; |
26 | 23 | import org.springframework.beans.factory.support.RootBeanDefinition;
|
27 | 24 | import org.springframework.beans.factory.xml.BeanDefinitionParser;
|
28 | 25 | import org.springframework.beans.factory.xml.ParserContext;
|
29 | 26 | import org.springframework.core.convert.ConversionService;
|
30 | 27 | import org.springframework.format.support.FormattingConversionServiceFactoryBean;
|
31 | 28 | import org.springframework.util.ClassUtils;
|
32 |
| -import org.springframework.util.xml.DomUtils; |
33 | 29 | import org.springframework.validation.Validator;
|
34 | 30 | import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean;
|
35 | 31 | import org.springframework.web.bind.support.ConfigurableWebBindingInitializer;
|
|
56 | 52 | * @author Juergen Hoeller
|
57 | 53 | * @since 3.0
|
58 | 54 | */
|
59 |
| -class AnnotationDrivenBeanDefinitionParser implements BeanDefinitionParser { |
| 55 | +public class AnnotationDrivenBeanDefinitionParser implements BeanDefinitionParser { |
60 | 56 |
|
61 | 57 | private static final boolean jsr303Present = ClassUtils.isPresent(
|
62 |
| - "javax.validation.Validator", AnnotationDrivenBeanDefinitionParser.class.getClassLoader()); |
| 58 | + "javax.validation.Validator", InterceptorsBeanDefinitionParser.class.getClassLoader()); |
63 | 59 |
|
64 | 60 |
|
65 | 61 | public BeanDefinition parse(Element element, ParserContext parserContext) {
|
66 | 62 | Object source = parserContext.extractSource(element);
|
67 | 63 |
|
68 |
| - RootBeanDefinition mappingDef = new RootBeanDefinition(DefaultAnnotationHandlerMapping.class); |
69 |
| - mappingDef.setSource(source); |
70 |
| - mappingDef.getPropertyValues().add("order", 0); |
71 |
| - String mappingName = parserContext.getReaderContext().registerWithGeneratedName(mappingDef); |
| 64 | + RootBeanDefinition annMappingDef = new RootBeanDefinition(DefaultAnnotationHandlerMapping.class); |
| 65 | + annMappingDef.setSource(source); |
| 66 | + annMappingDef.getPropertyValues().add("order", 0); |
| 67 | + String annMappingName = parserContext.getReaderContext().registerWithGeneratedName(annMappingDef); |
72 | 68 |
|
73 |
| - Element interceptors = DomUtils.getChildElementByTagName(element, "interceptors"); |
74 |
| - if (interceptors != null) { |
75 |
| - List<Element> beans = DomUtils.getChildElementsByTagName(interceptors, "bean"); |
76 |
| - List<BeanDefinition> interceptorBeans = new ManagedList<BeanDefinition>(beans.size()); |
77 |
| - for (Element bean : beans) { |
78 |
| - interceptorBeans.add(parserContext.getDelegate().parseBeanDefinitionElement(bean).getBeanDefinition()); |
79 |
| - } |
80 |
| - mappingDef.getPropertyValues().add("interceptors", interceptorBeans); |
81 |
| - } |
82 |
| - |
83 | 69 | RootBeanDefinition bindingDef = new RootBeanDefinition(ConfigurableWebBindingInitializer.class);
|
84 | 70 | bindingDef.setSource(source);
|
85 | 71 | bindingDef.getPropertyValues().add("conversionService", getConversionService(element, source, parserContext));
|
86 | 72 | bindingDef.getPropertyValues().add("validator", getValidator(element, source, parserContext));
|
87 | 73 |
|
88 |
| - RootBeanDefinition adapterDef = new RootBeanDefinition(AnnotationMethodHandlerAdapter.class); |
89 |
| - adapterDef.setSource(source); |
90 |
| - adapterDef.getPropertyValues().add("webBindingInitializer", bindingDef); |
91 |
| - String adapterName = parserContext.getReaderContext().registerWithGeneratedName(adapterDef); |
| 74 | + RootBeanDefinition annAdapterDef = new RootBeanDefinition(AnnotationMethodHandlerAdapter.class); |
| 75 | + annAdapterDef.setSource(source); |
| 76 | + annAdapterDef.getPropertyValues().add("webBindingInitializer", bindingDef); |
| 77 | + String adapterName = parserContext.getReaderContext().registerWithGeneratedName(annAdapterDef); |
92 | 78 |
|
93 | 79 | CompositeComponentDefinition compDefinition = new CompositeComponentDefinition(element.getTagName(), source);
|
94 | 80 | parserContext.pushContainingComponent(compDefinition);
|
95 |
| - parserContext.registerComponent(new BeanComponentDefinition(mappingDef, mappingName)); |
96 |
| - parserContext.registerComponent(new BeanComponentDefinition(adapterDef, adapterName)); |
| 81 | + parserContext.registerComponent(new BeanComponentDefinition(annMappingDef, annMappingName)); |
| 82 | + parserContext.registerComponent(new BeanComponentDefinition(annAdapterDef, adapterName)); |
97 | 83 | parserContext.popAndRegisterContainingComponent();
|
98 | 84 |
|
99 | 85 | return null;
|
|
0 commit comments