private Date loadIndexDirectory()

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
            }
        }
    }