Skip to content

Commit 5d7e39e

Browse files
committed
Use RuntimeInformation from Maven
1 parent 4fcf7d0 commit 5d7e39e

File tree

6 files changed

+73
-32
lines changed

6 files changed

+73
-32
lines changed

spring-rewrite-commons-launcher/src/main/java/org/springframework/rewrite/RewriteProjectParser.java

+27-12
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
package org.springframework.rewrite;
1717

1818
import org.apache.maven.execution.ExecutionEvent;
19+
import org.apache.maven.rtinfo.RuntimeInformation;
20+
import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
1921
import org.jetbrains.annotations.NotNull;
2022
import org.openrewrite.ExecutionContext;
2123
import org.openrewrite.SourceFile;
@@ -37,7 +39,7 @@
3739
import org.springframework.rewrite.parser.events.SuccessfullyParsedProjectEvent;
3840
import org.springframework.rewrite.parser.maven.MavenBuildFileParser;
3941
import org.springframework.rewrite.parser.maven.MavenProject;
40-
import org.springframework.rewrite.parser.maven.MavenProjectAnalyzer;
42+
import org.springframework.rewrite.parser.maven.MavenRuntimeInformation;
4143
import org.springframework.rewrite.parser.maven.ProvenanceMarkerFactory;
4244
import org.springframework.rewrite.scopes.ScanScope;
4345
import org.springframework.util.StringUtils;
@@ -98,16 +100,13 @@ public class RewriteProjectParser {
98100

99101
private final ExecutionContext executionContext;
100102

101-
private final MavenProjectAnalyzer mavenProjectAnalyzer;
102-
103103
private final MavenArtifactDownloader artifactDownloader;
104104

105105
public RewriteProjectParser(ProvenanceMarkerFactory provenanceMarkerFactory, MavenBuildFileParser buildFileParser,
106106
SourceFileParser sourceFileParser, StyleDetector styleDetector,
107107
SpringRewriteProperties springRewriteProperties, ParsingEventListener parsingEventListener,
108108
ApplicationEventPublisher eventPublisher, ScanScope scanScope, ConfigurableListableBeanFactory beanFactory,
109-
ProjectScanner scanner, ExecutionContext executionContext, MavenProjectAnalyzer mavenProjectAnalyzer,
110-
MavenArtifactDownloader artifactDownloader) {
109+
ProjectScanner scanner, ExecutionContext executionContext, MavenArtifactDownloader artifactDownloader) {
111110
this.provenanceMarkerFactory = provenanceMarkerFactory;
112111
this.buildFileParser = buildFileParser;
113112
this.sourceFileParser = sourceFileParser;
@@ -119,7 +118,6 @@ public RewriteProjectParser(ProvenanceMarkerFactory provenanceMarkerFactory, Mav
119118
this.beanFactory = beanFactory;
120119
this.scanner = scanner;
121120
this.executionContext = executionContext;
122-
this.mavenProjectAnalyzer = mavenProjectAnalyzer;
123121
this.artifactDownloader = artifactDownloader;
124122
}
125123

@@ -157,13 +155,16 @@ public RewriteProjectParsingResult parse(Path givenBaseDir, List<Resource> resou
157155
return new RewriteProjectParsingResult(sourceFilesRef.get(), executionContext);
158156
}
159157

160-
private List<SourceFile> runInMavenSession(ExecutionEvent onSuccess, Path baseDir, List<Resource> resources) {
158+
private List<SourceFile> runInMavenSession(ExecutionEvent executionEvent, Path baseDir, List<Resource> resources) {
161159
List<NamedStyles> styles = List.of();
162-
List<MavenProject> sortedProjects = onSuccess.getSession()
160+
161+
final RuntimeInformation runtimeInformation = getRuntimeInformation(executionEvent);
162+
163+
List<MavenProject> sortedProjects = executionEvent.getSession()
163164
.getProjectDependencyGraph()
164165
.getSortedProjects()
165166
.stream()
166-
.map(p -> this.mavenProjectToMavenProject(p, artifactDownloader, resources))
167+
.map(p -> this.mavenProjectToMavenProject(p, artifactDownloader, resources, runtimeInformation))
167168
.toList();
168169

169170
ParserContext parserContext = new ParserContext(baseDir, resources, sortedProjects);
@@ -197,15 +198,29 @@ private List<SourceFile> runInMavenSession(ExecutionEvent onSuccess, Path baseDi
197198
return sourceFiles;
198199
}
199200

201+
private static RuntimeInformation getRuntimeInformation(ExecutionEvent onSuccess) {
202+
RuntimeInformation runtimeInformation;
203+
try {
204+
runtimeInformation = onSuccess.getSession().getContainer().lookup(RuntimeInformation.class);
205+
}
206+
catch (ComponentLookupException e) {
207+
throw new RuntimeException(e);
208+
}
209+
return runtimeInformation;
210+
}
211+
200212
private MavenProject mavenProjectToMavenProject(org.apache.maven.project.MavenProject mavenProject,
201-
MavenArtifactDownloader artifactDownloader, List<Resource> resources) {
213+
MavenArtifactDownloader artifactDownloader, List<Resource> resources,
214+
RuntimeInformation runtimeInformation) {
202215
Path baseDir = mavenProject.getBasedir().toPath();
203216
File file = mavenProject.getExecutionProject().getFile();
204217
Resource rootPom = new FileSystemResource(file);
205-
MavenProject newMavenProject = new MavenProject(baseDir, rootPom, artifactDownloader, resources);
218+
219+
MavenProject newMavenProject = new MavenProject(baseDir, rootPom, artifactDownloader, resources,
220+
new MavenRuntimeInformation(runtimeInformation.getMavenVersion()));
206221
List<MavenProject> mavenProjects = mavenProject.getCollectedProjects()
207222
.stream()
208-
.map(p -> this.mavenProjectToMavenProject(p, artifactDownloader, resources))
223+
.map(p -> this.mavenProjectToMavenProject(p, artifactDownloader, resources, runtimeInformation))
209224
.toList();
210225
newMavenProject.setReactorProjects(mavenProjects);
211226
return newMavenProject;

spring-rewrite-commons-launcher/src/main/java/org/springframework/rewrite/parser/maven/MavenProject.java

+8-4
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ public class MavenProject {
4747

4848
private final MavenBuildFile buildFile;
4949

50+
private final MavenRuntimeInformation runtimeInformation;
51+
5052
/**
5153
* All {@link MavenProject}s of this build.
5254
*/
@@ -71,13 +73,15 @@ public class MavenProject {
7173
private ProjectId projectId;
7274

7375
public MavenProject(Path baseDir, Resource rootPom, MavenArtifactDownloader rewriteMavenArtifactDownloader,
74-
List<Resource> resources) {
75-
this(baseDir, rootPom, List.of(), rewriteMavenArtifactDownloader, resources);
76+
List<Resource> resources, MavenRuntimeInformation runtimeInformation) {
77+
this(baseDir, rootPom, List.of(), rewriteMavenArtifactDownloader, resources, runtimeInformation);
7678
}
7779

7880
public MavenProject(Path baseDir, Resource pomFile, List<MavenProject> dependsOnModels,
79-
MavenArtifactDownloader rewriteMavenArtifactDownloader, List<Resource> resources) {
81+
MavenArtifactDownloader rewriteMavenArtifactDownloader, List<Resource> resources,
82+
MavenRuntimeInformation runtimeInformation) {
8083
this.projectRoot = baseDir;
84+
this.runtimeInformation = runtimeInformation;
8185
this.buildFile = new MavenBuildFile(pomFile);
8286
if (dependsOnModels != null) {
8387
this.dependentProjects.addAll(dependsOnModels);
@@ -164,7 +168,7 @@ public Properties getProperties() {
164168

165169
public MavenRuntimeInformation getMavenRuntimeInformation() {
166170
// FIXME: 945 implement this
167-
return new MavenRuntimeInformation();
171+
return new MavenRuntimeInformation(runtimeInformation.getMavenVersion());
168172
}
169173

170174
public String getName() {

spring-rewrite-commons-launcher/src/main/java/org/springframework/rewrite/parser/maven/MavenProjectFactory.java

+7-4
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616
package org.springframework.rewrite.parser.maven;
1717

18+
import org.apache.maven.rtinfo.RuntimeInformation;
1819
import org.jetbrains.annotations.NotNull;
1920
import org.openrewrite.maven.utilities.MavenArtifactDownloader;
2021
import org.springframework.core.io.Resource;
@@ -33,17 +34,19 @@ public MavenProjectFactory(MavenArtifactDownloader artifactDownloader) {
3334
this.artifactDownloader = artifactDownloader;
3435
}
3536

36-
public List<MavenProject> create(Path baseDir, List<Resource> projectResources) {
37+
public List<MavenProject> create(Path baseDir, List<Resource> projectResources,
38+
MavenRuntimeInformation runtimeInformation) {
3739
List<Resource> allPomFiles = MavenBuildFileFilter.filterBuildFiles(projectResources);
3840
if (allPomFiles.isEmpty()) {
3941
throw new IllegalArgumentException("The provided resources did not contain any 'pom.xml' file.");
4042
}
41-
return allPomFiles.stream().map(pf -> create(baseDir, pf, projectResources)).toList();
43+
return allPomFiles.stream().map(pf -> create(baseDir, pf, projectResources, runtimeInformation)).toList();
4244
}
4345

4446
@NotNull
45-
public MavenProject create(Path baseDir, Resource pomFile, List<Resource> projectResources) {
46-
return new MavenProject(baseDir, pomFile, artifactDownloader, projectResources);
47+
public MavenProject create(Path baseDir, Resource pomFile, List<Resource> projectResources,
48+
MavenRuntimeInformation runtimeInformation) {
49+
return new MavenProject(baseDir, pomFile, artifactDownloader, projectResources, runtimeInformation);
4750
}
4851

4952
}

spring-rewrite-commons-launcher/src/main/java/org/springframework/rewrite/parser/maven/MavenRuntimeInformation.java

+10-2
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,22 @@
1515
*/
1616
package org.springframework.rewrite.parser.maven;
1717

18+
import org.apache.maven.rtinfo.RuntimeInformation;
19+
1820
/**
1921
* @author Fabian Krüger
2022
*/
2123
public class MavenRuntimeInformation {
2224

25+
private final String mavenVersion;
26+
27+
public MavenRuntimeInformation(String mavenVersion) {
28+
29+
this.mavenVersion = mavenVersion;
30+
}
31+
2332
public String getMavenVersion() {
24-
// FIXME: 945 implement this
25-
return "3.9.1";
33+
return this.mavenVersion;
2634
}
2735

2836
}

spring-rewrite-commons-launcher/src/test/java/org/springframework/rewrite/parser/maven/MavenProjectGraphTest.java

+5-2
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,9 @@ void singleModule() {
6464
""";
6565
Path baseDir = Path.of("./target").toAbsolutePath().normalize();
6666
Resource pomResource = new DummyResource(baseDir.resolve("pom.xml"), pomCode);
67-
MavenProject mavenProject = projectFactory.create(baseDir, pomResource, List.of(pomResource));
67+
MavenRuntimeInformation runtimeInformation = new MavenRuntimeInformation("3.9.1");
68+
MavenProject mavenProject = projectFactory.create(baseDir, pomResource, List.of(pomResource),
69+
runtimeInformation);
6870
List<MavenProject> allMavenProjects = List.of(mavenProject);
6971

7072
Map<MavenProject, Set<MavenProject>> mavenProjectSetMap = sut.from(baseDir, allMavenProjects);
@@ -291,7 +293,8 @@ public MavenProjectBuilder withResource(String path, String content) {
291293
}
292294

293295
public MavenProjectBuilder afterSort() {
294-
mavenProjects = MavenProjectGraphTest.projectFactory.create(baseDir, resources);
296+
mavenProjects = MavenProjectGraphTest.projectFactory.create(baseDir, resources,
297+
new MavenRuntimeInformation("3.9.1"));
295298
dependencyGraph = sut.from(baseDir, mavenProjects);
296299
return this;
297300
}

spring-rewrite-commons-launcher/src/test/java/org/springframework/rewrite/parser/maven/MavenProjectSorterTest.java

+16-8
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,8 @@ void projectWithSinglePom() {
7373

7474
List<Resource> resources = List.of(new DummyResource(Path.of("pom.xml"), singlePom));
7575
Path baseDir = Path.of(".").toAbsolutePath().normalize();
76-
List<MavenProject> mavenProjects = mavenProjectFactory.create(baseDir, resources);
76+
List<MavenProject> mavenProjects = mavenProjectFactory.create(baseDir, resources,
77+
new MavenRuntimeInformation("3.9.1"));
7778
List<MavenProject> sortedProjects = sut.sort(baseDir, mavenProjects);
7879
assertThat(sortedProjects).hasSize(1);
7980
}
@@ -124,7 +125,8 @@ void getSortedProjectsWithMultiModule() {
124125
new DummyResource(exampleModuleDir.resolve("pom.xml"), modulePom)
125126
);
126127
// @formatter:on
127-
List<MavenProject> mavenProjects = mavenProjectFactory.create(baseDir, resources);
128+
List<MavenProject> mavenProjects = mavenProjectFactory.create(baseDir, resources,
129+
new MavenRuntimeInformation("3.9.1"));
128130
List<MavenProject> sortedProjects = sut.sort(baseDir, mavenProjects);
129131

130132
assertThat(sortedProjects).hasSize(2);
@@ -199,7 +201,8 @@ void reactorBuildWithDanglingPom() {
199201
new DummyResource(Path.of("example/pom.xml"), modulePom),
200202
new DummyResource(Path.of("dangling/pom.xml"), danglingPom));
201203

202-
List<MavenProject> mavenProjects = mavenProjectFactory.create(baseDir, resources);
204+
List<MavenProject> mavenProjects = mavenProjectFactory.create(baseDir, resources,
205+
new MavenRuntimeInformation("3.9.1"));
203206
List<MavenProject> sortedProjects = sut.sort(baseDir, mavenProjects);
204207

205208
assertThat(sortedProjects).hasSize(2);
@@ -273,7 +276,8 @@ void reactorBuildWithDanglingPomWhichAReactorModuleDependsOn() {
273276
new DummyResource(Path.of("dangling/pom.xml"), danglingPom));
274277

275278
Path baseDir = Path.of(".").toAbsolutePath();
276-
List<MavenProject> mavenProjects = mavenProjectFactory.create(baseDir, resources);
279+
List<MavenProject> mavenProjects = mavenProjectFactory.create(baseDir, resources,
280+
new MavenRuntimeInformation("3.9.1"));
277281
List<MavenProject> sortedProjects = sut.sort(baseDir, mavenProjects);
278282

279283
assertThat(sortedProjects).hasSize(2);
@@ -363,7 +367,8 @@ void theReactorBuildOrderIsReturned() {
363367
new DummyResource(Path.of("pom.xml"), parentPom));
364368

365369
Path baseDir = Path.of(".").toAbsolutePath();
366-
List<MavenProject> mavenProjects = mavenProjectFactory.create(baseDir, resources);
370+
List<MavenProject> mavenProjects = mavenProjectFactory.create(baseDir, resources,
371+
new MavenRuntimeInformation("3.9.1"));
367372
List<MavenProject> sortedProjects = sut.sort(baseDir, mavenProjects);
368373

369374
// Returned ordered
@@ -470,7 +475,8 @@ void moreComplex() {
470475
new DummyResource(baseDir.resolve("pom.xml"), parentPom));
471476

472477
// Provided unordered
473-
List<MavenProject> mavenProjects = mavenProjectFactory.create(baseDir, resources);
478+
List<MavenProject> mavenProjects = mavenProjectFactory.create(baseDir, resources,
479+
new MavenRuntimeInformation("3.9.1"));
474480
List<MavenProject> sortedProjects = sut.sort(baseDir, mavenProjects);
475481

476482
// Expected order is parent, module-b, module-c, module-a
@@ -574,7 +580,8 @@ void sortModels() {
574580
new DummyResource(Path.of("pom.xml"), parentPom));
575581

576582
Path baseDir = Path.of(".").toAbsolutePath();
577-
List<MavenProject> mavenProjects = mavenProjectFactory.create(baseDir, resources);
583+
List<MavenProject> mavenProjects = mavenProjectFactory.create(baseDir, resources,
584+
new MavenRuntimeInformation("3.9.1"));
578585
List<MavenProject> sorted = sut.sort(baseDir, mavenProjects);
579586

580587
// Expected order is parent, module-b, module-c, module-a
@@ -695,7 +702,8 @@ void compareMavenProjectGetCollectedProjects(@TempDir Path tmpDir) {
695702
List<org.apache.maven.project.MavenProject> mavenSorted = mavenSession.getProjectDependencyGraph()
696703
.getSortedProjects();
697704

698-
List<MavenProject> mavenProjects = mavenProjectFactory.create(baseDir, resources);
705+
List<MavenProject> mavenProjects = mavenProjectFactory.create(baseDir, resources,
706+
new MavenRuntimeInformation("3.9.1"));
699707
List<MavenProject> sbmSorted = sut.sort(baseDir, mavenProjects);
700708

701709
assertThat(mavenSorted).hasSize(5);

0 commit comments

Comments
 (0)