001package org.nuxeo.ecm.platform.ui.web.auth.service; 002 003import java.io.IOException; 004import java.util.ArrayList; 005import java.util.List; 006 007import javax.servlet.FilterChain; 008import javax.servlet.ServletException; 009import javax.servlet.ServletRequest; 010import javax.servlet.ServletResponse; 011 012import org.nuxeo.ecm.platform.ui.web.auth.NuxeoAuthenticationFilter; 013import org.nuxeo.ecm.platform.ui.web.auth.interfaces.NuxeoAuthPreFilter; 014 015public class NuxeoAuthFilterChain implements FilterChain { 016 017 protected List<NuxeoAuthPreFilter> preFilters = new ArrayList<NuxeoAuthPreFilter>(); 018 019 protected NuxeoAuthenticationFilter mainFilter; 020 021 protected FilterChain standardFilterChain; 022 023 public NuxeoAuthFilterChain(List<NuxeoAuthPreFilter> preFilters, FilterChain standardFilterChain, 024 NuxeoAuthenticationFilter mainFilter) { 025 this.preFilters.addAll(preFilters); 026 this.mainFilter = mainFilter; 027 this.standardFilterChain = standardFilterChain; 028 } 029 030 @Override 031 public void doFilter(ServletRequest request, ServletResponse response) throws IOException, ServletException { 032 if (preFilters != null && !preFilters.isEmpty()) { 033 NuxeoAuthPreFilter preFilter = preFilters.remove(0); 034 preFilter.doFilter(request, response, this); 035 } else { 036 mainFilter.doFilterInternal(request, response, standardFilterChain); 037 } 038 } 039 040}