package proj.zoie.impl.indexing; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.log4j.Logger; import org.apache.lucene.index.IndexReader; import proj.zoie.api.IndexReaderFactory; import proj.zoie.api.ZoieException; import proj.zoie.api.ZoieMultiReader; public class NoopReaderCache<R extends IndexReader> extends AbstractReaderCache<R> { private static final Logger log = Logger.getLogger(NoopReaderCache.class); private volatile boolean alreadyShutdown = false; private final IndexReaderFactory<R> _readerfactory; public NoopReaderCache(IndexReaderFactory<R> readerfactory) { _readerfactory = readerfactory; } @Override public List<ZoieMultiReader<R>> getIndexReaders() { if (!alreadyShutdown) { try { return _readerfactory.getIndexReaders(); } catch (IOException e) { log.error("getIndexReaders", e); } } return new ArrayList<ZoieMultiReader<R>>(0); } @Override public void returnIndexReaders(List<ZoieMultiReader<R>> readers) { _readerfactory.returnIndexReaders(readers); } @Override public void refreshCache(long timeout) throws ZoieException { } @Override public void shutdown() { alreadyShutdown = true; } @Override public void start() { } @Override public long getFreshness() { return 0; } @Override public void setFreshness(long freshness) { } public static ReaderCacheFactory FACTORY = new ReaderCacheFactory() { @Override public <R extends IndexReader> AbstractReaderCache<R> newInstance( IndexReaderFactory<R> readerfactory) { return new NoopReaderCache<R>(readerfactory); } }; }