in customization-base/src/main/java/com/azure/autorest/customization/implementation/ls/EclipseLanguageServerFacade.java [126:166]
private static Path getLanguageServerDirectory(int javaVersion, Logger logger, boolean forceReDownload)
throws IOException {
Path tmp = Paths.get(System.getProperty("java.io.tmpdir"));
Path autorestLanguageServer = tmp.resolve("autorest-java-language-server");
URL downloadUrl;
Path languageServerPath;
if (javaVersion < 17) {
// Eclipse JDT language server version 1.12.0 is the last version that supports Java 11, which is
// autorest.java's baseline.
downloadUrl
= URI.create(DOWNLOAD_BASE_URL + "1.12.0/jdt-language-server-1.12.0-202206011637.tar.gz").toURL();
languageServerPath = autorestLanguageServer.resolve("1.12.0");
} else {
// Eclipse JDT language server version 1.39.0 is the latest version that supports Java 17.
// In the future this else statement may need to be replaced with an else if as newer versions of
// Eclipse JDT language server may baseline on Java 21 (or later).
downloadUrl
= URI.create(DOWNLOAD_BASE_URL + "1.39.0/jdt-language-server-1.39.0-202408291433.tar.gz").toURL();
languageServerPath = autorestLanguageServer.resolve("1.39.0");
}
Path languageServer = languageServerPath.resolve("jdt-language-server");
if (!Files.exists(languageServer) || forceReDownload) {
Files.createDirectories(languageServer);
Path zipPath = languageServerPath.resolve(
// avoid concurrent download conflict
String.format("jdt-language-server-%d.tar.gz", System.currentTimeMillis()));
logger.info("Downloading Eclipse JDT language server from {} to {}", downloadUrl, zipPath);
try (InputStream in = downloadUrl.openStream()) {
Files.copy(in, zipPath);
}
logger.info("Downloaded Eclipse JDT language server to {}", zipPath);
return unzipLanguageServer(zipPath);
}
return languageServer;
}