Skip to content

Commit b9b436f

Browse files
Fix JavaSourceSet#gavFromPath for TypeTable jar layout (#7543)
1 parent 72febb9 commit b9b436f

2 files changed

Lines changed: 34 additions & 4 deletions

File tree

rewrite-java/src/main/java/org/openrewrite/java/marker/JavaSourceSet.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -471,10 +471,15 @@ public static JavaSourceSet build(String sourceSetName, Collection<Path> classpa
471471
version = pathParts.get(pathParts.size() - 3);
472472
} else if (pathParts.contains(".tt")) {
473473
int ttIndex = pathParts.indexOf(".tt");
474-
if (pathParts.size() - ttIndex > 3) {
475-
groupId = String.join(".", pathParts.subList(ttIndex + 1, pathParts.size() - 2));
476-
artifactId = pathParts.get(pathParts.size() - 2);
477-
version = pathParts.get(pathParts.size() - 1);
474+
int last = pathParts.size() - 1;
475+
// Legacy layout ends at the version directory; post-#7528 layout adds
476+
// a trailing <artifact>-<version>.jar file inside the version directory.
477+
int versionIndex = pathParts.get(last).endsWith(".jar") ? last - 1 : last;
478+
int artifactIndex = versionIndex - 1;
479+
if (artifactIndex - (ttIndex + 1) >= 1) {
480+
groupId = String.join(".", pathParts.subList(ttIndex + 1, artifactIndex));
481+
artifactId = pathParts.get(artifactIndex);
482+
version = pathParts.get(versionIndex);
478483
}
479484
} else if (pathParts.size() >= 4) {
480485
version = pathParts.get(pathParts.size() - 2);

rewrite-java/src/test/java/org/openrewrite/java/marker/JavaSourceSetTest.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
import java.nio.file.Files;
2323
import java.nio.file.Path;
24+
import java.nio.file.Paths;
2425
import java.util.List;
2526
import java.util.jar.JarEntry;
2627
import java.util.jar.JarOutputStream;
@@ -71,4 +72,28 @@ private static void writeEntry(JarOutputStream jos, String name, byte[] content)
7172
jos.write(content);
7273
jos.closeEntry();
7374
}
75+
76+
@Test
77+
void gavFromTypeTableClassesDirPath() {
78+
Path p = Paths.get(System.getProperty("user.home"),
79+
".rewrite/classpath/.tt/org/junit/jupiter/junit-jupiter-api/6.0.2");
80+
assertThat(JavaSourceSet.gavFromPath(p))
81+
.isEqualTo("org.junit.jupiter:junit-jupiter-api:6.0.2");
82+
}
83+
84+
@Test
85+
void gavFromTypeTableJarPath() {
86+
Path p = Paths.get(System.getProperty("user.home"),
87+
".rewrite/classpath/.tt/org/junit/jupiter/junit-jupiter-api/6.0.2/junit-jupiter-api-6.0.2.jar");
88+
assertThat(JavaSourceSet.gavFromPath(p))
89+
.isEqualTo("org.junit.jupiter:junit-jupiter-api:6.0.2");
90+
}
91+
92+
@Test
93+
void gavFromGradleCachePath() {
94+
Path p = Paths.get(System.getProperty("user.home"),
95+
".gradle/caches/modules-2/files-2.1/org.openrewrite/rewrite-core/8.32.0/64ddcc371f1bf29593b4b27e907757d5554d1a83/rewrite-core-8.32.0.jar");
96+
assertThat(JavaSourceSet.gavFromPath(p))
97+
.isEqualTo("org.openrewrite:rewrite-core:8.32.0");
98+
}
7499
}

0 commit comments

Comments
 (0)