use of org.gradle.api.tasks.diagnostics.internal.graph.nodes.DependencyReportHeader in project gradle by gradle.
the class DependencyInsightReporter method createHeaderForDependency.
private DependencyReportHeader createHeaderForDependency(DependencyEdge dependency, Set<Throwable> alreadyReportedErrors) {
ComponentSelectionReasonInternal reason = (ComponentSelectionReasonInternal) dependency.getReason();
Section selectionReasonsSection = buildSelectionReasonSection(reason);
List<Section> reasonSections = selectionReasonsSection.getChildren();
String reasonShortDescription;
List<Section> extraDetails = Lists.newArrayList();
boolean displayFullReasonSection = reason.hasCustomDescriptions() || reasonSections.size() > 1;
if (displayFullReasonSection) {
reasonShortDescription = null;
extraDetails.add(selectionReasonsSection);
} else {
reasonShortDescription = reasonSections.isEmpty() ? null : reasonSections.get(0).getDescription().toLowerCase();
}
buildFailureSection(dependency, alreadyReportedErrors, extraDetails);
List<ResolvedVariantResult> selectedVariants = dependency.getSelectedVariants();
return new DependencyReportHeader(dependency, reasonShortDescription, selectedVariants, extraDetails);
}
use of org.gradle.api.tasks.diagnostics.internal.graph.nodes.DependencyReportHeader in project gradle by gradle.
the class DependencyInsightReporter method convertToRenderableItems.
public Collection<RenderableDependency> convertToRenderableItems(Collection<DependencyResult> dependencies, boolean singlePathToDependency) {
LinkedList<RenderableDependency> out = new LinkedList<>();
Collection<DependencyEdge> sortedEdges = toDependencyEdges(dependencies);
// remember if module id was annotated
Set<ComponentIdentifier> annotated = Sets.newHashSet();
Set<Throwable> alreadyReportedErrors = Sets.newHashSet();
RequestedVersion current = null;
for (DependencyEdge dependency : sortedEdges) {
// add description only to the first module
if (annotated.add(dependency.getActual())) {
DependencyReportHeader header = createHeaderForDependency(dependency, alreadyReportedErrors);
out.add(header);
current = newRequestedVersion(out, dependency);
} else if (!current.getRequested().equals(dependency.getRequested())) {
current = newRequestedVersion(out, dependency);
}
if (!singlePathToDependency || current.getChildren().isEmpty()) {
current.addChild(dependency);
}
}
return out;
}
use of org.gradle.api.tasks.diagnostics.internal.graph.nodes.DependencyReportHeader in project gradle by gradle.
the class DependencyInsightReporter method prepare.
public Collection<RenderableDependency> prepare(Collection<DependencyResult> input, VersionSelectorScheme versionSelectorScheme, VersionComparator versionComparator) {
LinkedList<RenderableDependency> out = new LinkedList<RenderableDependency>();
List<DependencyEdge> dependencies = CollectionUtils.collect(input, new Transformer<DependencyEdge, DependencyResult>() {
@Override
public DependencyEdge transform(DependencyResult result) {
if (result instanceof UnresolvedDependencyResult) {
return new UnresolvedDependencyEdge((UnresolvedDependencyResult) result);
} else {
return new ResolvedDependencyEdge((ResolvedDependencyResult) result);
}
}
});
Collection<DependencyEdge> sorted = DependencyResultSorter.sort(dependencies, versionSelectorScheme, versionComparator);
// remember if module id was annotated
HashSet<ComponentIdentifier> annotated = new HashSet<ComponentIdentifier>();
RequestedVersion current = null;
for (DependencyEdge dependency : sorted) {
ResolvedVariantResult selectedVariant = dependency.getSelectedVariant();
// add description only to the first module
if (annotated.add(dependency.getActual())) {
// add a heading dependency with the annotation if the dependency does not exist in the graph
if (!dependency.getRequested().matchesStrictly(dependency.getActual())) {
out.add(new DependencyReportHeader(dependency, selectedVariant));
current = new RequestedVersion(dependency.getRequested(), dependency.getActual(), dependency.isResolvable(), null, selectedVariant);
out.add(current);
} else {
current = new RequestedVersion(dependency.getRequested(), dependency.getActual(), dependency.isResolvable(), getReasonDescription(dependency.getReason()), selectedVariant);
out.add(current);
}
} else if (!current.getRequested().equals(dependency.getRequested())) {
current = new RequestedVersion(dependency.getRequested(), dependency.getActual(), dependency.isResolvable(), null, selectedVariant);
out.add(current);
}
current.addChild(dependency);
}
return out;
}
Aggregations