Skip to content

Instantly share code, notes, and snippets.

@4lberto
Created March 31, 2016 20:09
Show Gist options
  • Save 4lberto/78ced73387162f8bd24f42172712a018 to your computer and use it in GitHub Desktop.
Save 4lberto/78ced73387162f8bd24f42172712a018 to your computer and use it in GitHub Desktop.
FilterDecorator For tutorial
import java.io.IOException;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/**
* Filter decorator class for CORSFilter so it can be used with DelegatinFilterProxy in Spring.
*/
public class FilterDecoratorForSpring implements Filter{
private final Filter decoratedFilter;
private final DecoratedFilterConfig decoratedFilterConfig;
public FilterDecoratorForSpring(final Filter decoratedFilter, final Map<String, String> configuration){
super();
this.decoratedFilter = decoratedFilter;
this.decoratedFilterConfig = new DecoratedFilterConfig();
for(final String key : configuration.keySet()){
this.decoratedFilterConfig.addProperty(key, configuration.get(key));
}
}
@Override
public void init(final FilterConfig filterConfig) throws ServletException{
this.decoratedFilterConfig.setServletContext(filterConfig.getServletContext());
this.decoratedFilterConfig.setFilterName(filterConfig.getFilterName());
this.decoratedFilter.init(filterConfig);
}
@Override
public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain chain)
throws IOException, ServletException{
this.decoratedFilter.doFilter(request, response, chain);
}
@Override
public void destroy(){
this.decoratedFilter.destroy();
}
/**
* Specific filterConfig implementation to be used by the CORS Filter
*/
private static class DecoratedFilterConfig implements FilterConfig{
private final Map<String, String> propertiesFilter = new HashMap<>();
private String filterName;
private ServletContext servletContext;
@Override
public String getFilterName(){
return filterName;
}
@Override
public ServletContext getServletContext(){
return servletContext;
}
@Override
public String getInitParameter(final String name){
return propertiesFilter.get(name);
}
@Override
public Enumeration<String> getInitParameterNames(){
return null;
}
public void addProperty(final String key, final String value){
this.propertiesFilter.put(key, value);
}
public void setFilterName(final String filterName){
this.filterName = filterName;
}
public void setServletContext(final ServletContext servletContext){
this.servletContext = servletContext;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment