Skip to content

Commit 46ff0db

Browse files
feat: show diagnostic per individual package
1 parent a8de401 commit 46ff0db

File tree

8 files changed

+37
-39
lines changed

8 files changed

+37
-39
lines changed

src/upgrade/display/diagnosticsManager.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,15 @@ class DiagnosticsManager implements Disposable {
1414
}
1515

1616
public refresh(filePath: string, issues: FileIssues) {
17-
this.diagnostics.set(Uri.parse(filePath), Object.entries(issues).map(([rulePackageId, issue]) => {
17+
this.diagnostics.set(Uri.parse(filePath), Object.entries(issues).map(([packageId, issue]) => {
1818
const diagnostic = new Diagnostic(
1919
// TODO: locate the actual version settings
2020
new Range(0, 0, 0, 0),
2121
buildMessage(issue),
2222
DiagnosticSeverity.Warning
2323
);
2424

25-
diagnostic.code = rulePackageId;
25+
diagnostic.code = packageId;
2626
diagnostic.source = Upgrade.PROMOTION_DIAGNOSTIC_SOURCE;
2727

2828
return diagnostic;

src/upgrade/issueManager.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,25 +11,25 @@ class IssueManager {
1111

1212

1313
public addIssue(pomPath: string, issue: UpgradeIssue) {
14-
const { rulePackageId } = issue;
14+
const { packageId } = issue;
1515
const normalizedPath = normalizePath(pomPath);
1616
if (!this.issuesList[normalizedPath]) {
1717
this.issuesList[normalizedPath] = {};
1818
}
19-
this.issuesList[normalizedPath][rulePackageId] = issue;
19+
this.issuesList[normalizedPath][packageId] = issue;
2020
this.refreshDisplay(normalizedPath, this.issuesList[normalizedPath]);
2121
}
2222

23-
public removeIssue(pomPath: string, rulePackageId: string) {
23+
public removeIssue(pomPath: string, packageId: string) {
2424
const normalizedPath = normalizePath(pomPath);
25-
if (!this.issuesList[normalizedPath] || !this.issuesList[normalizedPath][rulePackageId]) {
25+
if (!this.issuesList[normalizedPath] || !this.issuesList[normalizedPath][packageId]) {
2626
return;
2727
}
28-
delete this.issuesList[normalizedPath][rulePackageId];
28+
delete this.issuesList[normalizedPath][packageId];
2929
this.refreshDisplay(normalizedPath, this.issuesList[normalizedPath]);
3030
}
3131

32-
public getIssue(filePath: string): FileIssues {
32+
public getIssues(filePath: string): FileIssues {
3333
const normalizedPath = normalizePath(filePath);
3434
return this.issuesList[normalizedPath] ?? {};
3535
}

src/upgrade/metadataManager.ts

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -48,25 +48,22 @@ async function httpsGet(urlString: string): Promise<string> {
4848
class MetadataManager {
4949
private dependencyCheckMetadata: DependencyCheckMetadata = {};
5050

51-
public getDependencyMetadata(groupId: string, artifactId: string): DependencyCheckResult | undefined {
52-
const packageId = buildPackageId(groupId, artifactId);
53-
const packageIdWithWildcardArtifactId = buildPackageId(groupId, "*");
54-
return this.getMetadataByPackageId(packageId)
55-
?? this.getMetadataByPackageId(packageIdWithWildcardArtifactId);
56-
}
51+
public getMetadataById(givenPackageId: string): DependencyCheckResult | undefined {
52+
const splits = givenPackageId.split(":", 2);
53+
const groupId = splits[0];
54+
const artifactId = splits[1] ?? "";
5755

58-
public getMetadataByPackageId(packageId: string): DependencyCheckResult | undefined {
59-
if (packageId === `${Upgrade.DIAGNOSTICS_GROUP_ID_FOR_JAVA_ENGINE}:*`) {
56+
if (groupId === Upgrade.DIAGNOSTICS_GROUP_ID_FOR_JAVA_ENGINE) {
6057
return {
6158
name: Upgrade.DIAGNOSTICS_NAME_FOR_JAVA_ENGINE,
6259
supportedVersion: `>=${Upgrade.EARLIEST_JAVA_VERSION_NOT_TO_PROMPT}`,
63-
rulePackageId: Upgrade.DIAGNOSTICS_GROUP_ID_FOR_JAVA_ENGINE,
6460
};
6561
}
66-
return this.dependencyCheckMetadata[packageId] ? {
67-
...this.dependencyCheckMetadata[packageId],
68-
rulePackageId: packageId,
69-
} : undefined;
62+
63+
const packageId = buildPackageId(groupId, artifactId);
64+
const packageIdWithWildcardArtifactId = buildPackageId(groupId, "*");
65+
return this.dependencyCheckMetadata[packageId]
66+
?? this.dependencyCheckMetadata[packageIdWithWildcardArtifactId];
7067
}
7168

7269
public async tryRefreshMetadata(context: ExtensionContext) {

src/upgrade/type.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ export type MementoItem<T> = {
77
}
88

99
export type DependencyCheckItem = { name: string, supportedVersion: string };
10-
export type DependencyCheckResult = DependencyCheckItem & { rulePackageId: string };
10+
export type DependencyCheckResult = DependencyCheckItem;
1111
export type DependencyCheckMetadata = Record<string, DependencyCheckItem>;
1212

1313
export enum UpgradeReason {
@@ -17,11 +17,11 @@ export enum UpgradeReason {
1717
}
1818

1919
export type UpgradeIssue = {
20-
rulePackageId: string;
20+
packageId: string;
2121
packageDisplayName?: string;
2222
reason: UpgradeReason;
2323
currentVersion: string;
2424
suggestedVersion?: string;
2525
}
2626

27-
export type FileIssues = Record</* rulePackageId */string, UpgradeIssue>;
27+
export type FileIssues = Record</* packageId */string, UpgradeIssue>;

src/upgrade/upgradeCodeActionProvider.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@ export default class UpgradeCodeActionProvider implements CodeActionProvider {
1919
continue;
2020
}
2121

22-
const rulePackageId = String(diagnostic.code);
23-
const issue = issueManager.getIssue(documentPath)?.[rulePackageId];
22+
const packageId = String(diagnostic.code);
23+
const issue = issueManager.getIssues(documentPath)?.[packageId];
2424
if (!issue) {
2525
continue;
2626
}
27-
const metadata = metadataManager.getMetadataByPackageId(issue.rulePackageId);
27+
const metadata = metadataManager.getMetadataById(issue.packageId);
2828
if (!metadata) {
2929
continue;
3030
}

src/upgrade/upgradeCodeLensProvider.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ import { Upgrade } from "../constants";
1111
export default class UpgradeCodeLensProvider implements CodeLensProvider {
1212
provideCodeLenses(document: TextDocument, _token: CancellationToken): ProviderResult<CodeLens[]> {
1313
const documentPath = document.uri.toString();
14-
const issues = issueManager.getIssue(documentPath);
14+
const issues = issueManager.getIssues(documentPath);
1515
return Object.values(issues).map((issue) => {
16-
const metadata = metadataManager.getMetadataByPackageId(issue.rulePackageId);
16+
const metadata = metadataManager.getMetadataById(issue.packageId);
1717
if (!metadata) {
1818
return;
1919
}

src/upgrade/upgradeManager.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ class UpgradeManager {
9999
}
100100
if (javaVersion < Upgrade.EARLIEST_JAVA_VERSION_NOT_TO_PROMPT) {
101101
issueManager.addIssue(pomPath, {
102-
rulePackageId: buildPackageId(Upgrade.DIAGNOSTICS_GROUP_ID_FOR_JAVA_ENGINE, "*"),
102+
packageId: buildPackageId(Upgrade.DIAGNOSTICS_GROUP_ID_FOR_JAVA_ENGINE, "*"),
103103
reason: UpgradeReason.ENGINE_TOO_OLD,
104104
currentVersion: String(javaVersion),
105105
suggestedVersion: String(Upgrade.EARLIEST_JAVA_VERSION_NOT_TO_PROMPT),
@@ -113,25 +113,26 @@ class UpgradeManager {
113113
const versionString = data.metaData?.["maven.version"];
114114
const groupId = data.metaData?.["maven.groupId"];
115115
const artifactId = data.metaData?.["maven.artifactId"];
116-
const supportedVersionDefinition = metadataManager.getDependencyMetadata(groupId, artifactId);
116+
const packageId = buildPackageId(groupId, artifactId);
117+
const supportedVersionDefinition = metadataManager.getMetadataById(packageId);
117118
if (!versionString || !groupId || !supportedVersionDefinition) {
118119
return;
119120
}
120121
const currentVersion = semver.coerce(versionString);
121122
if (!currentVersion) {
122-
issueManager.removeIssue(dependingPomPath, supportedVersionDefinition.rulePackageId);
123+
issueManager.removeIssue(dependingPomPath, packageId);
123124
return;
124125
}
125126
if (!semver.satisfies(currentVersion, supportedVersionDefinition.supportedVersion)) {
126127
issueManager.addIssue(dependingPomPath, {
127-
rulePackageId: supportedVersionDefinition.rulePackageId,
128+
packageId,
128129
packageDisplayName: supportedVersionDefinition.name,
129130
reason: UpgradeReason.END_OF_LIFE,
130131
currentVersion: versionString,
131132
suggestedVersion: "latest", // TODO
132133
});
133134
} else {
134-
issueManager.removeIssue(dependingPomPath, supportedVersionDefinition.rulePackageId);
135+
issueManager.removeIssue(dependingPomPath, packageId);
135136
}
136137
}
137138

src/upgrade/utility.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ import { Uri } from "vscode";
55
import { UpgradeIssue, UpgradeReason } from "./type";
66

77
export function buildMessage(issue: UpgradeIssue): string {
8-
const { rulePackageId, packageDisplayName, currentVersion, reason } = issue;
9-
const name = packageDisplayName ?? rulePackageId;
8+
const { packageId, packageDisplayName, currentVersion, reason } = issue;
9+
const name = packageDisplayName ?? packageId;
1010

1111
switch (reason) {
1212
case UpgradeReason.END_OF_LIFE: {
@@ -22,18 +22,18 @@ export function buildMessage(issue: UpgradeIssue): string {
2222
}
2323

2424
export function buildFixPrompt(issue: UpgradeIssue): string {
25-
const { rulePackageId, reason, suggestedVersion } = issue;
25+
const { packageId, reason, suggestedVersion } = issue;
2626

2727
const suffix = [
2828
...(suggestedVersion ? [`The target version is ${suggestedVersion}.`] : [])
2929
];
3030

3131
switch (reason) {
3232
case UpgradeReason.END_OF_LIFE: {
33-
return [`Upgrade the package ${rulePackageId} using Java Upgrade Tool.`, ...suffix].join(" ");
33+
return [`Upgrade the package ${packageId} using Java Upgrade Tool.`, ...suffix].join(" ");
3434
}
3535
case UpgradeReason.CVE: {
36-
return [`Upgrade the package ${rulePackageId} to resolve CVE using Java Upgrade Tool.`, ...suffix].join(" ");
36+
return [`Upgrade the package ${packageId} to resolve CVE using Java Upgrade Tool.`, ...suffix].join(" ");
3737
}
3838
case UpgradeReason.ENGINE_TOO_OLD: {
3939
return [`Upgrade Java version using Java Upgrade Tool.`, ...suffix].join(" ");

0 commit comments

Comments
 (0)