Skip to content

Commit f18334b

Browse files
authored
Merge pull request #3801 from nscuro/issue-3798
Fix `JDODataStoreException` for unresolved licenses during BOM upload processing
2 parents eed4929 + a56daba commit f18334b

File tree

4 files changed

+81
-3
lines changed

4 files changed

+81
-3
lines changed

docs/_posts/2024-06-03-v4.11.3.md

+43
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
---
2+
title: v4.11.3
3+
type: patch
4+
---
5+
6+
**Fixes:**
7+
8+
* Fix `JDODataStoreException` for unresolved licenses during BOM upload processing - [apiserver/#3801]
9+
10+
For a complete list of changes, refer to the respective GitHub milestones:
11+
12+
* [API server milestone 4.11.3](https://github.com/DependencyTrack/dependency-track/milestone/40?closed=1)
13+
* [Frontend milestone 4.11.3](https://github.com/DependencyTrack/frontend/milestone/25?closed=1)
14+
15+
We thank all organizations and individuals who contributed to this release, from logging issues to taking part in discussions on GitHub & Slack to testing of fixes.
16+
17+
###### dependency-track-apiserver.jar
18+
19+
| Algorithm | Checksum |
20+
|:----------|:---------|
21+
| SHA-1 | |
22+
| SHA-256 | |
23+
24+
###### dependency-track-bundled.jar
25+
26+
| Algorithm | Checksum |
27+
|:----------|:---------|
28+
| SHA-1 | |
29+
| SHA-256 | |
30+
31+
###### frontend-dist.zip
32+
33+
| Algorithm | Checksum |
34+
|:----------|:-----------------------------------------------------------------|
35+
| SHA-1 | dc7859636f1bf7a3772dc0e8de27535031511a4c |
36+
| SHA-256 | 88684d3bbd0aa2ff300ae419653f85957deaf00d9ca615a747386997b3f0e154 |
37+
38+
###### Software Bill of Materials (SBOM)
39+
40+
* API Server: [bom.json](https://github.com/DependencyTrack/dependency-track/releases/download/4.11.3/bom.json)
41+
* Frontend: [bom.json](https://github.com/DependencyTrack/frontend/releases/download/4.11.3/bom.json)
42+
43+
[apiserver/#3801]: https://github.com/DependencyTrack/dependency-track/pull/3801

pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@
8181

8282
<properties>
8383
<!-- Dependency Versions -->
84-
<frontend.version>4.11.2</frontend.version>
84+
<frontend.version>4.11.3</frontend.version>
8585
<lib.alpine.version>${project.parent.version}</lib.alpine.version>
8686
<lib.awaitility.version>4.2.1</lib.awaitility.version>
8787
<lib.brotli-decoder.version>0.1.2</lib.brotli-decoder.version>

src/main/java/org/dependencytrack/parser/cyclonedx/util/ModelConverter.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -563,14 +563,14 @@ public static Component convert(final QueryManager qm, final org.cyclonedx.model
563563
if (cycloneLicense != null) {
564564
if (StringUtils.isNotBlank(cycloneLicense.getId())) {
565565
final License license = qm.getLicenseByIdOrName(StringUtils.trimToNull(cycloneLicense.getId()));
566-
if (license != null) {
566+
if (license != License.UNRESOLVED) {
567567
component.setResolvedLicense(license);
568568
}
569569
}
570570
else if (StringUtils.isNotBlank(cycloneLicense.getName()))
571571
{
572572
final License license = qm.getLicenseByIdOrName(StringUtils.trimToNull(cycloneLicense.getName()));
573-
if (license != null) {
573+
if (license != License.UNRESOLVED) {
574574
component.setResolvedLicense(license);
575575
} else {
576576
final License customLicense = qm.getCustomLicense(StringUtils.trimToNull(cycloneLicense.getName()));

src/test/java/org/dependencytrack/tasks/BomUploadProcessingTaskTest.java

+35
Original file line numberDiff line numberDiff line change
@@ -1089,6 +1089,41 @@ public void informWithLicenseResolutionByNameTest() {
10891089
});
10901090
}
10911091

1092+
@Test
1093+
public void informWithUnresolvedLicenseByNameTest() {
1094+
final var project = new Project();
1095+
project.setName("acme-license-app");
1096+
qm.persist(project);
1097+
1098+
final byte[] bomBytes = """
1099+
{
1100+
"bomFormat": "CycloneDX",
1101+
"specVersion": "1.4",
1102+
"serialNumber": "urn:uuid:3e671687-395b-41f5-a30f-a58921a69b80",
1103+
"version": 1,
1104+
"components": [
1105+
{
1106+
"type": "library",
1107+
"name": "acme-lib-x",
1108+
"licenses": [
1109+
{
1110+
"license": {
1111+
"name": "MIT License"
1112+
}
1113+
}
1114+
]
1115+
}
1116+
]
1117+
}
1118+
""".getBytes(StandardCharsets.UTF_8);
1119+
1120+
final var bomUploadEvent = new BomUploadEvent(qm.detach(Project.class, project.getId()), bomBytes);
1121+
new BomUploadProcessingTaskV2().inform(bomUploadEvent);
1122+
awaitBomProcessedNotification(bomUploadEvent);
1123+
1124+
assertThat(qm.getAllComponents(project)).satisfiesExactly(component -> assertThat(component.getResolvedLicense()).isNull());
1125+
}
1126+
10921127
@Test // https://github.com/DependencyTrack/dependency-track/issues/1905
10931128
public void informIssue1905Test() throws Exception {
10941129
// Known to now work with old task implementation.

0 commit comments

Comments
 (0)