package io.oasp.gastronomy.restaurant.general.service.impl.config;
import io.oasp.module.logging.common.api.DiagnosticContextFacade;
import io.oasp.module.logging.common.impl.DiagnosticContextFacadeImpl;
import io.oasp.module.logging.common.impl.DiagnosticContextFilter;
import io.oasp.module.logging.common.impl.PerformanceLogFilter;
import javax.servlet.Filter;
import org.apache.catalina.filters.SetCharacterEncodingFilter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
import org.springframework.boot.context.embedded.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* Registers a number of filters for web requests.
*
*/
@Configuration
public class WebConfig {
private @Autowired AutowireCapableBeanFactory beanFactory;
/**
* Register PerformanceLogFilter to log running time of requests.
*
* @return filter
*/
@Bean
public FilterRegistrationBean performanceLogFilter() {
FilterRegistrationBean registration = new FilterRegistrationBean();
Filter performanceLogFilter = new PerformanceLogFilter();
this.beanFactory.autowireBean(performanceLogFilter);
registration.setFilter(performanceLogFilter);
registration.addUrlPatterns("/*");
return registration;
}
/**
* Bean definition for DiagnosticContextFacade.
*
* @return DiagnosticContextFacade
*/
@Bean(name = "DiagnosticContextFacade")
public DiagnosticContextFacade diagnosticContextFacade() {
return new DiagnosticContextFacadeImpl();
}
/**
* Register DiagnosticContextFilter to log service calls with correlation id.
*
* @return filter
*/
@Bean
public FilterRegistrationBean diagnosticContextFilter() {
FilterRegistrationBean registration = new FilterRegistrationBean();
Filter diagnosticContextFilter = new DiagnosticContextFilter();
this.beanFactory.autowireBean(diagnosticContextFilter);
registration.setFilter(diagnosticContextFilter);
registration.addUrlPatterns("/services/*");
return registration;
}
/**
* Register SetCharacterEncodingFilter to convert specical characters correctly.
*
* @return filter
*/
@Bean
public FilterRegistrationBean setCharacterEncodingFilter() {
FilterRegistrationBean registration = new FilterRegistrationBean();
SetCharacterEncodingFilter setCharacterEncodingFilter = new SetCharacterEncodingFilter();
setCharacterEncodingFilter.setEncoding("UTF-8");
setCharacterEncodingFilter.setIgnore(false);
this.beanFactory.autowireBean(setCharacterEncodingFilter);
registration.setFilter(setCharacterEncodingFilter);
registration.addUrlPatterns("/*");
return registration;
}
}