Skip to content

Commit 84f03bc

Browse files
feat: check version range on in-scope groupIds
1 parent 9e6b17d commit 84f03bc

File tree

2 files changed

+32
-8
lines changed

2 files changed

+32
-8
lines changed

src/upgrade/assessmentManager.ts

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,21 @@
44
import * as semver from 'semver';
55
import { Jdtls } from "../java/jdtls";
66
import { NodeKind, type INodeData } from "../java/nodeData";
7-
import { type DependencyCheckItem, UpgradeReason, type UpgradeIssue } from "./type";
7+
import { type DependencyCheckItem, UpgradeReason, type UpgradeIssue, type VersionSet } from "./type";
88
import { DEPENDENCY_JAVA_RUNTIME } from "./dependency.metadata";
99
import { Upgrade } from '../constants';
1010
import { buildPackageId } from './utility';
1111
import metadataManager from './metadataManager';
1212
import { sendInfo } from 'vscode-extension-telemetry-wrapper';
1313

14+
function getVersionRange(versions: Set<string>) :string {
15+
const versionList = [...versions].sort((a, b) => semver.compare(a, b));
16+
if (versionList.length === 1) {
17+
return versionList[0];
18+
}
19+
return `${versionList[0]}|${versionList[versionList.length-1]}`;
20+
}
21+
1422
function getJavaIssues(data: INodeData): UpgradeIssue[] {
1523
const javaVersion = data.metaData?.MaxSourceVersion as number | undefined;
1624
const { name, supportedVersion } = DEPENDENCY_JAVA_RUNTIME;
@@ -59,7 +67,7 @@ function getUpgradeForDependency(versionString: string, supportedVersionDefiniti
5967
return null;
6068
}
6169

62-
function getDependencyIssue(data: INodeData): UpgradeIssue | null {
70+
function getDependencyIssue(data: INodeData, versionSet: VersionSet): UpgradeIssue | null {
6371
const versionString = data.metaData?.["maven.version"];
6472
const groupId = data.metaData?.["maven.groupId"];
6573
const artifactId = data.metaData?.["maven.artifactId"];
@@ -69,6 +77,11 @@ function getDependencyIssue(data: INodeData): UpgradeIssue | null {
6977
return null;
7078
}
7179

80+
if (!versionSet[groupId]) {
81+
versionSet[groupId]= new Set();
82+
}
83+
versionSet[groupId].add(versionString);
84+
7285
return getUpgradeForDependency(versionString, supportedVersionDefinition, packageId);
7386
}
7487

@@ -84,7 +97,20 @@ async function getDependencyIssues(projectNode: INodeData): Promise<UpgradeIssue
8497
path: packageContainer.path,
8598
});
8699

87-
return packages.map(getDependencyIssue).filter((x): x is UpgradeIssue => Boolean(x));
100+
const versionSet: VersionSet = {};
101+
const issues = packages.map(pkg => getDependencyIssue(pkg, versionSet)).filter((x): x is UpgradeIssue => Boolean(x));
102+
if (Object.entries(versionSet).length > 0) {
103+
sendInfo("", {
104+
operationName: "java.dependency.assessmentManager.getDependencyIssues",
105+
versionRangeByGroupId: JSON.stringify(
106+
Object.fromEntries(
107+
Object.entries(versionSet).map(([groupId, versionSet]) => [groupId, getVersionRange(versionSet)]),
108+
),
109+
),
110+
});
111+
}
112+
113+
return issues;
88114
})
89115
);
90116

@@ -113,10 +139,6 @@ async function getWorkspaceIssues(workspaceFolderUri: string): Promise<UpgradeIs
113139
const projects = await Jdtls.getProjects(workspaceFolderUri);
114140
const projectsIssues = await Promise.allSettled(projects.map(async (projectNode) => {
115141
const issues = await getProjectIssues(projectNode);
116-
sendInfo("", {
117-
operationName: "java.dependency.assessmentManager.getWorkspaceIssues",
118-
issuesFoundForPackageId: JSON.stringify(issues.map(x => `${x.packageId}:${x.currentVersion}`)),
119-
});
120142
return issues;
121143
}));
122144

src/upgrade/type.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,6 @@ export type UpgradeIssue = {
2828

2929
export interface IUpgradeIssuesRenderer {
3030
render(issues: UpgradeIssue[]): void;
31-
}
31+
}
32+
33+
export type VersionSet = Record<string, Set<string>>;

0 commit comments

Comments
 (0)