Skip to content

Commit 4510a56

Browse files
committed
Inline getSdkManJDKs() to use static field
1 parent c78f59f commit 4510a56

File tree

1 file changed

+17
-27
lines changed

1 file changed

+17
-27
lines changed

src/main/java/org/openrewrite/java/migrate/UpdateSdkMan.java

Lines changed: 17 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -31,19 +31,23 @@
3131

3232
import static java.util.Objects.requireNonNull;
3333

34-
3534
@Value
3635
@EqualsAndHashCode(callSuper = false)
3736
public class UpdateSdkMan extends Recipe {
38-
static final String SDKMAN_CONFIG_FILE_PATTERN = "**/.sdkmanrc";
37+
private static final String SDKMAN_CONFIG_FILE_PATTERN = ".sdkmanrc";
38+
3939
/**
4040
* Retrieve from https://api.sdkman.io/2/candidates/java/linuxx64/versions/all
4141
* TODO: Investifate the best way to get the latest versions from SDKMAN
4242
*/
4343
private static final String SDKMAN_CANDIDATES_LIST = "11.0.14.1-jbr,11.0.15-trava,11.0.25-albba,11.0.25-amzn,11.0.25-kona,11.0.25-librca,11.0.25-ms,11.0.25-sapmchn,11.0.25-sem,11.0.25-tem,11.0.25-zulu,11.0.25.fx-librca,11.0.25.fx-zulu,17.0.12-graal,17.0.12-jbr,17.0.12-oracle,17.0.13-albba,17.0.13-amzn,17.0.13-kona,17.0.13-librca,17.0.13-ms,17.0.13-sapmchn,17.0.13-sem,17.0.13-tem,17.0.13-zulu,17.0.13.crac-librca,17.0.13.crac-zulu,17.0.13.fx-librca,17.0.13.fx-zulu,17.0.9-graalce,21.0.2-graalce,21.0.2-open,21.0.5-amzn,21.0.5-graal,21.0.5-jbr,21.0.5-kona,21.0.5-librca,21.0.5-ms,21.0.5-oracle,21.0.5-sapmchn,21.0.5-sem,21.0.5-tem,21.0.5-zulu,21.0.5.crac-librca,21.0.5.crac-zulu,21.0.5.fx-librca,21.0.5.fx-zulu,22.0.2-oracle,22.1.0.1.r11-gln,22.1.0.1.r17-gln,22.3.5.r11-nik,22.3.5.r17-mandrel,22.3.5.r17-nik,23-open,23.0.1-amzn,23.0.1-graal,23.0.1-graalce,23.0.1-librca,23.0.1-oracle,23.0.1-sapmchn,23.0.1-tem,23.0.1-zulu,23.0.1.crac-zulu,23.0.1.fx-librca,23.0.1.fx-zulu,23.0.6.fx-nik,23.0.6.r17-mandrel,23.0.6.r17-nik,23.1.5.fx-nik,23.1.5.r21-mandrel,23.1.5.r21-nik,24.0.2.r22-mandrel,24.1.1.r23-mandrel,24.1.1.r23-nik,24.ea.22-graal,24.ea.23-graal,24.ea.24-graal,24.ea.26-open,24.ea.27-open,24.ea.28-open,24.ea.29-open,25.ea.1-graal,25.ea.1-open,25.ea.2-open,25.ea.3-open,6.0.119-zulu,7.0.352-zulu,8.0.282-trava,8.0.432-albba,8.0.432-amzn,8.0.432-kona,8.0.432-librca,8.0.432-sem,8.0.432-tem,8.0.432-zulu,8.0.432.fx-librca,8.0.432.fx-zulu";
44-
45-
@Nullable
46-
private static Map<String, Set<String>> sdkmanJDKs;
44+
private static final Map<String, Set<String>> sdkmanJDKs = Arrays.stream(SDKMAN_CANDIDATES_LIST.split(","))
45+
.collect(HashMap::new, (map, candidate) -> {
46+
String[] parts = candidate.split("-");
47+
String dist = parts[1];
48+
String version = parts[0];
49+
map.computeIfAbsent(dist, k -> new HashSet<>()).add(version);
50+
}, HashMap::putAll);
4751

4852
@Option(displayName = "Java version", description = "The Java version to update to.", example = "17")
4953
@Nullable
@@ -57,46 +61,33 @@ private static String getMajorVersion(String version) {
5761
return version.split("\\.")[0];
5862
}
5963

60-
private static Map<String, Set<String>> getSdkManJDKs() {
61-
if (sdkmanJDKs == null) {
62-
Map<String, Set<String>> jdks = new HashMap<>();
63-
for (String candidate : SDKMAN_CANDIDATES_LIST.split(",")) {
64-
String[] parts = candidate.split("-");
65-
String dist = parts[1];
66-
String version = parts[0];
67-
jdks.computeIfAbsent(dist, k -> new HashSet<>()).add(version);
68-
}
69-
sdkmanJDKs = jdks;
70-
}
71-
return sdkmanJDKs;
72-
}
73-
7464
@Override
7565
public String getDisplayName() {
76-
return "Update SDKMan java version";
66+
return "Update SDKMan Java version";
7767
}
7868

7969
@Override
8070
public String getDescription() {
71+
//language=markdown
8172
return "Update the SDKMAN JDK version in the `.sdkmanrc` file. Given a major release (e.g., 17), the recipe " +
82-
"will update the current distribution to the current default SDKMAN version of the specified major " +
83-
"release. The distribution option can be used to specify a specific JVM distribution. " +
84-
"Note that these must correspond to valid SDKMAN distributions."; }
73+
"will update the current distribution to the current default SDKMAN version of the specified major " +
74+
"release. The distribution option can be used to specify a specific JVM distribution. " +
75+
"Note that these must correspond to valid SDKMAN distributions.";
76+
}
8577

8678
private Optional<String> getNewJDK(String currentVersion, String currentDist) {
8779
if (currentVersion.equals(newVersion) && currentDist.equals(newDistribution)) {
8880
return Optional.empty();
8981
}
9082

91-
Map<String, Set<String>> jdks = getSdkManJDKs();
9283
String dist = newDistribution == null ? currentDist : newDistribution;
9384
String ver = newVersion == null ? currentVersion : newVersion;
9485

95-
if (!jdks.containsKey(dist)) {
86+
if (!sdkmanJDKs.containsKey(dist)) {
9687
return Optional.empty();
9788
}
9889

99-
Optional<String> sdkmanVersion = jdks.get(dist).stream().filter(v -> v.startsWith(ver) || v.startsWith(getMajorVersion(ver))).reduce((first, second) -> {
90+
Optional<String> sdkmanVersion = sdkmanJDKs.get(dist).stream().filter(v -> v.startsWith(ver) || v.startsWith(getMajorVersion(ver))).reduce((first, second) -> {
10091
if (first.equals(ver)) {
10192
return first;
10293
} else if (second.equals(ver)) {
@@ -124,7 +115,6 @@ private Optional<String> getNewJDK(String currentVersion, String currentDist) {
124115

125116
@Override
126117
public TreeVisitor<?, ExecutionContext> getVisitor() {
127-
128118
TreeVisitor<?, ExecutionContext> visitor = new TreeVisitor<Tree, ExecutionContext>() {
129119
@Override
130120
public Tree visit(@Nullable Tree tree, ExecutionContext ctx) {

0 commit comments

Comments
 (0)