Skip to content

Commit 4f611f9

Browse files
authored
activate before execute java extension commands (#775)
* activate before execute java extension commands Signed-off-by: Yan Zhang <[email protected]> * rename the error type for clarity Signed-off-by: Yan Zhang <[email protected]>
1 parent 2ed5b44 commit 4f611f9

File tree

5 files changed

+19
-15
lines changed

5 files changed

+19
-15
lines changed

src/build.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ export async function buildWorkspace(): Promise<boolean> {
3232
}
3333

3434
async function handleBuildFailure(operationId: string, err: any): Promise<boolean> {
35-
if (err instanceof utility.JavaExtensionNotActivatedError) {
35+
if (err instanceof utility.JavaExtensionNotEnabledError) {
3636
utility.guideToInstallJavaExtension();
3737
return false;
3838
}

src/commands.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -39,17 +39,17 @@ export const JAVA_IS_ON_CLASSPATH = "vscode.java.isOnClasspath";
3939
export const JAVA_RESOLVE_JAVAEXECUTABLE = "vscode.java.resolveJavaExecutable";
4040

4141
export function executeJavaLanguageServerCommand(...rest) {
42-
// TODO: need to handle error and trace telemetry
43-
if (!utility.isJavaExtEnabled()) {
44-
throw new utility.JavaExtensionNotActivatedError(
45-
`Cannot execute command ${JAVA_EXECUTE_WORKSPACE_COMMAND}, VS Code Java Extension is not enabled.`);
46-
}
47-
return vscode.commands.executeCommand(JAVA_EXECUTE_WORKSPACE_COMMAND, ...rest);
42+
return executeJavaExtensionCommand(JAVA_EXECUTE_WORKSPACE_COMMAND, ...rest);
4843
}
4944

50-
export function executeJavaExtensionCommand(commandName: string, ...rest) {
51-
if (!utility.isJavaExtEnabled()) {
52-
throw new utility.JavaExtensionNotActivatedError(`Cannot execute command ${commandName}, VS Code Java Extension is not enabled.`);
45+
export async function executeJavaExtensionCommand(commandName: string, ...rest) {
46+
// TODO: need to handle error and trace telemetry
47+
const javaExtension = utility.getJavaExtension();
48+
if (!javaExtension) {
49+
throw new utility.JavaExtensionNotEnabledError(`Cannot execute command ${commandName}, VS Code Java Extension is not enabled.`);
50+
}
51+
if (!javaExtension.isActive) {
52+
await javaExtension.activate();
5353
}
5454
return vscode.commands.executeCommand(commandName, ...rest);
5555
}

src/configurationProvider.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ export class JavaDebugConfigurationProvider implements vscode.DebugConfiguration
8383
});
8484
resolve([defaultLaunchConfig, ...launchConfigs]);
8585
} catch (ex) {
86-
if (ex instanceof utility.JavaExtensionNotActivatedError) {
86+
if (ex instanceof utility.JavaExtensionNotEnabledError) {
8787
utility.guideToInstallJavaExtension();
8888
}
8989
p.report({ message: `failed to generate configuration. ${ex}` });
@@ -232,7 +232,7 @@ export class JavaDebugConfigurationProvider implements vscode.DebugConfiguration
232232
throw new Error("Failed to start debug server.");
233233
}
234234
} catch (ex) {
235-
if (ex instanceof utility.JavaExtensionNotActivatedError) {
235+
if (ex instanceof utility.JavaExtensionNotEnabledError) {
236236
utility.guideToInstallJavaExtension();
237237
return undefined;
238238
}

src/extension.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ async function runJavaFile(uri: vscode.Uri, noDebug: boolean) {
178178
// Wait for Java Language Support extension being activated.
179179
await utility.getJavaExtensionAPI();
180180
} catch (ex) {
181-
if (ex instanceof utility.JavaExtensionNotActivatedError) {
181+
if (ex instanceof utility.JavaExtensionNotEnabledError) {
182182
utility.guideToInstallJavaExtension();
183183
return;
184184
}

src/utility.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ export class UserError extends Error {
2121
}
2222
}
2323

24-
export class JavaExtensionNotActivatedError extends Error {
24+
export class JavaExtensionNotEnabledError extends Error {
2525
constructor(message) {
2626
super(message);
2727
setUserError(this);
@@ -154,12 +154,16 @@ export async function getJavaHome(): Promise<string> {
154154
export function getJavaExtensionAPI(): Thenable<any> {
155155
const extension = vscode.extensions.getExtension(JAVA_EXTENSION_ID);
156156
if (!extension) {
157-
throw new JavaExtensionNotActivatedError("VS Code Java Extension is not enabled.");
157+
throw new JavaExtensionNotEnabledError("VS Code Java Extension is not enabled.");
158158
}
159159

160160
return extension.activate();
161161
}
162162

163+
export function getJavaExtension(): vscode.Extension<any> {
164+
return vscode.extensions.getExtension(JAVA_EXTENSION_ID);
165+
}
166+
163167
export function isJavaExtEnabled(): boolean {
164168
const javaExt = vscode.extensions.getExtension(JAVA_EXTENSION_ID);
165169
return !!javaExt;

0 commit comments

Comments
 (0)