Skip to content

Commit 1c07d0e

Browse files
committed
Fixing Module.getModuleResources
1 parent 3244765 commit 1c07d0e

File tree

3 files changed

+54
-16
lines changed

3 files changed

+54
-16
lines changed

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

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -145,9 +145,26 @@ public <T> T search(ProjectResourceFinder<T> finder) {
145145
}
146146

147147
private List<RewriteSourceFileHolder<? extends SourceFile>> getModuleResources() {
148-
return projectResourceSet.stream()
149-
.filter(r -> r.getAbsolutePath().toString().startsWith(projectRootDir.resolve(modulePath).toString()))
148+
List<Path> moduleSourceSets = new ArrayList<>();
149+
moduleSourceSets.addAll(buildFile.getSourceFolders()); // src/main/java, src/gen/java --> /module1/src/main/java
150+
moduleSourceSets.addAll(buildFile.getResourceFolders());
151+
moduleSourceSets.addAll(buildFile.getTestSourceFolders());
152+
moduleSourceSets.addAll(buildFile.getTestResourceFolders());
153+
154+
List<RewriteSourceFileHolder<? extends SourceFile>> moduleResources = moduleSourceSets
155+
.stream()
156+
.flatMap(p -> projectResourceSet.stream().filter(r -> this.isResourceOnPath(r, p)))
150157
.collect(Collectors.toList());
158+
// add pom.xml as it is not part of any source set
159+
moduleResources.add((OpenRewriteMavenBuildFile)getBuildFile());
160+
return moduleResources;
161+
}
162+
163+
/**
164+
* Decides if a given {@code resource} is on the given {@code path}.
165+
*/
166+
private boolean isResourceOnPath(RewriteSourceFileHolder<? extends SourceFile> resource, Path path) {
167+
return resource.getAbsolutePath().toString().startsWith(path.toString());
151168
}
152169

