Commit fa65326b3320cf00f311fc39ed0898016516f47f

updated to latest SPR snapshot
src/main/java/com/springsource/greenhouse/config/mvc/AnnotatedControllerConfig.java
(16 / 65)
  
2121import javax.inject.Inject;
2222
2323import org.joda.time.DateTimeZone;
24import org.springframework.beans.factory.config.ConfigurableBeanFactory;
2524import org.springframework.context.annotation.Bean;
2625import org.springframework.context.annotation.Configuration;
2726import org.springframework.context.support.ReloadableResourceBundleMessageSource;
4242import org.springframework.web.context.ConfigurableWebApplicationContext;
4343import org.springframework.web.context.request.NativeWebRequest;
4444import org.springframework.web.context.request.WebRequest;
45import org.springframework.web.method.annotation.support.ErrorsMethodArgumentResolver;
46import org.springframework.web.method.annotation.support.ExpressionValueMethodArgumentResolver;
47import org.springframework.web.method.annotation.support.ModelMethodProcessor;
48import org.springframework.web.method.annotation.support.RequestHeaderMapMethodArgumentResolver;
49import org.springframework.web.method.annotation.support.RequestHeaderMethodArgumentResolver;
50import org.springframework.web.method.annotation.support.RequestParamMapMethodArgumentResolver;
51import org.springframework.web.method.annotation.support.RequestParamMethodArgumentResolver;
5245import org.springframework.web.method.support.HandlerMethodArgumentResolver;
5346import org.springframework.web.method.support.ModelAndViewContainer;
47import org.springframework.web.servlet.HandlerInterceptor;
5448import org.springframework.web.servlet.HandlerMapping;
5549import org.springframework.web.servlet.handler.ConversionServiceExposingInterceptor;
56import org.springframework.web.servlet.handler.MappedInterceptor;
5750import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMethodAdapter;
5851import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMethodMapping;
59import org.springframework.web.servlet.mvc.method.annotation.support.HttpEntityMethodProcessor;
60import org.springframework.web.servlet.mvc.method.annotation.support.PathVariableMethodArgumentResolver;
61import org.springframework.web.servlet.mvc.method.annotation.support.RequestResponseBodyMethodProcessor;
62import org.springframework.web.servlet.mvc.method.annotation.support.ServletCookieValueMethodArgumentResolver;
63import org.springframework.web.servlet.mvc.method.annotation.support.ServletModelAttributeMethodProcessor;
64import org.springframework.web.servlet.mvc.method.annotation.support.ServletRequestMethodArgumentResolver;
65import org.springframework.web.servlet.mvc.method.annotation.support.ServletResponseMethodArgumentResolver;
6652
6753import com.springsource.greenhouse.account.Account;
6854import com.springsource.greenhouse.home.DateTimeZoneHandlerInterceptor;
6565 @Bean
6666 public HandlerMapping annotatedControllerMapping() {
6767 RequestMappingHandlerMethodMapping handlerMapping = new RequestMappingHandlerMethodMapping();
68 handlerMapping.setMappedInterceptors(mappedInterceptors());
68 handlerMapping.setInterceptors(interceptors());
6969 handlerMapping.setOrder(1);
7070 return handlerMapping;
7171 }
8080 handlerAdapter.setWebBindingInitializer(bindingInitializer);
8181
8282 handlerAdapter.setMessageConverters(messageConverters());
83 handlerAdapter.setHandlerMethodArgumentResolvers(handlerMethodArgumentResolvers());
83 handlerAdapter.setCustomArgumentResolvers(customArgumentResolvers());
8484 return handlerAdapter;
8585 }
8686
102102
103103 // subclassing hooks
104104
105 protected HttpMessageConverter<?>[] messageConverters() {
105 protected List<HttpMessageConverter<?>> messageConverters() {
106106 List<HttpMessageConverter<?>> converters = new ArrayList<HttpMessageConverter<?>>(1);
107107 converters.add(new MappingJacksonHttpMessageConverter());
108 return converters.toArray(new HttpMessageConverter<?>[converters.size()]);
108 return converters;
109109 }
110110
111 protected HandlerMethodArgumentResolver[] handlerMethodArgumentResolvers() {
111 protected List<HandlerMethodArgumentResolver> customArgumentResolvers() {
112112 List<HandlerMethodArgumentResolver> argumentResolvers = new ArrayList<HandlerMethodArgumentResolver>();
113 addCustomHandlerMethodResolvers(argumentResolvers);
114 addStandardHandlerMethodResolvers(argumentResolvers);
115 return argumentResolvers.toArray(new HandlerMethodArgumentResolver[argumentResolvers.size()]);
116 }
117
118 protected void addCustomHandlerMethodResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
119113 argumentResolvers.add(new AccountHandlerMethodArgumentResolver());
120114 argumentResolvers.add(new DateTimeZoneHandlerMethodArgumentResolver());
121115 argumentResolvers.add(new LocationHandlerMethodArgumentResolver());
122 argumentResolvers.add(new FacebookHandlerMethodArgumentResolver(getEnvironment().getProperty("facebook.appId"),
123 getEnvironment().getProperty("facebook.appSecret")));
116 argumentResolvers.add(new FacebookHandlerMethodArgumentResolver(getEnvironment().getProperty("facebook.appId"), getEnvironment().getProperty("facebook.appSecret")));
124117 argumentResolvers.add(new DeviceHandlerMethodArgumentResolver());
118 return argumentResolvers;
125119 }
126
120
127121 // internal helpers
128122
129 private MappedInterceptor[] mappedInterceptors() {
130 return new MappedInterceptor[] {
131 new MappedInterceptor(null, new ConversionServiceExposingInterceptor(conversionService())),
132 new MappedInterceptor(null, new AccountExposingHandlerInterceptor()),
133 new MappedInterceptor(null, new DateTimeZoneHandlerInterceptor()),
134 new MappedInterceptor(null, new UserLocationHandlerInterceptor()),
135 new MappedInterceptor(null, new DeviceResolverHandlerInterceptor())
123 private HandlerInterceptor[] interceptors() {
124 return new HandlerInterceptor[] {
125 new ConversionServiceExposingInterceptor(conversionService()),
126 new AccountExposingHandlerInterceptor(),
127 new DateTimeZoneHandlerInterceptor(),
128 new UserLocationHandlerInterceptor(),
129 new DeviceResolverHandlerInterceptor()
136130 };
137131 }
138
139 private void addStandardHandlerMethodResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
140 // Annotation-based resolvers
141 argumentResolvers.add(new RequestParamMethodArgumentResolver(getBeanFactory(), false));
142 argumentResolvers.add(new RequestParamMapMethodArgumentResolver());
143 argumentResolvers.add(new PathVariableMethodArgumentResolver(getBeanFactory()));
144 argumentResolvers.add(new ServletModelAttributeMethodProcessor(false));
145 argumentResolvers.add(new RequestResponseBodyMethodProcessor(messageConverters()));
146 argumentResolvers.add(new RequestHeaderMethodArgumentResolver(getBeanFactory()));
147 argumentResolvers.add(new RequestHeaderMapMethodArgumentResolver());
148 argumentResolvers.add(new ServletCookieValueMethodArgumentResolver(getBeanFactory()));
149 argumentResolvers.add(new ExpressionValueMethodArgumentResolver(getBeanFactory()));
150132
151 // Type-based resolvers
152 argumentResolvers.add(new ServletRequestMethodArgumentResolver());
153 argumentResolvers.add(new ServletResponseMethodArgumentResolver());
154 argumentResolvers.add(new HttpEntityMethodProcessor(messageConverters()));
155 argumentResolvers.add(new ModelMethodProcessor());
156 argumentResolvers.add(new ErrorsMethodArgumentResolver());
157
158 // Default-mode resolution
159 argumentResolvers.add(new RequestParamMethodArgumentResolver(getBeanFactory(), true));
160 argumentResolvers.add(new ServletModelAttributeMethodProcessor(true));
161 }
162
163 private ConfigurableBeanFactory getBeanFactory() {
164 return context.getBeanFactory();
165 }
166
167133 private Environment getEnvironment() {
168134 return context.getEnvironment();
169135 }

Comments

Add a new comment:

Login or create an account to post a comment

Add your comment