Search in sources :

Example 1 with Update

use of com.google.cloud.tools.opensource.dependencies.Update in project cloud-opensource-java by GoogleCloudPlatform.

the class DashboardMain method generateArtifactReport.

private static ArtifactResults generateArtifactReport(Configuration configuration, Path output, Artifact artifact, ArtifactInfo artifactInfo, List<DependencyGraph> globalDependencies, ImmutableMap<ClassPathEntry, ImmutableSet<LinkageProblem>> linkageProblemTable, ClassPathResult classPathResult, Bom bom) throws IOException, TemplateException {
    String coordinates = Artifacts.toCoordinates(artifact);
    File outputFile = output.resolve(coordinates.replace(':', '_') + ".html").toFile();
    try (Writer out = new OutputStreamWriter(new FileOutputStream(outputFile), StandardCharsets.UTF_8)) {
        // includes all versions
        DependencyGraph graph = artifactInfo.getCompleteDependencies();
        List<Update> convergenceIssues = graph.findUpdates();
        // picks versions according to Maven rules
        DependencyGraph transitiveDependencies = artifactInfo.getTransitiveDependencies();
        Map<Artifact, Artifact> upperBoundFailures = findUpperBoundsFailures(graph.getHighestVersionMap(), transitiveDependencies);
        Map<Artifact, Artifact> globalUpperBoundFailures = findUpperBoundsFailures(collectLatestVersions(globalDependencies), transitiveDependencies);
        long totalLinkageErrorCount = linkageProblemTable.values().stream().flatMap(problemToClasses -> problemToClasses.stream().map(LinkageProblem::getSymbol)).distinct().count();
        Template report = configuration.getTemplate("/templates/component.ftl");
        Map<String, Object> templateData = new HashMap<>();
        DefaultObjectWrapper wrapper = new DefaultObjectWrapperBuilder(Configuration.VERSION_2_3_28).build();
        TemplateHashModel staticModels = wrapper.getStaticModels();
        templateData.put("linkageProblem", staticModels.get(LinkageProblem.class.getName()));
        templateData.put("artifact", artifact);
        templateData.put("updates", convergenceIssues);
        templateData.put("upperBoundFailures", upperBoundFailures);
        templateData.put("globalUpperBoundFailures", globalUpperBoundFailures);
        templateData.put("lastUpdated", LocalDateTime.now());
        templateData.put("dependencyGraph", graph);
        templateData.put("linkageProblems", linkageProblemTable);
        templateData.put("classPathResult", classPathResult);
        templateData.put("totalLinkageErrorCount", totalLinkageErrorCount);
        templateData.put("coordinates", bom.getCoordinates());
        report.process(templateData, out);
        ArtifactResults results = new ArtifactResults(artifact);
        results.addResult(TEST_NAME_UPPER_BOUND, upperBoundFailures.size());
        results.addResult(TEST_NAME_GLOBAL_UPPER_BOUND, globalUpperBoundFailures.size());
        results.addResult(TEST_NAME_DEPENDENCY_CONVERGENCE, convergenceIssues.size());
        results.addResult(TEST_NAME_LINKAGE_CHECK, (int) totalLinkageErrorCount);
        return results;
    }
}
Also used : HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) DefaultObjectWrapper(freemarker.template.DefaultObjectWrapper) DependencyGraph(com.google.cloud.tools.opensource.dependencies.DependencyGraph) Update(com.google.cloud.tools.opensource.dependencies.Update) Artifact(org.eclipse.aether.artifact.Artifact) DefaultArtifact(org.eclipse.aether.artifact.DefaultArtifact) DefaultObjectWrapperBuilder(freemarker.template.DefaultObjectWrapperBuilder) Template(freemarker.template.Template) TemplateHashModel(freemarker.template.TemplateHashModel) FileOutputStream(java.io.FileOutputStream) OutputStreamWriter(java.io.OutputStreamWriter) ClassFile(com.google.cloud.tools.opensource.classpath.ClassFile) File(java.io.File) Writer(java.io.Writer) OutputStreamWriter(java.io.OutputStreamWriter)

Example 2 with Update

use of com.google.cloud.tools.opensource.dependencies.Update in project java-cloud-bom by googleapis.

the class DashboardMain method generateArtifactReport.

private static ArtifactResults generateArtifactReport(Artifact artifact, ArtifactInfo artifactInfo) {
    // includes all versions
    DependencyGraph graph = artifactInfo.getCompleteDependencies();
    List<Update> convergenceIssues = graph.findUpdates();
    // picks versions according to Maven rules
    DependencyGraph transitiveDependencies = artifactInfo.getTransitiveDependencies();
    Map<Artifact, Artifact> upperBoundFailures = findUpperBoundsFailures(graph.getHighestVersionMap(), transitiveDependencies);
    ArtifactResults results = new ArtifactResults(artifact);
    results.addResult(TEST_NAME_UPPER_BOUND, upperBoundFailures.size());
    results.addResult(TEST_NAME_DEPENDENCY_CONVERGENCE, convergenceIssues.size());
    return results;
}
Also used : DependencyGraph(com.google.cloud.tools.opensource.dependencies.DependencyGraph) Update(com.google.cloud.tools.opensource.dependencies.Update) Artifact(org.eclipse.aether.artifact.Artifact) DefaultArtifact(org.eclipse.aether.artifact.DefaultArtifact)

Aggregations

DependencyGraph (com.google.cloud.tools.opensource.dependencies.DependencyGraph)2 Update (com.google.cloud.tools.opensource.dependencies.Update)2 Artifact (org.eclipse.aether.artifact.Artifact)2 DefaultArtifact (org.eclipse.aether.artifact.DefaultArtifact)2 ClassFile (com.google.cloud.tools.opensource.classpath.ClassFile)1 DefaultObjectWrapper (freemarker.template.DefaultObjectWrapper)1 DefaultObjectWrapperBuilder (freemarker.template.DefaultObjectWrapperBuilder)1 Template (freemarker.template.Template)1 TemplateHashModel (freemarker.template.TemplateHashModel)1 File (java.io.File)1 FileOutputStream (java.io.FileOutputStream)1 OutputStreamWriter (java.io.OutputStreamWriter)1 Writer (java.io.Writer)1 HashMap (java.util.HashMap)1 LinkedHashMap (java.util.LinkedHashMap)1