153170
public <T> T searchMainResources(ProjectResourceFinder<T> finder) {
@@ -175,7 +192,7 @@ public <T> T searchTestJava(ProjectResourceFinder<T> finder) {
175192
*/
176193
public boolean contains(Path resourcePath) {
177194
Verify.absolutePath(resourcePath);
178-
return getModuleResources().stream().anyMatch(r -> r.getAbsolutePath().toString().equals(resourcePath.toString()));
195+
return getModuleResources().stream().anyMatch(r -> r.getAbsolutePath().equals(resourcePath));
179196
}
180197

181198
/**
Lines changed: 32 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
import static org.assertj.core.api.Assertions.assertThat;
2727
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
2828

29-
class Module_getModuleResources_Test {
29+
class Module_contains_Test {
3030
@Test
3131
void singleModuleProject() {
3232
String rootPom = PomBuilder
@@ -78,6 +78,9 @@ void multiModuleProject() {
7878

7979
String module2Pom = PomBuilder.buiildPom("com.example:parent:1.0", "module2").build();
8080

81+
String moduleInModule1Pom = PomBuilder.buiildPom("com.example:parent:1.0", "module-in-module1").build();
82+
83+
8184
String javaClass = """
8285
package com.example;
8386
public class SomeClass {}
@@ -86,35 +89,51 @@ public class SomeClass {}
8689
package com.example;
8790
public class SomeClassTest {}
8891
""";
92+
93+
// shares module path of module1 and module1/module-in-module1
94+
String sourcePathString = "module1/module-in-module1/src/main/resources/module-in-module1.txt";
95+
8996
ProjectContext context = TestProjectContext
9097
.buildProjectContext()
98+
// parent module
99+
.withMavenBuildFileSource("pom.xml", rootPom)
100+
.addProjectResource("not-in-source-set.txt", "")
101+
// module1
91102
.withMavenBuildFileSource("module1/pom.xml", module1Pom)
92103
.addJavaSource("module1/src/test/java", testjavaClass)
93104
.addProjectResource("module1/src/test/resources/test-resource-found.txt", "")
94-
105+
// module-in-module1
106+
.withMavenBuildFileSource("module1/module-in-module1/pom.xml", moduleInModule1Pom)
107+
.addProjectResource(sourcePathString, "")
108+
// module2
95109
.withMavenBuildFileSource("module2/pom.xml", module2Pom)
96110
.addJavaSource("module2/src/main/java", javaClass)
97111
.addProjectResource("module2/src/main/resources/resource-found.txt", "")
98112

99-
.withMavenBuildFileSource("pom.xml", rootPom)
100-
.addProjectResource("not-in-source-set.txt", "")
101-
102-
103113
.build();
104114

105115
Module root = context.getApplicationModules().getModule("root");
106116
Path rootPath = TestProjectContext.getDefaultProjectRoot();
107117
assertThat(root.contains(rootPath.resolve("pom.xml"))).isTrue();
108118
assertThat(root.contains(rootPath.resolve("src/main/java/com/example/SomeClass.java"))).isFalse();
119+
assertThat(root.contains(rootPath.resolve("not-in-source-set.txt"))).isFalse();
109120

110-
Module module1 = context.getApplicationModules().getModule("module2");
121+
Module module1 = context.getApplicationModules().getModule("module1");
111122

112-
assertThat(module1.contains(rootPath.resolve("module2//main/java/com/example/SomeClass.java"))).isFalse();
113-
assertThat(
114-
module1.contains(rootPath.resolve("module2/src/test/java/com/example/SomeClassTest.java"))).isFalse();
115-
assertThat(module1.contains(rootPath.resolve("module2/src/main/resources/resource-found.txt"))).isTrue();
116-
assertThat(root.contains(rootPath.resolve("src/test/resources/test-resource-found.txt"))).isFalse();
117-
assertThat(root.contains(rootPath.resolve("not-in-source-set.txt"))).isFalse();
123+
// precondition
124+
Path resourceInSubmodule = rootPath.resolve(sourcePathString);
125+
assertThat(context.getProjectResources().stream().anyMatch(r -> r.getAbsolutePath().equals(resourceInSubmodule))).isTrue();
126+
127+
assertThat(module1.contains(rootPath.resolve(sourcePathString))).isFalse();
128+
Module moduleInModule1 = context.getApplicationModules().getModule("module1/module-in-module1");
129+
assertThat(moduleInModule1.contains(resourceInSubmodule)).isTrue();
130+
131+
assertThat(module1.contains(rootPath.resolve("module1/src/test/java/com/example/SomeClassTest.java"))).isTrue();
132+
assertThat(module1.contains(rootPath.resolve("module1/src/test/resources/test-resource-found.txt"))).isTrue();
133+
134+
Module module2 = context.getApplicationModules().getModule("module2");
135+
assertThat(module2.contains(rootPath.resolve("module2/main/java/com/example/SomeClass.java"))).isFalse();
136+
assertThat(module2.contains(rootPath.resolve("module2/src/main/resources/resource-found.txt"))).isTrue();
118137
}
119138

120139
@Test

components/sbm-recipes-mule-to-boot/src/main/java/org/springframework/sbm/mule/resource/MuleXmlProjectResourceRegistrar.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ public boolean shouldHandle(RewriteSourceFileHolder<? extends SourceFile> rewrit
3838

3939
@Override
4040
public MuleXml wrapRewriteSourceFileHolder(RewriteSourceFileHolder<? extends SourceFile> rewriteSourceFileHolder) {
41+
42+
4143
Parser.Input input = new Parser.Input(rewriteSourceFileHolder.getAbsolutePath(), () -> new ByteArrayInputStream(rewriteSourceFileHolder.print().getBytes(StandardCharsets.UTF_8)));
4244
List<Xml.Document> documents = new XmlParser().parseInputs(List.of(input), rewriteSourceFileHolder.getAbsoluteProjectDir(), new RewriteExecutionContext());
4345
return new MuleXml(rewriteSourceFileHolder.getAbsoluteProjectDir(), documents.get(0));

0 commit comments

Comments
 (0)