/**
* Copyright (c) 2013-2016, The SeedStack authors <http://seedstack.org>
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
package org.seedstack.seed.web.security.internal.shiro;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import java.io.IOException;
import java.util.Iterator;
class SimpleFilterChain implements FilterChain {
private final FilterChain originalChain;
private final Iterator<? extends Filter> chain;
private boolean originalCalled = false;
public SimpleFilterChain(FilterChain originalChain, Iterator<? extends Filter> chain) {
this.originalChain = originalChain;
this.chain = chain;
}
public void doFilter(ServletRequest request, ServletResponse response) throws IOException, ServletException {
if (chain.hasNext()) {
Filter filter = chain.next();
filter.doFilter(request, response, this);
} else if (!originalCalled) {
originalCalled = true;
originalChain.doFilter(request, response);
}
}
}