package org.elassandra.index.search; import java.io.IOException; import org.apache.lucene.index.DirectoryReader; import org.apache.lucene.index.FilterDirectoryReader; import org.apache.lucene.index.LeafReader; import org.apache.lucene.search.Query; public class TokenRangesDirectoryReader extends FilterDirectoryReader { final Query query; final TokenRangesBitsetFilterCache cache; public TokenRangesDirectoryReader(DirectoryReader in, Query query, TokenRangesBitsetFilterCache cache) throws IOException { super(in, new FilterDirectoryReader.SubReaderWrapper() { @Override public LeafReader wrap(LeafReader reader) { try { return new TokenRangesLeafReader(in, reader, query, cache); } catch (IOException e) { throw new RuntimeException(e); } } }); this.query = query; this.cache = cache; assert !(in instanceof TokenRangesDirectoryReader); } @Override protected DirectoryReader doWrapDirectoryReader(DirectoryReader in) throws IOException { return new TokenRangesDirectoryReader(in, query, cache); } public Object getCoreCacheKey() { return in.getCoreCacheKey(); } }