All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.sf.extcos.internal.ThreadingFilterInterceptor Maven / Gradle / Ivy

package net.sf.extcos.internal;

import static net.sf.extcos.util.StringUtils.append;
import net.sf.extcos.filter.Filter;
import net.sf.extcos.filter.FilterInterceptor;
import net.sf.extcos.resource.Resource;
import net.sf.extcos.util.Assert;

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

public class ThreadingFilterInterceptor implements FilterInterceptor {
	private static Logger logger = LoggerFactory.getLogger(ThreadingFilterInterceptor.class);

	private final ThreadManager threadManager = ThreadManager.getInstance();
	private Filter filter;

	public ThreadingFilterInterceptor() {
		threadManager.register();
	}

	@Override
	public void setInterceptedFilter(final Filter filter) {
		try {
			Assert.notNull(filter, IllegalArgumentException.class,
					"filter must not be null");

			this.filter = filter;

			if (logger.isTraceEnabled()) {
				logger.trace(append("successfully set intercepted filter to ", filter));
			}
		} catch(IllegalArgumentException e) {
			logger.debug("couldn't set intercepted filter", e);
		}
	}

	@Override
	public void filter(final Iterable resources) {
		if (filter == null) {
			logger.warn("intercepted filter is not set, hence nothing to intercept");
			return;
		}

		threadManager.invoke(new Runnable() {
			@Override
			public void run() {
				filter.filter(resources);
			}
		});
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy