Commit fa65326b3320cf00f311fc39ed0898016516f47f
- Diff rendering mode:
- inline
- side by side
src/main/java/com/springsource/greenhouse/config/mvc/AnnotatedControllerConfig.java
(16 / 65)
|   | |||
| 21 | 21 | import javax.inject.Inject; | |
| 22 | 22 | ||
| 23 | 23 | import org.joda.time.DateTimeZone; | |
| 24 | import org.springframework.beans.factory.config.ConfigurableBeanFactory; | ||
| 25 | 24 | import org.springframework.context.annotation.Bean; | |
| 26 | 25 | import org.springframework.context.annotation.Configuration; | |
| 27 | 26 | import org.springframework.context.support.ReloadableResourceBundleMessageSource; | |
| … | … | ||
| 42 | 42 | import org.springframework.web.context.ConfigurableWebApplicationContext; | |
| 43 | 43 | import org.springframework.web.context.request.NativeWebRequest; | |
| 44 | 44 | import org.springframework.web.context.request.WebRequest; | |
| 45 | import org.springframework.web.method.annotation.support.ErrorsMethodArgumentResolver; | ||
| 46 | import org.springframework.web.method.annotation.support.ExpressionValueMethodArgumentResolver; | ||
| 47 | import org.springframework.web.method.annotation.support.ModelMethodProcessor; | ||
| 48 | import org.springframework.web.method.annotation.support.RequestHeaderMapMethodArgumentResolver; | ||
| 49 | import org.springframework.web.method.annotation.support.RequestHeaderMethodArgumentResolver; | ||
| 50 | import org.springframework.web.method.annotation.support.RequestParamMapMethodArgumentResolver; | ||
| 51 | import org.springframework.web.method.annotation.support.RequestParamMethodArgumentResolver; | ||
| 52 | 45 | import org.springframework.web.method.support.HandlerMethodArgumentResolver; | |
| 53 | 46 | import org.springframework.web.method.support.ModelAndViewContainer; | |
| 47 | import org.springframework.web.servlet.HandlerInterceptor; | ||
| 54 | 48 | import org.springframework.web.servlet.HandlerMapping; | |
| 55 | 49 | import org.springframework.web.servlet.handler.ConversionServiceExposingInterceptor; | |
| 56 | import org.springframework.web.servlet.handler.MappedInterceptor; | ||
| 57 | 50 | import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMethodAdapter; | |
| 58 | 51 | import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMethodMapping; | |
| 59 | import org.springframework.web.servlet.mvc.method.annotation.support.HttpEntityMethodProcessor; | ||
| 60 | import org.springframework.web.servlet.mvc.method.annotation.support.PathVariableMethodArgumentResolver; | ||
| 61 | import org.springframework.web.servlet.mvc.method.annotation.support.RequestResponseBodyMethodProcessor; | ||
| 62 | import org.springframework.web.servlet.mvc.method.annotation.support.ServletCookieValueMethodArgumentResolver; | ||
| 63 | import org.springframework.web.servlet.mvc.method.annotation.support.ServletModelAttributeMethodProcessor; | ||
| 64 | import org.springframework.web.servlet.mvc.method.annotation.support.ServletRequestMethodArgumentResolver; | ||
| 65 | import org.springframework.web.servlet.mvc.method.annotation.support.ServletResponseMethodArgumentResolver; | ||
| 66 | 52 | ||
| 67 | 53 | import com.springsource.greenhouse.account.Account; | |
| 68 | 54 | import com.springsource.greenhouse.home.DateTimeZoneHandlerInterceptor; | |
| … | … | ||
| 65 | 65 | @Bean | |
| 66 | 66 | public HandlerMapping annotatedControllerMapping() { | |
| 67 | 67 | RequestMappingHandlerMethodMapping handlerMapping = new RequestMappingHandlerMethodMapping(); | |
| 68 | handlerMapping.setMappedInterceptors(mappedInterceptors()); | ||
| 68 | handlerMapping.setInterceptors(interceptors()); | ||
| 69 | 69 | handlerMapping.setOrder(1); | |
| 70 | 70 | return handlerMapping; | |
| 71 | 71 | } | |
| … | … | ||
| 80 | 80 | handlerAdapter.setWebBindingInitializer(bindingInitializer); | |
| 81 | 81 | ||
| 82 | 82 | handlerAdapter.setMessageConverters(messageConverters()); | |
| 83 | handlerAdapter.setHandlerMethodArgumentResolvers(handlerMethodArgumentResolvers()); | ||
| 83 | handlerAdapter.setCustomArgumentResolvers(customArgumentResolvers()); | ||
| 84 | 84 | return handlerAdapter; | |
| 85 | 85 | } | |
| 86 | 86 | ||
| … | … | ||
| 102 | 102 | ||
| 103 | 103 | // subclassing hooks | |
| 104 | 104 | ||
| 105 | protected HttpMessageConverter<?>[] messageConverters() { | ||
| 105 | protected List<HttpMessageConverter<?>> messageConverters() { | ||
| 106 | 106 | List<HttpMessageConverter<?>> converters = new ArrayList<HttpMessageConverter<?>>(1); | |
| 107 | 107 | converters.add(new MappingJacksonHttpMessageConverter()); | |
| 108 | return converters.toArray(new HttpMessageConverter<?>[converters.size()]); | ||
| 108 | return converters; | ||
| 109 | 109 | } | |
| 110 | 110 | ||
| 111 | protected HandlerMethodArgumentResolver[] handlerMethodArgumentResolvers() { | ||
| 111 | protected List<HandlerMethodArgumentResolver> customArgumentResolvers() { | ||
| 112 | 112 | 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) { | ||
| 119 | 113 | argumentResolvers.add(new AccountHandlerMethodArgumentResolver()); | |
| 120 | 114 | argumentResolvers.add(new DateTimeZoneHandlerMethodArgumentResolver()); | |
| 121 | 115 | 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"))); | ||
| 124 | 117 | argumentResolvers.add(new DeviceHandlerMethodArgumentResolver()); | |
| 118 | return argumentResolvers; | ||
| 125 | 119 | } | |
| 126 | |||
| 120 | |||
| 127 | 121 | // internal helpers | |
| 128 | 122 | ||
| 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() | ||
| 136 | 130 | }; | |
| 137 | 131 | } | |
| 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())); | ||
| 150 | 132 | ||
| 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 | |||
| 167 | 133 | private Environment getEnvironment() { | |
| 168 | 134 | return context.getEnvironment(); | |
| 169 | 135 | } |
Comments
Add your comment
Please log in to comment



Add a new comment:
Login or create an account to post a comment