@Override public GAVToplevelDependencies getToplevelDependencies(String url, String revision, GAV gav) throws ScmException, PomAnalysisException { Set<GAV> deps = scmConnector.getToplevelDependencyOfRevision(url, revision, gav); return new GAVToplevelDependencies(gav, deps); }
private Set<ProjectHiearchy> toProjectHiearchies(GAVToplevelDependencies deps) { return toProjectHiearchies(deps.getDependencies()); }
@Override public Optional<ArtifactReport> getReportFromSCM(SCMReportRequest scml) throws ScmException, PomAnalysisException, CommunicationException { if (scml == null) throw new IllegalArgumentException("SCM information can't be null"); Set<Product> products = getProducts(scml.getProductNames(), scml.getProductVersionIds()); GAVDependencyTree dt = dependencyTreeGenerator.getDependencyTree(scml.getScml()); return createReport(dt, products); }
private <T extends GeneratorEntity> T prepareEntity(EntityConstructor<T> constructor, SCMLocator scm, int id) throws ScmException, PomAnalysisException { GAVToplevelDependencies deps = depGenerator.getToplevelDependenciesFromModules(scm); Optional<POMInfo> pomInfo = pom.getPomInfo(scm.getScmUrl(), scm.getRevision(), scm.getPomPath()); T entity = constructor.construct(scm, id, deps.getGav()); entity.getToplevelProject().setDescription( ProjectHiearchyCreator.getDescription(pomInfo, deps.getGav())); entity.getToplevelProject().setName(ProjectHiearchyCreator.getName(deps.getGav())); ProjectHiearchy ph = entity.getToplevelBc(); ph.setDependencies(nextLevel.processDependencies(ph, deps.getDependencies())); // the top level BC has its dependencies analyzed ph.setAnalysisStatus(DependencyAnalysisStatus.ANALYSED); return entity; }
/** * Looks up built versions for the ProjectDetail. Sets internallyBuilt, availableVersions. */ private void getBuiltVersions(ProjectDetail project) { CompletableFuture<Set<ProductArtifacts>> artifacts = productProvider.getArtifacts(project.getGav().getGA()); futures.add(versionFinder.getVersionsFor(project.getGav(), artifacts).thenAccept(lr -> { project.setAvailableVersions(lr.getAvailableVersions()); project.setInternallyBuilt(lr.getBestMatchVersion()); })); } }
GAVToplevelDependencies dependencies; try { dependencies = depGenerator.getToplevelDependencies(gav); hiearchy.setDependencies(toProjectHiearchies(dependencies)); hiearchy.setAnalysisStatus(DependencyAnalysisStatus.ANALYSED); dependencies = depGenerator.getToplevelDependencies(scmInfo.getUrl(), scmInfo.getRevision(), gav);
private GAVToplevelDependencies treeToToplevel(GAVDependencyTree tree){ Set<GAV> dependencies = tree.getDependencies().stream() .map(x -> x.getGav()) .collect(Collectors.toSet()); return new GAVToplevelDependencies(tree.getGav(), dependencies); } }
@Override public ArtifactReport getReport(GAVRequest gavRequest) throws CommunicationException, FindGAVDependencyException { if (gavRequest == null) throw new IllegalArgumentException("GAV can't be null"); Set<Product> products = getProducts(gavRequest.getProductNames(), gavRequest.getProductVersionIds()); GAVDependencyTree dt = dependencyTreeGenerator.getDependencyTree(gavRequest.asGavObject()); return createReport(dt, products).get(); }
@Override public GAVToplevelDependencies getToplevelDependenciesFromModules(SCMLocator scml) throws ScmException, PomAnalysisException { Optional<MavenProject> pom = scmConnector.getPom(scml.getScmUrl(), scml.getRevision(), scml.getPomPath()); GAV gav = pom.orElseThrow(() -> new ScmException("Failed to find specified pom: " + scml)).getGAV(); Map<GA, Set<GAV>> dependenciesOfModules = scmConnector.getDependenciesOfModules(scml.getScmUrl(), scml.getRevision(), scml.getPomPath(), scml.getRepositories()); Set<GAV> deps = dependenciesOfModules.values().stream() .flatMap(Set::stream) .filter(g -> !dependenciesOfModules.containsKey(g.getGA())) .collect(Collectors.toCollection(HashSet::new)); return new GAVToplevelDependencies(gav, deps); }
@Override public Optional<AdvancedArtifactReport> getAdvancedReportFromSCM(SCMReportRequest request) throws ScmException, PomAnalysisException, CommunicationException { SCMLocator scml = request.getScml(); Set<Product> products = getProducts(request.getProductNames(), request.getProductVersionIds()); GAVDependencyTree dt = dependencyTreeGenerator.getDependencyTree(scml); Optional<ArtifactReport> artifactReport = createReport(dt, products); // TODO: hardcoded to git // hopefully we'll get the cached cloned folder for this repo File repoFolder = scmManager.cloneRepository(SCMType.GIT, scml.getScmUrl(), scml.getRevision()); return artifactReport.map(r -> generateAdvancedArtifactReport(r, repoFolder)); }
@Override public GAVToplevelDependencies getToplevelDependencies(SCMLocator scml) throws ScmException, PomAnalysisException { Optional<MavenProject> pom = scmConnector.getPom(scml.getScmUrl(), scml.getRevision(), scml.getPomPath()); GAV gav = pom.orElseThrow(() -> new ScmException("Failed to find specified pom: " + scml)).getGAV(); Set<GAV> deps = scmConnector.getToplevelDependencyOfRevision(scml.getScmUrl(), scml.getRevision(), scml.getPomPath(), scml.getRepositories()); return new GAVToplevelDependencies(gav, deps); }