in indexer-core/src/main/java/org/apache/maven/index/updater/DefaultIndexUpdater.java [163:219]
private Date loadIndexDirectory(
final IndexUpdateRequest updateRequest,
final ResourceFetcher fetcher,
final boolean merge,
final String remoteIndexFile)
throws IOException {
File indexDir;
if (updateRequest.getIndexTempDir() != null) {
updateRequest.getIndexTempDir().mkdirs();
indexDir = Files.createTempDirectory(updateRequest.getIndexTempDir().toPath(), remoteIndexFile + ".dir")
.toFile();
} else {
indexDir = Files.createTempDirectory(remoteIndexFile + ".dir").toFile();
}
try (BufferedInputStream is = new BufferedInputStream(fetcher.retrieve(remoteIndexFile)); //
Directory directory = updateRequest.getFSDirectoryFactory().open(indexDir)) {
Date timestamp;
Set<String> rootGroups;
Set<String> allGroups;
if (remoteIndexFile.endsWith(".gz")) {
IndexDataReadResult result =
unpackIndexData(is, updateRequest, directory, updateRequest.getIndexingContext());
timestamp = result.getTimestamp();
rootGroups = result.getRootGroups();
allGroups = result.getAllGroups();
} else {
// legacy transfer format
throw new IllegalArgumentException(
"The legacy format is no longer supported " + "by this version of maven-indexer.");
}
if (updateRequest.getDocumentFilter() != null) {
filterDirectory(directory, updateRequest.getDocumentFilter());
}
if (merge) {
updateRequest.getIndexingContext().merge(directory, null, allGroups, rootGroups);
} else {
updateRequest.getIndexingContext().replace(directory, allGroups, rootGroups);
}
if (sideEffects != null && sideEffects.size() > 0) {
getLogger().info(IndexUpdateSideEffect.class.getName() + " extensions found: " + sideEffects.size());
for (IndexUpdateSideEffect sideeffect : sideEffects) {
sideeffect.updateIndex(directory, updateRequest.getIndexingContext(), merge);
}
}
return timestamp;
} finally {
try {
FileUtils.deleteDirectory(indexDir);
} catch (IOException ex) {
// ignore
}
}
}