import java.io.File;
import java.io.IOException;
+import java.nio.file.Files;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@Override
public Thread newThread(Runnable r) {
Thread t = new Thread(r, "Lucene Index Creator");
- if (t.isDaemon())
+ if (!t.isDaemon())
t.setDaemon(true);
if (t.getPriority() != Thread.NORM_PRIORITY)
t.setPriority(Thread.NORM_PRIORITY);
if (overwrite) {
mon.subTask("Erasing previous index");
- FileUtils.deleteAll(indexPath);
+ FileUtils.emptyDirectory(indexPath.toPath());
}
final AtomicReference<FSDirectory> directory = new AtomicReference<FSDirectory>();
try {
mon.subTask("Start index write");
- createDirectory(indexPath);
+ Files.createDirectories(indexPath.toPath());
directory.set(FSDirectory.open(indexPath));
IndexWriterConfig conf = new IndexWriterConfig(Version.LUCENE_4_9, Queries.getAnalyzer()).setOpenMode(OpenMode.CREATE);
}
}
}
-
- s.release();
} catch (DatabaseException e) {
throw new IllegalStateException(e);
+ } finally {
+ s.release();
}
});
}
try {
closeWriter(writer.getAndSet(null));
} finally {
- directory.getAndSet(null).close();
+ FileUtils.uncheckedClose(directory.getAndSet(null));
}
}
}
return path;
}
- private static void createDirectory(File path) throws IOException {
- if (path.exists() && !path.isDirectory())
- throw new IOException("Could not create index directory " + path + ", a file by that name already exists");
- path.mkdirs();
- if (!path.exists())
- throw new IOException("Could not create index directory " + path + " for an unknown reason");
- if (!path.isDirectory())
- throw new IOException("Could not create index directory " + path + ", a file by that name already exists");
- }
-
File getIndexPath() {
return indexPath;
}