Skip to content

Commit 3ac695c

Browse files
committed
Update lsp4jakarta to 0.2.6-SNAPSHOT, update Eclipse repo endpoint for snapshots
1 parent a389e8a commit 3ac695c

3 files changed

Lines changed: 49 additions & 6 deletions

File tree

gulpfile.js

Lines changed: 47 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@ const libertyVersion = "2.4.1";
2323
const jakartaGroupId = "org.eclipse.lsp4jakarta";
2424
const jakartaJdtArtifactId = "org.eclipse.lsp4jakarta.jdt.core";
2525
const jakartaLSArtifactId = "org.eclipse.lsp4jakarta.ls";
26-
const jakartaVersion = "0.2.5";
26+
const jakartaVersion = "0.2.6-SNAPSHOT";
2727
var lclsReleaseLevel = "releases"; //snapshots or releases
28-
var jakartaReleaseLevel = "releases";
28+
var jakartaReleaseLevel = "snapshots";
2929

3030
const libertyLemminxName = "liberty-langserver-lemminx-" + libertyVersion + "-jar-with-dependencies.jar";
3131
const libertyLemminxDir = "../liberty-language-server/lemminx-liberty";
@@ -95,8 +95,8 @@ gulp.task("downloadLSP4JakartaJars", async function() {
9595
var jakartaLSURL;
9696

9797
if (jakartaReleaseLevel === "snapshots") {
98-
jakartaJDTURL = getEclipseJarURL(jakartaGroupId, jakartaJdtArtifactId, jakartaVersion, null, true);
99-
jakartaLSURL = getEclipseJarURL(jakartaGroupId, jakartaLSArtifactId, jakartaVersion, "jar-with-dependencies", true);
98+
jakartaJDTURL = await generateEclipseSnapshotJarURL(jakartaGroupId, jakartaJdtArtifactId, jakartaVersion, null);
99+
jakartaLSURL = await generateEclipseSnapshotJarURL(jakartaGroupId, jakartaLSArtifactId, jakartaVersion, "jar-with-dependencies");
100100
} else {
101101
jakartaJDTURL = getEclipseJarURL(jakartaGroupId, jakartaJdtArtifactId, jakartaVersion, null, false);
102102
jakartaLSURL = getEclipseJarURL(jakartaGroupId, jakartaLSArtifactId, jakartaVersion, "jar-with-dependencies", false);
@@ -158,6 +158,39 @@ function getEclipseJarURL (groupId, artifactId, version, classifier, isSnapshot)
158158
return eclipseJarURL;
159159
}
160160

161+
// Resolve Eclipse snapshot version from maven-metadata.xml
162+
// Example: https://repo.eclipse.org/repository/lsp4jakarta-maven2-snapshots/org/eclipse/lsp4jakarta/org.eclipse.lsp4jakarta.jdt.core/0.2.6-SNAPSHOT/maven-metadata.xml -> 0.2.6-20260526.143326-21
163+
async function resolveEclipseSnapshotVersionFromMetadata (groupId, artifactId, snapshotVersion, classifier) {
164+
// Generate maven-metadata.xml URL for Eclipse repository
165+
const metadataURL = `${ECLIPSE_SNAPSHOT_BASE_URL}/lsp4jakarta-maven2-snapshots/${groupId.replace(/\./g, '/')}/${artifactId}/${snapshotVersion}/maven-metadata.xml`;
166+
console.log(`Fetching maven-metadata.xml: ${metadataURL}`);
167+
168+
// Fetch and parse maven-metadata.xml
169+
const response = await axios.get(metadataURL);
170+
const parser = new XMLParser();
171+
const parsedXML = parser.parse(response.data);
172+
173+
// Get all <snapshotVersion> entries
174+
const versions = parsedXML?.metadata?.versioning?.snapshotVersions.snapshotVersion || [];
175+
176+
const targetClassifier = classifier || null;
177+
178+
// Filter entries, only list jar files, match classifier if provided
179+
const snapshotVersionEntry = versions.find(v => {
180+
const extensionMatch = v.extension === 'jar';
181+
const classifierValue = v.classifier || null;
182+
183+
return extensionMatch && classifierValue === targetClassifier;
184+
});
185+
186+
if (!snapshotVersionEntry) {
187+
throw new Error(`No snapshot JAR found matching parameters: ${groupId}:${artifactId}:${classifier || '(no classifier)'}:${snapshotVersion}`);
188+
}
189+
190+
console.log(`Resolved full snapshot version for ${artifactId}: ${snapshotVersionEntry.value}`);
191+
return snapshotVersionEntry.value;
192+
}
193+
161194
// No API provided to retrieve snapshot artifacts hosted on https://central.sonatype.com/repository/maven-snapshots
162195
// Can access maven-metadata.xml using GAV coordinates for artifacts
163196
// Will parse retrieved maven-metadata.xml for full artifact version, including timestamp
@@ -194,6 +227,16 @@ async function resolveSnapshotVersionFromMetadata (groupId, artifactId, snapshot
194227
return snapshotVersionEntry.value;
195228
}
196229

230+
// Generate Eclipse repository artifact URL for a SNAPSHOT dependency with provided GAV coordinates
231+
// Example: https://repo.eclipse.org/repository/lsp4jakarta-maven2-snapshots/org/eclipse/lsp4jakarta/org.eclipse.lsp4jakarta.jdt.core/0.2.6-SNAPSHOT/org.eclipse.lsp4jakarta.jdt.core-0.2.6-20260526.143326-21.jar
232+
async function generateEclipseSnapshotJarURL (groupId, artifactId, snapshotVersion, classifier) {
233+
const snapshotJarVersion = await resolveEclipseSnapshotVersionFromMetadata(groupId, artifactId, snapshotVersion, classifier);
234+
const classifierString = classifier ? `-${classifier}` : ''; //Format classifier for URL if defined
235+
const snapshotJarURL = `${ECLIPSE_SNAPSHOT_BASE_URL}/lsp4jakarta-maven2-snapshots/${groupId.replace(/\./g, '/')}/${artifactId}/${snapshotVersion}/${artifactId}-${snapshotJarVersion}${classifierString}.jar`;
236+
console.log(`${groupId}:${artifactId}:${snapshotVersion}:${classifier} URL: ${snapshotJarURL}`);
237+
return snapshotJarURL;
238+
}
239+
197240
// Generate Maven Central artifact URL for a SNAPSHOT dependency with provided GAV coordinates
198241
// LCLS 2.3.1-SNAPSHOT jar-with-dependencies: <MC_SNAPSHOT_BASE_URL>/io/openliberty/tools/liberty-langserver/2.3.1-SNAPSHOT/liberty-langserver-2.3.1-20250714.163135-2-jar-with-dependencies.jar
199242
async function generateSnapshotJarURL (groupId, artifactId, snapshotVersion, classifier) {

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
],
5151
"contributes": {
5252
"javaExtensions": [
53-
"./jars/org.eclipse.lsp4jakarta.jdt.core-0.2.5.jar"
53+
"./jars/org.eclipse.lsp4jakarta.jdt.core-0.2.6-SNAPSHOT.jar"
5454
],
5555
"xml.javaExtensions": [
5656
"./jars/liberty-langserver-lemminx-2.4.1-jar-with-dependencies.jar"

src/extension.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ const JAVA_EXTENSION_ID = "redhat.java";
2222
const LIBERTY_CLIENT_ID = "LANGUAGE_ID_LIBERTY";
2323
const JAKARTA_CLIENT_ID = "LANGUAGE_ID_JAKARTA";
2424
export const LIBERTY_LS_JAR = "liberty-langserver-2.4.1-jar-with-dependencies.jar";
25-
export const JAKARTA_LS_JAR = "org.eclipse.lsp4jakarta.ls-0.2.5-jar-with-dependencies.jar";
25+
export const JAKARTA_LS_JAR = "org.eclipse.lsp4jakarta.ls-0.2.6-SNAPSHOT-jar-with-dependencies.jar";
2626

2727
let libertyClient: LanguageClient;
2828
let jakartaClient: LanguageClient;

0 commit comments

Comments
 (0)