diff --git a/package-lock.json b/package-lock.json index 518edc152..7a7feab5a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "license": "EPL-2.0", "dependencies": { "@redhat-developer/vscode-extension-proposals": "0.0.23", - "@redhat-developer/vscode-redhat-telemetry": "^0.9.2", + "@redhat-developer/vscode-redhat-telemetry": "0.10.2", "@vscode/codicons": "^0.0.32", "@vscode/webview-ui-toolkit": "1.2.2", "chokidar": "^3.5.3", @@ -423,9 +423,9 @@ "integrity": "sha512-ecJcUShveU2qFPvp/h/YaICRATQQAZarCQ+MApZmqWD1OC9ultnDHsSgqX2ircBX3d2Ni5mqRbKf+LlHQEFhKA==" }, "node_modules/@redhat-developer/vscode-redhat-telemetry": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@redhat-developer/vscode-redhat-telemetry/-/vscode-redhat-telemetry-0.9.2.tgz", - "integrity": "sha512-Z321mYKwjX6bVXZ5f50G07swF75B6RlSyAjhyHBYeTHJWLtYbmT1fS44FVpHzBKSlS876Xhir2zp+2FM+04/nA==", + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@redhat-developer/vscode-redhat-telemetry/-/vscode-redhat-telemetry-0.10.2.tgz", + "integrity": "sha512-bkrwQN3J+VXbyk5fd173ezUq/uQxJuO2Sp1CXUwGmxf8KExFbCMUaTdXeJPdoFVMtY4sA5wyJ5EZNTtltSMiDQ==", "license": "Apache-2.0", "dependencies": { "@segment/analytics-node": "2.3.0", diff --git a/package.json b/package.json index 0bde06fdd..4249407bb 100644 --- a/package.json +++ b/package.json @@ -2048,7 +2048,7 @@ }, "dependencies": { "@redhat-developer/vscode-extension-proposals": "0.0.23", - "@redhat-developer/vscode-redhat-telemetry": "^0.9.2", + "@redhat-developer/vscode-redhat-telemetry": "0.10.2", "@vscode/codicons": "^0.0.32", "@vscode/webview-ui-toolkit": "1.2.2", "chokidar": "^3.5.3", diff --git a/src/javaServerStarter.ts b/src/javaServerStarter.ts index bb517f509..5e5cbed6f 100644 --- a/src/javaServerStarter.ts +++ b/src/javaServerStarter.ts @@ -11,8 +11,7 @@ import { logger } from './log'; import { addLombokParam, isLombokSupportEnabled } from './lombokSupport'; import { RequirementsData } from './requirements'; import { IS_WORKSPACE_VMARGS_ALLOWED, getJavaEncoding, getJavaagentFlag, getKey, isInWorkspaceFolder } from './settings'; -import { deleteDirectory, ensureExists, getJavaConfiguration, getTimestamp, getVersion, getVSCodeVariablesMap } from './utils'; - +import { deleteDirectory, ensureExists, getJavaConfiguration, getTimestamp, getVersion, getVSCodeVariablesMap, isInsiderEditor, isPrereleaseOrInsiderVersion } from './utils'; // eslint-disable-next-line no-var declare var v8debug; export const DEBUG = (typeof v8debug === 'object') || startedInDebugMode(); @@ -237,12 +236,10 @@ function prepareParams(requirements: RequirementsData, workspacePath, context: E } const hasJDWP = params.find((param: string) => param.includes('jdwp')) !== undefined; - const isInsider: boolean = version.includes("insider"); const extVersion = getVersion(context.extensionPath); - const isPreReleaseVersion = /^\d+\.\d+\.\d{10}/.test(extVersion); const globalStoragePath = path.resolve(context.globalStorageUri?.fsPath, extVersion); // .../Code/User/globalStorage/redhat.java/1.42.0/ const appCDSMode = workspace.getConfiguration().get('java.jdt.ls.appcds.enabled'); - const useAppCDS = (appCDSMode === 'on') || (appCDSMode === 'auto' && (isInsider || isPreReleaseVersion)); + const useAppCDS = (appCDSMode === 'on') || (appCDSMode === 'auto' && (isPrereleaseOrInsiderVersion(context))); ensureExists(globalStoragePath); const sharedArchiveLocation = path.join(globalStoragePath, "jdtls.jsa"); @@ -290,7 +287,7 @@ function prepareParams(requirements: RequirementsData, workspacePath, context: E function resolveIndexCache(context: ExtensionContext) { let enabled: string = getJavaConfiguration().get("sharedIndexes.enabled"); if (enabled === "auto") { - enabled = version.includes("insider") ? "on" : "off"; + enabled = isInsiderEditor() ? "on" : "off"; } if (enabled !== "on") { diff --git a/src/standardLanguageClient.ts b/src/standardLanguageClient.ts index bb0ca1335..338a5d849 100644 --- a/src/standardLanguageClient.ts +++ b/src/standardLanguageClient.ts @@ -34,7 +34,7 @@ import { askForProjects, projectConfigurationUpdate, upgradeGradle } from "./sta import { TracingLanguageClient } from './TracingLanguageClient'; import { TypeHierarchyDirection, TypeHierarchyItem } from "./typeHierarchy/protocol"; import { typeHierarchyTree } from "./typeHierarchy/typeHierarchyTree"; -import { getAllJavaProjects, getAllProjects, getJavaConfiguration } from "./utils"; +import { getAllJavaProjects, getAllProjects, getJavaConfiguration, isPrereleaseOrInsiderVersion } from "./utils"; import { Telemetry } from "./telemetry"; import { TelemetryEvent } from "@redhat-developer/vscode-redhat-telemetry/lib"; import { registerDocumentValidationListener } from './diagnostic'; @@ -355,7 +355,7 @@ export class StandardLanguageClient { } } - if (tags.length > 0) { + if (tags.length > 0 || DEBUG || isPrereleaseOrInsiderVersion(context)) { e.properties['tags'] = tags; return Telemetry.sendTelemetry(Telemetry.LS_ERROR, e.properties); } diff --git a/src/utils.ts b/src/utils.ts index 989f3ab24..8e3972c25 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -234,7 +234,7 @@ export async function getJavaConfig(javaHome: string) { javaConfig.format.tabSize = editorConfig.get('tabSize'); const filesConfig = workspace.getConfiguration('files'); javaConfig.associations = filesConfig.get('associations'); - const isInsider: boolean = version.includes("insider"); + const isInsider: boolean = isInsiderEditor(); const androidSupport = javaConfig.jdt.ls.androidSupport.enabled; switch (androidSupport) { case "auto": @@ -362,3 +362,32 @@ export function getVSCodeVariablesMap(): any { keys.forEach(key => res[key] = vscodeVariables(`\${${key}}`)); return res; } + +/** + * Check if the extension version is a pre-release version or running an insider editor. + * @param context The extension context or extension path + * @returns true if the version is a pre-release version or running an insider editor + */ +export function isPrereleaseOrInsiderVersion(context: ExtensionContext | string): boolean { + return isInsiderEditor() || isPreReleaseVersion(context); +} + +/** + * Check if the extension version is a pre-release version. + * Pre-release versions follow the pattern: major.minor.timestamp (e.g., 1.47.1234567890) + * @param context The extension context or extension path + * @returns true if the version is a pre-release version + */ +export function isPreReleaseVersion(context: ExtensionContext | string): boolean { + const extensionPath = typeof context === 'string' ? context : context.extensionPath; + const extVersion = getVersion(extensionPath); + return /^\d+\.\d+\.\d{10}/.test(extVersion); +} + +/** + * Check if the editor is an insider release. + * @returns true if the editor is an insider release + */ +export function isInsiderEditor(): boolean { + return version.includes("insider"); +}