Java tutorial
/* *Copyright 2016 Dominik Szalai (emptulik@gmail.com) * *Licensed under the Apache License, Version 2.0 (the "License"); *you may not use this file except in compliance with the License. *You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * *Unless required by applicable law or agreed to in writing, software *distributed under the License is distributed on an "AS IS" BASIS, *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *See the License for the specific language governing permissions and *limitations under the License. */ /* * Copyright 2016 Dominik Szalai (emptulik@gmail.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package cz.muni.fi.editor.webapp.config; import cz.muni.fi.editor.webapp.formatters.OrganizationFormatter; import cz.muni.fi.editor.webapp.formatters.UserPermissionFormatter; import org.springframework.context.EnvironmentAware; import org.springframework.context.annotation.*; import org.springframework.context.support.ReloadableResourceBundleMessageSource; import org.springframework.core.env.Environment; import org.springframework.format.FormatterRegistry; import org.springframework.security.web.method.annotation.AuthenticationPrincipalArgumentResolver; import org.springframework.validation.Validator; import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean; import org.springframework.web.method.support.HandlerMethodArgumentResolver; import org.springframework.web.multipart.support.StandardServletMultipartResolver; import org.springframework.web.servlet.config.annotation.*; import org.springframework.web.servlet.i18n.CookieLocaleResolver; import org.springframework.web.servlet.i18n.LocaleChangeInterceptor; import java.util.List; import java.util.Locale; /** * Created by Dominik Szalai - emptulik at gmail.com on 8/9/16. */ @Configuration @EnableWebMvc @Import(ViewControllerConfiguration.class) @ComponentScan({ "cz.muni.fi.editor.webapp.controllers", "cz.muni.fi.editor.webapp.formatters", "cz.muni.fi.editor.webapp.forms", }) public class MvcConfiguration extends WebMvcConfigurerAdapter implements EnvironmentAware { private Environment environment; @Override public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { configurer.enable(); } @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/resources/**").addResourceLocations("/resources/") .setCachePeriod(environment.getProperty("web.cache.resources.time", Integer.class)); registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/") .setCachePeriod(environment.getProperty("web.cache.webjars.time", Integer.class)); registry.addResourceHandler("/favicon.ico").addResourceLocations("/resources/favicon/favicon.ico") .setCachePeriod(31556926); } @Override public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) { argumentResolvers.add(authenticationPrincipalArgumentResolver()); } @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(localeChangeInterceptor()); } @Override public void addFormatters(FormatterRegistry registry) { registry.addFormatter(new UserPermissionFormatter()); registry.addFormatter(new OrganizationFormatter()); } @Override public Validator getValidator() { return localValidatorFactoryBean(); } @Bean(name = "multipartResolver") public StandardServletMultipartResolver standardServletMultipartResolver() { return new StandardServletMultipartResolver(); } @Bean(name = "validator") public LocalValidatorFactoryBean localValidatorFactoryBean() { LocalValidatorFactoryBean lvfb = new LocalValidatorFactoryBean(); lvfb.setValidationMessageSource(reloadableResourceBundleMessageSource()); return lvfb; } @Bean(name = "messageSource") @Description("Message source for this context, loaded from localized 'messages_xx' files.") public ReloadableResourceBundleMessageSource reloadableResourceBundleMessageSource() { ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); messageSource.setBasenames("classpath:i18n/messages", "classpath:i18n/validator"); messageSource.setUseCodeAsDefaultMessage(true); return messageSource; } @Bean(name = "localeChangeInterceptor") public LocaleChangeInterceptor localeChangeInterceptor() { LocaleChangeInterceptor localeChangeInterceptor = new LocaleChangeInterceptor(); localeChangeInterceptor.setParamName("lang"); return localeChangeInterceptor; } @Bean(name = "localeResolver") public CookieLocaleResolver cookieLocaleResolver() { CookieLocaleResolver cookieLocaleResolver = new CookieLocaleResolver(); cookieLocaleResolver.setDefaultLocale(Locale.ENGLISH); return cookieLocaleResolver; } @Bean public AuthenticationPrincipalArgumentResolver authenticationPrincipalArgumentResolver() { return new AuthenticationPrincipalArgumentResolver(); } @Override public void setEnvironment(Environment environment) { this.environment = environment; } }