Created
March 31, 2016 20:09
-
-
Save 4lberto/78ced73387162f8bd24f42172712a018 to your computer and use it in GitHub Desktop.
FilterDecorator For tutorial
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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