Package mireka.filterchain

Source Code of mireka.filterchain.FilterInstances

package mireka.filterchain;

import java.util.ArrayList;
import java.util.List;

import mireka.filter.Filter;
import mireka.filter.FilterBase;
import mireka.filter.FilterChain;
import mireka.filter.MailTransaction;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class FilterInstances {
    private final Logger logger =
            LoggerFactory.getLogger(FilterInstances.class);
    private final List<Filter> filters = new ArrayList<Filter>();
    private final MailTransaction mailTransaction;
    private FilterChain head;

    public FilterInstances(MailTransaction mailTransaction) {
        this.mailTransaction = mailTransaction;
    }

    public void add(Filter filter) {
        filters.add(filter);
    }

    public void init() {
        FilterChain nextLink = new ChainEnd(mailTransaction);
        for (int i = filters.size() - 1; i >= 0; i--) {
            Filter filter = filters.get(i);
            filter.setChain(nextLink);
            nextLink = new Link(filter, mailTransaction);
        }
        head = nextLink;
    }

    public FilterChain getHead() {
        return head;
    }

    /**
     * calls done method of all filters even if one or more fails.
     */
    public void done() {
        for (FilterBase filter : filters) {
            try {
                filter.done();
            } catch (RuntimeException e) {
                logger.error("Exception in done method of filter. "
                        + "done method of other filters will still run.", e);
            }
        }
    }
}
TOP

Related Classes of mireka.filterchain.FilterInstances

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.