Skip to content

Commit c192ab6

Browse files
fbriconrgrunber
authored andcommitted
Record 'java.clean.workspace' invocations in telemetry
Signed-off-by: Fred Bricon <[email protected]>
1 parent abbfadf commit c192ab6

File tree

3 files changed

+29
-0
lines changed

3 files changed

+29
-0
lines changed

USAGE_DATA.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ vscode-java has opt-in telemetry collection, provided by [vscode-redhat-telemetr
1717
* Information about the following settings. In the case of settings that store a well defined value (eg. path/url/string), we simply collect whether the setting has been set.
1818
* `java.settings.url`, `java.format.settings.url`, `java.quickfix.showAt`, `java.symbols.includeSourceMethodDeclarations`, `java.completion.guessMethodArguments`, `java.completion.postfix.enabled`, `java.cleanup.actionsOnSave`, `java.sharedIndexes.enabled`, `java.inlayHints.parameterNames.enabled`, `java.server.launchMode`, `java.autobuild.enabled`
1919
* The extension name and the choice made when a recommendation to install a 3rd party extension is proposed
20+
* The name of Java commands being manually executed, and any resulting errors
2021

2122
## What's included in the general telemetry data
2223

src/errorUtils.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
// copied from https://github.com/redhat-developer/openshift-dd-ext/blob/f8c053bded9bc6c1bfac682cf4867b187e87ee76/client/src/utils/ErrorUtils.ts#L12
2+
export function getMessage(error: any): string {
3+
return getRawMessage(error).trim();
4+
}
5+
6+
export function getRawMessage(error: any): string {
7+
if (typeof error === 'string') {
8+
return error;
9+
}
10+
if (error.stderr) {
11+
return error.stderr;
12+
}
13+
if (error.message) {
14+
return error.message;
15+
}
16+
if (error.error) {
17+
return error.error;
18+
}
19+
20+
// Unlikely to happen, as we're either getting an Error object with a message
21+
// or we're dealing with a failed promise with a stderr message
22+
// in any other case, we'll need to figure out what to return on a case by case basis
23+
return JSON.stringify(error);
24+
}

src/extension.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import { SyntaxLanguageClient } from './syntaxLanguageClient';
3232
import { convertToGlob, deleteDirectory, ensureExists, getBuildFilePatterns, getExclusionBlob, getInclusionPatternsFromNegatedExclusion, getJavaConfig, getJavaConfiguration, hasBuildToolConflicts } from './utils';
3333
import glob = require('glob');
3434
import { Telemetry } from './telemetry';
35+
import { getMessage } from './errorUtils';
3536

3637
const syntaxClient: SyntaxLanguageClient = new SyntaxLanguageClient();
3738
const standardClient: StandardLanguageClient = new StandardLanguageClient();
@@ -291,13 +292,16 @@ export function activate(context: ExtensionContext): Promise<ExtensionAPI> {
291292

292293
const cleanWorkspaceExists = fs.existsSync(path.join(workspacePath, cleanWorkspaceFileName));
293294
if (cleanWorkspaceExists) {
295+
const data = {};
294296
try {
295297
cleanupLombokCache(context);
296298
deleteDirectory(workspacePath);
297299
deleteDirectory(syntaxServerWorkspacePath);
298300
} catch (error) {
301+
data['error'] = getMessage(error);
299302
window.showErrorMessage(`Failed to delete ${workspacePath}: ${error}`);
300303
}
304+
await Telemetry.sendTelemetry(Commands.CLEAN_WORKSPACE, data);
301305
}
302306

303307
// Register commands here to make it available even when the language client fails

0 commit comments

Comments
 (0)