Skip to content

Commit 2b7ffa7

Browse files
authored
Revamp/949 move projectresourceset related classes to sbm support rewrite (#950)
* Add method to sync recipe run * Moved ProjectResourceSet related classes to sbm-support-rewrite * Add temp integration test * Use new ProjectResourceSetFactory * Use RewriteMigrationResultMerger
1 parent 4a3e42e commit 2b7ffa7

File tree

102 files changed

+638
-257
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

102 files changed

+638
-257
lines changed

components/recipe-test-support/src/main/java/org/springframework/sbm/test/RecipeTestSupport.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ private RecipeTestSupport() {
6969
DefaultActionDeserializer.class,
7070
RewriteJavaSearchActionDeserializer.class,
7171
RewriteRecipeLoader.class,
72-
RewriteMigrationResultMerger.class,
72+
MigrationResultProjectContextMerger.class,
7373
RewriteSourceFileWrapper.class,
7474
SbmRecipeLoader.class,
7575
BasePackageCalculator.class,

components/sbm-core/src/main/java/org/springframework/sbm/build/api/Module.java

+21-11
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,17 @@
2121
import org.springframework.sbm.build.impl.MavenBuildFileUtil;
2222
import org.springframework.sbm.build.impl.OpenRewriteMavenBuildFile;
2323
import org.springframework.sbm.common.util.Verify;
24-
import org.springframework.sbm.engine.recipe.RewriteMigrationResultMerger;
24+
import org.springframework.sbm.engine.recipe.MigrationResultProjectContextMerger;
2525
import org.springframework.sbm.java.api.JavaSource;
2626
import org.springframework.sbm.java.api.JavaSourceLocation;
2727
import org.springframework.sbm.java.refactoring.JavaRefactoringFactory;
2828
import org.springframework.sbm.java.util.BasePackageCalculator;
2929
import org.springframework.sbm.parsers.JavaParserBuilder;
3030
import org.springframework.sbm.project.resource.ProjectResourceSet;
31+
import org.springframework.sbm.project.resource.ProjectResourceSetFactory;
32+
import org.springframework.sbm.project.resource.RewriteMigrationResultMerger;
3133
import org.springframework.sbm.project.resource.RewriteSourceFileHolder;
32-
import org.springframework.sbm.project.resource.filter.ProjectResourceFinder;
34+
import org.springframework.sbm.project.resource.finder.ProjectResourceFinder;
3335
import lombok.Getter;
3436
import lombok.RequiredArgsConstructor;
3537
import org.openrewrite.SourceFile;
@@ -59,6 +61,7 @@ public class Module {
5961
private final JavaParserBuilder javaParserBuilder;
6062
private final ExecutionContext executionContext;
6163
private final RewriteMigrationResultMerger rewriteMigrationResultMerger;
64+
private final ProjectResourceSetFactory projectResourceSetFactory;
6265

6366
public JavaSourceLocation getBaseJavaSourceLocation() {
6467
return getMainJavaSourceSet().getJavaSourceLocation();
@@ -142,7 +145,8 @@ public List<Module> getModules() {
142145
basePackageCalculator,
143146
javaParserBuilder,
144147
executionContext,
145-
rewriteMigrationResultMerger)
148+
rewriteMigrationResultMerger,
149+
projectResourceSetFactory)
146150
)
147151
.collect(Collectors.toList());
148152
} else {
@@ -156,8 +160,14 @@ public List<String> getDeclaredModules() {
156160

157161
public <T> T search(ProjectResourceFinder<T> finder) {
158162
List<RewriteSourceFileHolder<? extends SourceFile>> resources = getModuleResources();
159-
ProjectResourceSet filteredProjectResourceSet = new ProjectResourceSet(resources, executionContext);
160-
return finder.apply(filteredProjectResourceSet);
163+
if(!resources.isEmpty()) {
164+
Path baseDir = resources.get(0).getAbsoluteProjectDir();
165+
List<SourceFile> sourceFiles = getModuleResources().stream().map(RewriteSourceFileHolder::getSourceFile).map(SourceFile.class::cast).toList();
166+
ProjectResourceSet filteredProjectResourceSet = projectResourceSetFactory.create(baseDir, sourceFiles);
167+
return finder.apply(filteredProjectResourceSet);
168+
} else {
169+
return null;
170+
}
161171
}
162172

163173
private List<RewriteSourceFileHolder<? extends SourceFile>> getModuleResources() {
@@ -184,25 +194,25 @@ private boolean isResourceOnPath(RewriteSourceFileHolder<? extends SourceFile> r
184194
}
185195

186196
public <T> T searchMainResources(ProjectResourceFinder<T> finder) {
187-
ProjectResourceSet resourceSet = new ImmutableFilteringProjectResourceSet(projectResourceSet, (RewriteSourceFileHolder<? extends SourceFile> r) -> r.getAbsolutePath().normalize().startsWith(getMainResourceSet().getAbsolutePath().toAbsolutePath().normalize()));
197+
ProjectResourceSet resourceSet = new ImmutableFilteringProjectResourceSet(projectResourceSet, (RewriteSourceFileHolder<? extends SourceFile> r) -> r.getAbsolutePath().normalize().startsWith(getMainResourceSet().getAbsolutePath().toAbsolutePath().normalize()), rewriteMigrationResultMerger);
188198
return finder.apply(resourceSet);
189199
}
190200

191201
public <T> T searchMainJava(ProjectResourceFinder<T> finder) {
192-
ProjectResourceSet resourceSet = new ImmutableFilteringProjectResourceSet(projectResourceSet, (RewriteSourceFileHolder<? extends SourceFile> r) -> r.getAbsolutePath().normalize().startsWith(getMainJavaSourceSet().getAbsolutePath().toAbsolutePath().normalize()));
202+
ProjectResourceSet resourceSet = new ImmutableFilteringProjectResourceSet(projectResourceSet, (RewriteSourceFileHolder<? extends SourceFile> r) -> r.getAbsolutePath().normalize().startsWith(getMainJavaSourceSet().getAbsolutePath().toAbsolutePath().normalize()), rewriteMigrationResultMerger);
193203
return finder.apply(resourceSet);
194204
}
195205

196206
public <T> T searchTestResources(ProjectResourceFinder<T> finder) {
197207
Predicate<RewriteSourceFileHolder<? extends SourceFile>> predicate = (RewriteSourceFileHolder<? extends SourceFile> r) -> {
198208
return r.getAbsolutePath().normalize().startsWith(getTestResourceSet().getAbsolutePath().toAbsolutePath().normalize());
199209
};
200-
ProjectResourceSet resourceSet = new ImmutableFilteringProjectResourceSet(projectResourceSet, predicate);
210+
ProjectResourceSet resourceSet = new ImmutableFilteringProjectResourceSet(projectResourceSet, predicate, rewriteMigrationResultMerger);
201211
return finder.apply(resourceSet);
202212
}
203213

204214
public <T> T searchTestJava(ProjectResourceFinder<T> finder) {
205-
ProjectResourceSet resourceSet = new ImmutableFilteringProjectResourceSet(projectResourceSet, (RewriteSourceFileHolder<? extends SourceFile> r) -> r.getAbsolutePath().normalize().startsWith(getTestJavaSourceSet().getAbsolutePath().toAbsolutePath().normalize()));
215+
ProjectResourceSet resourceSet = new ImmutableFilteringProjectResourceSet(projectResourceSet, (RewriteSourceFileHolder<? extends SourceFile> r) -> r.getAbsolutePath().normalize().startsWith(getTestJavaSourceSet().getAbsolutePath().toAbsolutePath().normalize()), rewriteMigrationResultMerger);
206216
return finder.apply(resourceSet);
207217
}
208218

@@ -230,8 +240,8 @@ private class ImmutableFilteringProjectResourceSet extends ProjectResourceSet{
230240
private final ProjectResourceSet projectResourceSet;
231241
private final Predicate<RewriteSourceFileHolder<? extends SourceFile>> predicate;
232242

233-
public ImmutableFilteringProjectResourceSet(ProjectResourceSet projectResourceSet, Predicate<RewriteSourceFileHolder<? extends SourceFile>> predicate) {
234-
super(projectResourceSet.list(), executionContext);
243+
public ImmutableFilteringProjectResourceSet(ProjectResourceSet projectResourceSet, Predicate<RewriteSourceFileHolder<? extends SourceFile>> predicate, RewriteMigrationResultMerger migrationResultMerger) {
244+
super(projectResourceSet.list(), executionContext, migrationResultMerger);
235245
this.projectResourceSet = projectResourceSet;
236246
this.predicate = predicate;
237247
}

components/sbm-core/src/main/java/org/springframework/sbm/build/api/RootBuildFileFilter.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
package org.springframework.sbm.build.api;
1717

1818
import org.springframework.sbm.project.resource.ProjectResourceSet;
19-
import org.springframework.sbm.project.resource.filter.ProjectResourceFinder;
19+
import org.springframework.sbm.project.resource.finder.ProjectResourceFinder;
2020

2121
public class RootBuildFileFilter implements ProjectResourceFinder<BuildFile> {
2222
@Override
+3-3
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@
1616
package org.springframework.sbm.build.filter;
1717

1818
import org.springframework.sbm.build.api.BuildFile;
19-
import org.springframework.sbm.project.resource.filter.GenericTypeListFilter;
19+
import org.springframework.sbm.project.resource.finder.GenericTypeListFinder;
2020

21-
public class BuildFileProjectResourceFilter extends GenericTypeListFilter<BuildFile> {
22-
public BuildFileProjectResourceFilter() {
21+
public class BuildFileProjectResourceFinder extends GenericTypeListFinder<BuildFile> {
22+
public BuildFileProjectResourceFinder() {
2323
super(BuildFile.class);
2424
}
2525
}

components/sbm-core/src/main/java/org/springframework/sbm/common/migration/actions/DeleteFileMatchingPattern.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
package org.springframework.sbm.common.migration.actions;
1717

1818
import lombok.Setter;
19-
import org.springframework.sbm.common.filter.PathPatternMatchingProjectResourceFinder;
19+
import org.springframework.sbm.project.resource.finder.PathPatternMatchingProjectResourceFinder;
2020
import org.springframework.sbm.engine.context.ProjectContext;
2121
import org.springframework.sbm.engine.recipe.AbstractAction;
2222
import org.springframework.sbm.project.resource.ProjectResource;

components/sbm-core/src/main/java/org/springframework/sbm/common/migration/actions/MoveFilesAction.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
import org.springframework.sbm.engine.recipe.AbstractAction;
1919
import org.springframework.sbm.engine.context.ProjectContext;
2020
import org.springframework.sbm.project.resource.ProjectResource;
21-
import org.springframework.sbm.common.filter.PathPatternMatchingProjectResourceFinder;
21+
import org.springframework.sbm.project.resource.finder.PathPatternMatchingProjectResourceFinder;
2222
import lombok.Getter;
2323
import lombok.Setter;
2424

components/sbm-core/src/main/java/org/springframework/sbm/common/migration/conditions/FileMatchingPatternExist.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
package org.springframework.sbm.common.migration.conditions;
1717

1818
import lombok.*;
19-
import org.springframework.sbm.common.util.OsAgnosticPathMatcher;
19+
import org.springframework.sbm.utils.OsAgnosticPathMatcher;
2020
import org.springframework.sbm.engine.context.ProjectContext;
2121
import org.springframework.sbm.engine.recipe.Condition;
2222
import org.springframework.util.PathMatcher;

components/sbm-core/src/main/java/org/springframework/sbm/engine/commands/ApplyCommand.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
package org.springframework.sbm.engine.commands;
1717

1818
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
19-
import org.springframework.sbm.common.filter.DeletedResourcePathStringFilter;
20-
import org.springframework.sbm.common.filter.ModifiedResourcePathStringFilter;
19+
import org.springframework.sbm.project.resource.finder.DeletedResourcePathStringFilter;
20+
import org.springframework.sbm.project.resource.finder.ModifiedResourcePathStringFilter;
2121
import org.springframework.sbm.engine.context.ProjectContext;
2222
import org.springframework.sbm.engine.context.ProjectContextSerializer;
2323
import org.springframework.sbm.engine.git.GitSupport;

components/sbm-core/src/main/java/org/springframework/sbm/engine/commands/ApplyCommandHelper.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@
2121
import org.springframework.sbm.engine.recipe.RecipesBuilder;
2222
import org.springframework.sbm.engine.context.ProjectContext;
2323
import org.springframework.sbm.engine.context.ProjectContextSerializer;
24-
import org.springframework.sbm.common.filter.DeletedResourcePathStringFilter;
25-
import org.springframework.sbm.common.filter.ModifiedResourcePathStringFilter;
24+
import org.springframework.sbm.project.resource.finder.DeletedResourcePathStringFilter;
25+
import org.springframework.sbm.project.resource.finder.ModifiedResourcePathStringFilter;
2626
import lombok.RequiredArgsConstructor;
2727
import org.springframework.stereotype.Component;
2828

components/sbm-core/src/main/java/org/springframework/sbm/engine/context/ProjectContext.java

+11-7
Original file line numberDiff line numberDiff line change
@@ -24,16 +24,17 @@
2424
import org.springframework.sbm.build.api.Module;
2525
import org.springframework.sbm.build.api.BuildFile;
2626
import org.springframework.sbm.build.api.RootBuildFileFilter;
27-
import org.springframework.sbm.build.filter.BuildFileProjectResourceFilter;
28-
import org.springframework.sbm.engine.recipe.RewriteMigrationResultMerger;
27+
import org.springframework.sbm.build.filter.BuildFileProjectResourceFinder;
2928
import org.springframework.sbm.java.api.ProjectJavaSources;
3029
import org.springframework.sbm.java.impl.ProjectJavaSourcesImpl;
3130
import org.springframework.sbm.java.refactoring.JavaRefactoringFactory;
3231
import org.springframework.sbm.java.util.BasePackageCalculator;
3332
import org.springframework.sbm.parsers.JavaParserBuilder;
3433
import org.springframework.sbm.project.resource.ProjectResourceSet;
34+
import org.springframework.sbm.project.resource.ProjectResourceSetFactory;
35+
import org.springframework.sbm.project.resource.RewriteMigrationResultMerger;
3536
import org.springframework.sbm.project.resource.RewriteSourceFileHolder;
36-
import org.springframework.sbm.project.resource.filter.ProjectResourceFinder;
37+
import org.springframework.sbm.project.resource.finder.ProjectResourceFinder;
3738
import lombok.Getter;
3839
import lombok.Setter;
3940

@@ -53,15 +54,17 @@ public class ProjectContext {
5354
private final JavaParserBuilder javaParserBuilder;
5455
private final ExecutionContext executionContext;
5556
private final RewriteMigrationResultMerger rewriteMigrationResultMerger;
57+
private final ProjectResourceSetFactory projectResourceSetFactory;
5658

57-
public ProjectContext(JavaRefactoringFactory javaRefactoringFactory, Path projectRootDirectory, ProjectResourceSet projectResources, BasePackageCalculator basePackageCalculator, JavaParserBuilder javaParserBuilder, ExecutionContext executionContext, RewriteMigrationResultMerger rewriteMigrationResultMerger) {
59+
public ProjectContext(JavaRefactoringFactory javaRefactoringFactory, Path projectRootDirectory, ProjectResourceSet projectResources, BasePackageCalculator basePackageCalculator, JavaParserBuilder javaParserBuilder, ExecutionContext executionContext, RewriteMigrationResultMerger rewriteMigrationResultMerger, ProjectResourceSetFactory projectResourceSetFactory) {
5860
this.projectRootDirectory = projectRootDirectory.toAbsolutePath();
5961
this.projectResources = projectResources;
6062
this.javaRefactoringFactory = javaRefactoringFactory;
6163
this.basePackageCalculator = basePackageCalculator;
6264
this.javaParserBuilder = javaParserBuilder;
6365
this.executionContext = executionContext;
6466
this.rewriteMigrationResultMerger = rewriteMigrationResultMerger;
67+
this.projectResourceSetFactory = projectResourceSetFactory;
6568
}
6669

6770
public ProjectResourceSet getProjectResources() {
@@ -74,7 +77,7 @@ public ProjectResourceSet getProjectResources() {
7477
*/
7578
@Deprecated(forRemoval = false)
7679
public List<Module> getModules() {
77-
return search(new BuildFileProjectResourceFilter()).stream()
80+
return search(new BuildFileProjectResourceFinder()).stream()
7881
.map(this::mapToModule)
7982
.collect(Collectors.toList());
8083
}
@@ -92,7 +95,8 @@ private Module mapToModule(BuildFile buildFile) {
9295
basePackageCalculator,
9396
javaParserBuilder,
9497
executionContext,
95-
rewriteMigrationResultMerger
98+
rewriteMigrationResultMerger,
99+
projectResourceSetFactory
96100
);
97101
}
98102

@@ -128,7 +132,7 @@ public void apply(Recipe upgradeBootRecipe) {
128132
.toList();
129133

130134
RecipeRun recipeRun = upgradeBootRecipe.run(new InMemoryLargeSourceSet(ast), executionContext);
131-
rewriteMigrationResultMerger.mergeResults(this, recipeRun.getChangeset().getAllResults());
135+
rewriteMigrationResultMerger.mergeResults(getProjectResources(), recipeRun.getChangeset().getAllResults());
132136
// recipeRun.getChangeset().getAllResults().stream()
133137
// .forEach(r -> {
134138
//

components/sbm-core/src/main/java/org/springframework/sbm/engine/context/ProjectContextFactory.java

+5-6
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,12 @@
1717

1818
import org.openrewrite.ExecutionContext;
1919
import org.springframework.sbm.build.api.BuildFile;
20-
import org.springframework.sbm.build.filter.BuildFileProjectResourceFilter;
21-
import org.springframework.sbm.engine.recipe.RewriteMigrationResultMerger;
20+
import org.springframework.sbm.build.filter.BuildFileProjectResourceFinder;
21+
import org.springframework.sbm.engine.recipe.MigrationResultProjectContextMerger;
2222
import org.springframework.sbm.java.refactoring.JavaRefactoringFactory;
2323
import org.springframework.sbm.java.impl.ClasspathRegistry;
2424
import org.springframework.sbm.java.util.BasePackageCalculator;
2525
import org.springframework.sbm.parsers.JavaParserBuilder;
26-
import org.springframework.sbm.parsers.RewriteMavenArtifactDownloader;
27-
import org.springframework.sbm.project.parser.DependencyHelper;
2826
import org.springframework.sbm.project.resource.*;
2927
import lombok.RequiredArgsConstructor;
3028
import org.jetbrains.annotations.NotNull;
@@ -45,14 +43,15 @@ public class ProjectContextFactory {
4543
private final JavaParserBuilder javaParserBuilder;
4644
private final ExecutionContext executionContext;
4745
private final RewriteMigrationResultMerger rewriteMigrationResultMerger;
46+
private final ProjectResourceSetFactory projectResourceSetFactory;
4847

4948
@NotNull
5049
public ProjectContext createProjectContext(Path projectDir, ProjectResourceSet projectResourceSet) {
5150
projectResourceSetHolder.setProjectResourceSet(projectResourceSet);
5251
applyProjectResourceWrappers(projectResourceSet);
53-
List<BuildFile> buildFiles = new BuildFileProjectResourceFilter().apply(projectResourceSet);
52+
List<BuildFile> buildFiles = new BuildFileProjectResourceFinder().apply(projectResourceSet);
5453
ClasspathRegistry.initializeFromBuildFiles(buildFiles);
55-
ProjectContext projectContext = new ProjectContext(javaRefactoringFactory, projectDir, projectResourceSet, basePackageCalculator, javaParserBuilder, executionContext, rewriteMigrationResultMerger);
54+
ProjectContext projectContext = new ProjectContext(javaRefactoringFactory, projectDir, projectResourceSet, basePackageCalculator, javaParserBuilder, executionContext, rewriteMigrationResultMerger, projectResourceSetFactory);
5655
return projectContext;
5756
}
5857

components/sbm-core/src/main/java/org/springframework/sbm/engine/precondition/JavaSourceDirExistsPreconditionCheck.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
package org.springframework.sbm.engine.precondition;
1717

1818
import org.springframework.core.io.Resource;
19-
import org.springframework.sbm.common.util.OsAgnosticPathMatcher;
19+
import org.springframework.sbm.utils.OsAgnosticPathMatcher;
2020
import org.springframework.sbm.utils.LinuxWindowsPathUnifier;
2121
import org.springframework.stereotype.Component;
2222
import org.springframework.util.PathMatcher;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
/*
2+
* Copyright 2021 - 2023 the original author or authors.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* https://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
package org.springframework.sbm.engine.recipe;
17+
18+
import lombok.RequiredArgsConstructor;
19+
import org.openrewrite.Result;
20+
import org.openrewrite.SourceFile;
21+
import org.springframework.sbm.project.resource.RewriteMigrationResultMerger;
22+
import org.springframework.sbm.project.resource.finder.AbsolutePathResourceFinder;
23+
import org.springframework.sbm.engine.context.ProjectContext;
24+
import org.springframework.sbm.project.RewriteSourceFileWrapper;
25+
import org.springframework.sbm.project.resource.ProjectResourceSet;
26+
import org.springframework.sbm.project.resource.RewriteSourceFileHolder;
27+
import org.springframework.stereotype.Component;
28+
29+
import java.nio.file.Path;
30+
import java.util.List;
31+
import java.util.Optional;
32+
33+
@Component
34+
@RequiredArgsConstructor
35+
public class MigrationResultProjectContextMerger {
36+
37+
private final RewriteMigrationResultMerger rewriteMigrationResultMerger;
38+
39+
public void mergeResults(ProjectContext context, List<Result> results) {
40+
rewriteMigrationResultMerger.mergeResults(context.getProjectResources(), results);
41+
}
42+
}

components/sbm-core/src/main/java/org/springframework/sbm/engine/recipe/OpenRewriteRecipeAdapterAction.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public class OpenRewriteRecipeAdapterAction extends AbstractAction {
3434

3535
@JsonIgnore
3636
@Autowired
37-
private RewriteMigrationResultMerger resultMerger;
37+
private MigrationResultProjectContextMerger resultMerger;
3838
@JsonIgnore
3939
@Autowired
4040
private ExecutionContext executionContext;

components/sbm-core/src/main/java/org/springframework/sbm/engine/recipe/OpenRewriteSourceFilesFinder.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
import org.openrewrite.SourceFile;
1919
import org.springframework.sbm.project.resource.ProjectResourceSet;
2020
import org.springframework.sbm.project.resource.RewriteSourceFileHolder;
21-
import org.springframework.sbm.project.resource.filter.ProjectResourceFinder;
21+
import org.springframework.sbm.project.resource.finder.ProjectResourceFinder;
2222

2323
import java.util.List;
2424
import java.util.stream.Collectors;

0 commit comments

Comments
 (0)