package org.jbehave.eclipse.cache.container; import java.util.concurrent.ConcurrentLinkedQueue; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jdt.core.ICompilationUnit; import org.eclipse.jdt.core.IPackageFragment; import org.eclipse.jdt.core.IPackageFragmentRoot; import org.jbehave.eclipse.util.Visitor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class FlatContainer<E> extends Container<E> { private static Logger logger = LoggerFactory.getLogger(FlatContainer.class); private ConcurrentLinkedQueue<E> elements = new ConcurrentLinkedQueue<E>(); public FlatContainer(String containerName) { super(containerName); } @Override public void clear() { elements.clear(); } @Override public void add(E element) { elements.add(element); } @Override public void traverse(Visitor<E, ?> visitor) { for (E element : elements) { logger.debug("Traversing element: <{}>", element); visitor.visit(element); if (visitor.isDone()) return; } } @Override public void recursivelyRemoveBuildOlderThan(int buildTick, IProgressMonitor monitor) { } @Override public Container<E> specializeFor(IPackageFragmentRoot pkgFragmentRoot) { return this; } @Override public Container<E> specializeFor(ICompilationUnit cunit) { return this; } @Override public Container<E> specializeFor(IPackageFragment pkgFragment) { return this; } }