Skip to content

Commit 2700921

Browse files
committed
fix: caching now works
1 parent 142ce93 commit 2700921

2 files changed

Lines changed: 42 additions & 8 deletions

File tree

pom.xml

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@
3333
<maven.compiler.target>11</maven.compiler.target>
3434
<native.maven.plugin>0.11.2</native.maven.plugin>
3535
<mainClass>org.codejive.jvm.Main</mainClass>
36-
<version.devkitman>0.4.2</version.devkitman>
36+
<version.devkitman>0.4.3</version.devkitman>
37+
<version.httpclient>5.6</version.httpclient>
3738
<version.asciitable>0.3.2</version.asciitable>
3839
<version.picocli>4.7.7</version.picocli>
3940
<version.snakeyaml>2.5</version.snakeyaml>
@@ -51,6 +52,11 @@
5152
<artifactId>devkitman</artifactId>
5253
<version>${version.devkitman}</version>
5354
</dependency>
55+
<dependency>
56+
<groupId>org.apache.httpcomponents.client5</groupId>
57+
<artifactId>httpclient5-cache</artifactId>
58+
<version>${version.httpclient}</version>
59+
</dependency>
5460
<dependency>
5561
<groupId>de.vandermeer</groupId>
5662
<artifactId>asciitable</artifactId>
@@ -76,7 +82,12 @@
7682
<artifactId>slf4j-simple</artifactId>
7783
<version>${version.slf4j}</version>
7884
</dependency>
79-
85+
<dependency>
86+
<groupId>org.slf4j</groupId>
87+
<artifactId>jcl-over-slf4j</artifactId>
88+
<version>${version.slf4j}</version>
89+
</dependency>
90+
8091
<!-- Test dependencies -->
8192
<dependency>
8293
<groupId>org.junit.jupiter</groupId>

src/main/java/org/codejive/jvm/Main.java

Lines changed: 29 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ abstract static class CmdBase implements Callable<Integer> {}
8585
static class ListInstalled extends CmdBase {
8686
@Override
8787
public Integer call() {
88-
JdkManager manager = JdkManager.create();
88+
JdkManager manager = createJdkManager();
8989
manager.getOrInstallJdk("11+");
9090
List<Jdk.InstalledJdk> jdks = manager.listInstalledJdks();
9191
jdks.sort(Comparator.<Jdk>naturalOrder().reversed());
@@ -119,7 +119,7 @@ static class ListAvailable extends CmdBase {
119119
@Override
120120
public Integer call() {
121121
System.err.println("Retrieving available Java versions, this can take a moment...");
122-
JdkManager manager = JdkManager.create();
122+
JdkManager manager = createJdkManager();
123123
List<Jdk.AvailableJdk> jdks = manager.listAvailableJdks();
124124
jdks.sort(Comparator.<Jdk>naturalOrder().reversed());
125125

@@ -183,7 +183,7 @@ static class Install extends CmdBase {
183183
@Override
184184
public Integer call() {
185185
String versionOrId = javaVersionParamMixin.getVersionOrId(quiet);
186-
JdkManager jdkMan = JdkManager.create();
186+
JdkManager jdkMan = createJdkManager();
187187
Jdk jdk = jdkMan.getInstalledJdk(versionOrId, JdkProvider.Predicates.canUpdate);
188188
if (!force && jdk != null) {
189189
if (!quiet) {
@@ -226,7 +226,7 @@ void setJavaVersion(String versionOrId) {
226226

227227
@Override
228228
public Integer call() {
229-
JdkManager jdkMan = JdkManager.create();
229+
JdkManager jdkMan = createJdkManager();
230230
Jdk.InstalledJdk jdk =
231231
jdkMan.getInstalledJdk(versionOrId, JdkProvider.Predicates.canUpdate);
232232
if (jdk == null) {
@@ -283,7 +283,7 @@ static class Env extends CmdBase {
283283

284284
@Override
285285
public Integer call() {
286-
JdkManager jdkMan = JdkManager.create();
286+
JdkManager jdkMan = createJdkManager();
287287
Jdk jdk = jdkMan.getOrInstallJdk(javaVersionParamMixin.getVersionOrId(quiet));
288288
return 0;
289289
}
@@ -305,7 +305,7 @@ public Integer call() throws IOException {
305305
if (cmd.isEmpty()) {
306306
return 0;
307307
}
308-
JdkManager jdkMan = JdkManager.create();
308+
JdkManager jdkMan = createJdkManager();
309309
Jdk.InstalledJdk jdk =
310310
jdkMan.getOrInstallJdk(javaVersionOptionMixin.getVersionOrId(quiet));
311311
if (Paths.get(cmd.get(0)).getNameCount() == 1) {
@@ -430,6 +430,29 @@ private static boolean isId(String s) {
430430
return s.matches("[a-zA-Z0-9_\\-.]+");
431431
}
432432

433+
private static JdkManager createJdkManager() {
434+
Path installPath = JBangJdkProvider.getJBangJdkDir();
435+
Path cachePath = cachePath();
436+
JdkDiscovery.Config cfg = new JdkDiscovery.Config(installPath, cachePath, null);
437+
cfg.properties()
438+
.put("link", JBangJdkProvider.getJBangConfigDir().resolve("currentjdk").toString());
439+
return JdkManager.builder().providers(JdkProviders.instance().all(cfg)).build();
440+
}
441+
442+
private static Path cachePath() {
443+
String cachePath = System.getenv("JVM_CACHE");
444+
Path cacheDir = null;
445+
if (cachePath == null) {
446+
cachePath = System.getProperty("jvm.cache");
447+
if (cachePath != null) {
448+
cacheDir = Paths.get(cachePath);
449+
} else {
450+
cacheDir = Paths.get(System.getProperty("user.home"), ".cache", "jvm");
451+
}
452+
}
453+
return cacheDir;
454+
}
455+
433456
static CommandLine.IExecutionExceptionHandler errorHandler =
434457
(ex, commandLine, parseResult) -> {
435458
System.err.println("Error: " + ex.getMessage());

0 commit comments

Comments
 (0)