From 97796622aea46ca5582a0991b040c9bd0ae2f12e Mon Sep 17 00:00:00 2001 From: MEHER SRUJANA MATCHA Date: Mon, 15 Jun 2026 12:39:55 +0100 Subject: [PATCH 1/3] Add Copy Fully Qualified Name command --- package.json | 10 ++++++++++ package.nls.json | 3 ++- src/commands.ts | 6 ++++++ src/extension.ts | 27 +++++++++++++++++++++++++++ 4 files changed, 45 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 3eb845a54..9fe83f02d 100644 --- a/package.json +++ b/package.json @@ -1866,6 +1866,11 @@ "command": "java.runtimes.add", "title": "%java.runtimes.add%", "category": "Java" + }, + { + "command": "java.action.copyFullyQualifiedName", + "title": "%java.action.copyFullyQualifiedName%", + "category": "Java" } ], "keybindings": [ @@ -1951,6 +1956,11 @@ "command": "java.action.showTypeHierarchy", "when": "javaLSReady && editorTextFocus && editorLangId == java", "group": "0_navigation@3" + }, + { + "command": "java.action.copyFullyQualifiedName", + "when": "javaLSReady && editorTextFocus && editorLangId == java", + "group": "1_javaactions" } ], "commandPalette": [ diff --git a/package.nls.json b/package.nls.json index 2ac32d40a..c695cfe3e 100644 --- a/package.nls.json +++ b/package.nls.json @@ -30,5 +30,6 @@ "java.action.doCleanup": "Performs Cleanup Actions", "java.change.searchScope": "Change Search Scope", "java.action.showExtendedOutline": "Open Extended Outline", - "java.runtimes.add": "Add Java Runtime" + "java.runtimes.add": "Add Java Runtime", + "java.action.copyFullyQualifiedName": "Copy Fully Qualified Name" } diff --git a/src/commands.ts b/src/commands.ts index be87ca431..ab5aa0543 100644 --- a/src/commands.ts +++ b/src/commands.ts @@ -385,6 +385,12 @@ export namespace Commands { * Add Java Runtime */ export const ADD_JAVA_RUNTIME = 'java.runtimes.add'; + + /** + * Copy fully qualified name. + */ + export const COPY_FULLY_QUALIFIED_NAME = 'java.action.copyFullyQualifiedName'; + export const GET_FULLY_QUALIFIED_NAME = 'java.getFullyQualifiedName'; } /** diff --git a/src/extension.ts b/src/extension.ts index b7c221562..8f8005efa 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -558,6 +558,33 @@ export async function activate(context: ExtensionContext): Promise } })); + context.subscriptions.push(commands.registerCommand(Commands.COPY_FULLY_QUALIFIED_NAME, async () => { + const editor = window.activeTextEditor; + if (!editor || editor.document.languageId !== 'java') { + return; + } + + const params = { + textDocument: { + uri: editor.document.uri.toString() + }, + position: { + line: editor.selection.active.line, + character: editor.selection.active.character + } + }; + + const fullyQualifiedName = await commands.executeCommand( + Commands.EXECUTE_WORKSPACE_COMMAND, + Commands.GET_FULLY_QUALIFIED_NAME, + JSON.stringify(params) + ); + + if (fullyQualifiedName) { + await env.clipboard.writeText(fullyQualifiedName); + window.showInformationMessage(`Copied: ${fullyQualifiedName}`); + } + })); registerRestartJavaLanguageServerCommand(context); /** From f4651f02b2423a07219be43909922c2691955fd7 Mon Sep 17 00:00:00 2001 From: MEHER SRUJANA MATCHA Date: Mon, 15 Jun 2026 15:54:42 +0100 Subject: [PATCH 2/3] Update command registration tests --- test/lightweight-mode-suite/extension.test.ts | 3 ++- test/standard-mode-suite/extension.test.ts | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/test/lightweight-mode-suite/extension.test.ts b/test/lightweight-mode-suite/extension.test.ts index 1c3f8e08a..bb65dd02e 100644 --- a/test/lightweight-mode-suite/extension.test.ts +++ b/test/lightweight-mode-suite/extension.test.ts @@ -30,7 +30,8 @@ suite('Java Language Extension - LightWeight', () => { Commands.FILESEXPLORER_ONPASTE, Commands.CHANGE_JAVA_SEARCH_SCOPE, Commands.OPEN_JAVA_DASHBOARD, - Commands.ADD_JAVA_RUNTIME + Commands.ADD_JAVA_RUNTIME, + Commands.COPY_FULLY_QUALIFIED_NAME ].sort(); const foundJavaCommands = commands.filter((value) => { return JAVA_COMMANDS.indexOf(value)>=0 || value.startsWith('java.'); diff --git a/test/standard-mode-suite/extension.test.ts b/test/standard-mode-suite/extension.test.ts index a1237467b..564feacdb 100644 --- a/test/standard-mode-suite/extension.test.ts +++ b/test/standard-mode-suite/extension.test.ts @@ -128,6 +128,9 @@ suite('Java Language Extension - Standard', () => { Commands.FILESEXPLORER_ONPASTE, Commands.RESOLVE_PASTED_TEXT, Commands.CHANGE_JAVA_SEARCH_SCOPE, + Commands.COPY_FULLY_QUALIFIED_NAME, + Commands.GET_FULLY_QUALIFIED_NAME, + "java.getTroubleshootingInfo", Commands.OPEN_JAVA_DASHBOARD, Commands.ADD_JAVA_RUNTIME ].sort(); From 738605406f84c30898966f4b57819e14faa67224 Mon Sep 17 00:00:00 2001 From: MEHER SRUJANA MATCHA Date: Tue, 16 Jun 2026 11:39:09 +0100 Subject: [PATCH 3/3] Address review comments --- src/extension.ts | 1 - test/standard-mode-suite/extension.test.ts | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index 8f8005efa..c59602ff5 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -582,7 +582,6 @@ export async function activate(context: ExtensionContext): Promise if (fullyQualifiedName) { await env.clipboard.writeText(fullyQualifiedName); - window.showInformationMessage(`Copied: ${fullyQualifiedName}`); } })); registerRestartJavaLanguageServerCommand(context); diff --git a/test/standard-mode-suite/extension.test.ts b/test/standard-mode-suite/extension.test.ts index 564feacdb..3b23a654a 100644 --- a/test/standard-mode-suite/extension.test.ts +++ b/test/standard-mode-suite/extension.test.ts @@ -130,7 +130,7 @@ suite('Java Language Extension - Standard', () => { Commands.CHANGE_JAVA_SEARCH_SCOPE, Commands.COPY_FULLY_QUALIFIED_NAME, Commands.GET_FULLY_QUALIFIED_NAME, - "java.getTroubleshootingInfo", + Commands.GET_TROUBLESHOOTING_INFO, Commands.OPEN_JAVA_DASHBOARD, Commands.ADD_JAVA_RUNTIME ].sort();