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

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

package net.sf.extcos.internal;

import java.util.Iterator;
import java.util.Set;

import net.sf.extcos.exception.ConcurrentInspectionException;
import net.sf.extcos.filter.MultiplexingConnector;
import net.sf.extcos.resource.Resource;

public class RootFilter extends AbstractChainedFilter {

	// not returning(all()), andStore() clause must have been set
	// or returning() clause with any of allExtending(), allImplementing()
	// allAnnotatedWith(), allBeing()
	@Override
	protected Iterable filter(final Iterator resources,
			final Set resultSet) {
		while (resources.hasNext()) {
			Resource resource = resources.next();

			try {
				if (resource.isClass()) {
					resultSet.add(resource);
				}
			} catch (ConcurrentInspectionException ignored) {
				// should never be thrown, since we're not concurrent at this point
			}
		}

		return resultSet;
	}

	// returning(all()), no andStore() clause given
	@Override
	protected void filter(final Iterator resources,
			final MultiplexingConnector resourceDispatcher) {
		while (resources.hasNext()) {
			Resource resource = resources.next();

			try {
				if (resource.isClass()) {
					resourceDispatcher.connect(resource);
				}
			} catch (ConcurrentInspectionException ignored) {
				// should never be thrown, since we're not concurrent at this point
			}
		}
	}

	// returning(all()), andStore() clause given
	@Override
	protected Iterable filter(final Iterator resources,
			final MultiplexingConnector resourceDispatcher, final Set resultSet) {
		while (resources.hasNext()) {
			Resource resource = resources.next();

			try {
				if (resource.isClass()) {
					resultSet.add(resource);
					resourceDispatcher.connect(resource);
				}
			} catch (ConcurrentInspectionException ignored) {
				// should never be thrown, since we're not concurrent at this point
			}
		}

		return resultSet;
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy