2525import org .openrewrite .internal .lang .Nullable ;
2626import org .openrewrite .java .dependencies .table .GradleDependencyConfigurationErrors ;
2727import org .openrewrite .java .dependencies .table .RepositoryAccessibilityReport ;
28+ import org .openrewrite .maven .MavenExecutionContextView ;
29+ import org .openrewrite .maven .MavenSettings ;
2830import org .openrewrite .maven .internal .MavenPomDownloader ;
2931import org .openrewrite .maven .tree .MavenRepository ;
32+ import org .openrewrite .maven .tree .MavenRepositoryMirror ;
3033import org .openrewrite .maven .tree .MavenResolutionResult ;
3134
3235import java .io .UncheckedIOException ;
@@ -62,7 +65,10 @@ public String getDescription() {
6265 }
6366
6467 public static class Accumulator {
68+ boolean foundGradle ;
6569 Set <MavenRepository > repositoriesFromGradle = new HashSet <>();
70+
71+ boolean foundMaven ;
6672 Set <MavenRepository > repositoriesFromMaven = new HashSet <>();
6773 }
6874
@@ -80,11 +86,14 @@ public TreeVisitor<?, ExecutionContext> getScanner(Accumulator acc) {
8086 return null ;
8187 }
8288 tree .getMarkers ().findFirst (GradleProject .class ).ifPresent (gp -> {
89+ acc .foundGradle = true ;
8390 acc .repositoriesFromGradle .addAll (gp .getMavenRepositories ());
8491 acc .repositoriesFromGradle .addAll (gp .getMavenPluginRepositories ());
8592 });
86- tree .getMarkers ().findFirst (MavenResolutionResult .class ).ifPresent (mrr ->
87- acc .repositoriesFromMaven .addAll (mrr .getPom ().getRepositories ()));
93+ tree .getMarkers ().findFirst (MavenResolutionResult .class ).ifPresent (mrr -> {
94+ acc .foundMaven = true ;
95+ acc .repositoriesFromMaven .addAll (mrr .getPom ().getRepositories ());
96+ });
8897 return tree ;
8998 }
9099 };
@@ -93,8 +102,12 @@ public TreeVisitor<?, ExecutionContext> getScanner(Accumulator acc) {
93102 @ Override
94103 public Collection <? extends SourceFile > generate (Accumulator acc , ExecutionContext ctx ) {
95104 Set <String > seen = new HashSet <>();
96- record (true , acc .repositoriesFromMaven , seen , ctx );
97- record (false , acc .repositoriesFromGradle , seen , ctx );
105+ if (acc .foundMaven ) {
106+ record (true , acc .repositoriesFromMaven , seen , ctx );
107+ }
108+ if (acc .foundGradle ) {
109+ record (false , acc .repositoriesFromGradle , seen , ctx );
110+ }
98111 return emptyList ();
99112 }
100113
@@ -123,11 +136,21 @@ private void record(boolean addMavenDefaultRepositories, Collection<MavenReposit
123136 if (reason == null ) {
124137 reason = new RuntimeException ("Repository unreachable for unknown reason" );
125138 }
126- seen .add (noTrailingSlash (repo .getUri ()));
127- report .insertRow (ctx , rowFor (repo , reason ));
139+
140+ MavenExecutionContextView mctx = new MavenExecutionContextView (ctx );
141+ MavenSettings settings = mctx .getSettings ();
142+ if (settings != null ) {
143+ // normalizeRepository() internally applies mirrors,but normalizeRepository() just returned null.
144+ // Replicate mirror application so that the correct URL is recorded
145+ repo = MavenRepositoryMirror .apply (mctx .getMirrors (settings ), repo );
146+ }
147+ if (seen .add (noTrailingSlash (repo .getUri ()))) {
148+ report .insertRow (ctx , rowFor (repo , reason ));
149+ }
128150 } else {
129- seen .add (noTrailingSlash (normalized .getUri ()));
130- report .insertRow (ctx , rowFor (repo , null ));
151+ if (seen .add (noTrailingSlash (normalized .getUri ()))) {
152+ report .insertRow (ctx , rowFor (normalized , null ));
153+ }
131154 }
132155 }
133156 }
@@ -156,7 +179,7 @@ private static RepositoryAccessibilityReport.Row rowFor(MavenRepository repo, @N
156179 exceptionClass = t .getClass ().getName ();
157180 exceptionMessage = t .getMessage ();
158181 }
159- return new RepositoryAccessibilityReport .Row (repo .getUri (), exceptionClass , exceptionMessage , httpResponseCode );
182+ return new RepositoryAccessibilityReport .Row (noTrailingSlash ( repo .getUri () ), exceptionClass , exceptionMessage , httpResponseCode );
160183 }
161184
162185 @ Override
0 commit comments