private static void filterDirectory()

in indexer-core/src/main/java/org/apache/maven/index/updater/DefaultIndexUpdater.java [221:260]


    private static void filterDirectory(final Directory directory, final DocumentFilter filter) throws IOException {
        IndexReader r = null;
        IndexWriter w = null;
        try {
            r = DirectoryReader.open(directory);
            w = new NexusIndexWriter(directory, new IndexWriterConfig(new NexusAnalyzer()));

            Bits liveDocs = MultiBits.getLiveDocs(r);

            int numDocs = r.maxDoc();
            StoredFields storedFields = r.storedFields();

            for (int i = 0; i < numDocs; i++) {
                if (liveDocs != null && !liveDocs.get(i)) {
                    continue;
                }

                Document d = storedFields.document(i);

                if (!filter.accept(d)) {
                    boolean success = w.tryDeleteDocument(r, i) != -1;
                    // FIXME handle deletion failure
                }
            }
            w.commit();
        } finally {
            IndexUtils.close(r);
            IndexUtils.close(w);
        }

        w = null;
        try {
            // analyzer is unimportant, since we are not adding/searching to/on index, only reading/deleting
            w = new NexusIndexWriter(directory, new IndexWriterConfig(new NexusAnalyzer()));

            w.commit();
        } finally {
            IndexUtils.close(w);
        }
    }