public Optional findBaselineBuild()

in src/main/java/org/apache/maven/buildcache/RemoteCacheRepositoryImpl.java [216:251]


    public Optional<Build> findBaselineBuild(MavenProject project) {
        Optional<List<ProjectReport>> cachedProjectsHolder = findCacheInfo().map(CacheReport::getProjects);

        if (!cachedProjectsHolder.isPresent()) {
            return Optional.empty();
        }

        final List<ProjectReport> projects = cachedProjectsHolder.get();
        final Optional<ProjectReport> projectReportHolder = projects.stream()
                .filter(p -> project.getArtifactId().equals(p.getArtifactId())
                        && project.getGroupId().equals(p.getGroupId()))
                .findFirst();

        if (!projectReportHolder.isPresent()) {
            return Optional.empty();
        }

        final ProjectReport projectReport = projectReportHolder.get();

        String url;
        if (projectReport.getUrl() != null) {
            url = projectReport.getUrl();
            LOGGER.info("Retrieving baseline buildinfo: {}", url);
        } else {
            url = getResourceUrl(
                    BUILDINFO_XML, project.getGroupId(), project.getArtifactId(), projectReport.getChecksum());
            LOGGER.info("Baseline project record doesn't have url, trying default location {}", url);
        }

        try {
            return getResourceContent(url).map(content -> new Build(xmlService.loadBuild(content), CacheSource.REMOTE));
        } catch (Exception e) {
            LOGGER.warn("Error restoring baseline build at url: {}, skipping diff", url, e);
            return Optional.empty();
        }
    }