21
21
import org .springframework .sbm .build .impl .MavenBuildFileUtil ;
22
22
import org .springframework .sbm .build .impl .OpenRewriteMavenBuildFile ;
23
23
import org .springframework .sbm .common .util .Verify ;
24
- import org .springframework .sbm .engine .recipe .RewriteMigrationResultMerger ;
24
+ import org .springframework .sbm .engine .recipe .MigrationResultProjectContextMerger ;
25
25
import org .springframework .sbm .java .api .JavaSource ;
26
26
import org .springframework .sbm .java .api .JavaSourceLocation ;
27
27
import org .springframework .sbm .java .refactoring .JavaRefactoringFactory ;
28
28
import org .springframework .sbm .java .util .BasePackageCalculator ;
29
29
import org .springframework .sbm .parsers .JavaParserBuilder ;
30
30
import org .springframework .sbm .project .resource .ProjectResourceSet ;
31
+ import org .springframework .sbm .project .resource .ProjectResourceSetFactory ;
32
+ import org .springframework .sbm .project .resource .RewriteMigrationResultMerger ;
31
33
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 ;
33
35
import lombok .Getter ;
34
36
import lombok .RequiredArgsConstructor ;
35
37
import org .openrewrite .SourceFile ;
@@ -59,6 +61,7 @@ public class Module {
59
61
private final JavaParserBuilder javaParserBuilder ;
60
62
private final ExecutionContext executionContext ;
61
63
private final RewriteMigrationResultMerger rewriteMigrationResultMerger ;
64
+ private final ProjectResourceSetFactory projectResourceSetFactory ;
62
65
63
66
public JavaSourceLocation getBaseJavaSourceLocation () {
64
67
return getMainJavaSourceSet ().getJavaSourceLocation ();
@@ -142,7 +145,8 @@ public List<Module> getModules() {
142
145
basePackageCalculator ,
143
146
javaParserBuilder ,
144
147
executionContext ,
145
- rewriteMigrationResultMerger )
148
+ rewriteMigrationResultMerger ,
149
+ projectResourceSetFactory )
146
150
)
147
151
.collect (Collectors .toList ());
148
152
} else {
@@ -156,8 +160,14 @@ public List<String> getDeclaredModules() {
156
160
157
161
public <T > T search (ProjectResourceFinder <T > finder ) {
158
162
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
+ }
161
171
}
162
172
163
173
private List <RewriteSourceFileHolder <? extends SourceFile >> getModuleResources () {
@@ -184,25 +194,25 @@ private boolean isResourceOnPath(RewriteSourceFileHolder<? extends SourceFile> r
184
194
}
185
195
186
196
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 );
188
198
return finder .apply (resourceSet );
189
199
}
190
200
191
201
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 );
193
203
return finder .apply (resourceSet );
194
204
}
195
205
196
206
public <T > T searchTestResources (ProjectResourceFinder <T > finder ) {
197
207
Predicate <RewriteSourceFileHolder <? extends SourceFile >> predicate = (RewriteSourceFileHolder <? extends SourceFile > r ) -> {
198
208
return r .getAbsolutePath ().normalize ().startsWith (getTestResourceSet ().getAbsolutePath ().toAbsolutePath ().normalize ());
199
209
};
200
- ProjectResourceSet resourceSet = new ImmutableFilteringProjectResourceSet (projectResourceSet , predicate );
210
+ ProjectResourceSet resourceSet = new ImmutableFilteringProjectResourceSet (projectResourceSet , predicate , rewriteMigrationResultMerger );
201
211
return finder .apply (resourceSet );
202
212
}
203
213
204
214
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 );
206
216
return finder .apply (resourceSet );
207
217
}
208
218
@@ -230,8 +240,8 @@ private class ImmutableFilteringProjectResourceSet extends ProjectResourceSet{
230
240
private final ProjectResourceSet projectResourceSet ;
231
241
private final Predicate <RewriteSourceFileHolder <? extends SourceFile >> predicate ;
232
242
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 );
235
245
this .projectResourceSet = projectResourceSet ;
236
246
this .predicate = predicate ;
237
247
}
0 commit comments