Skip to content

Commit 0f3596f

Browse files
devonfw#103: implemented requested changes
removed warnings from security json
1 parent a299504 commit 0f3596f

File tree

3 files changed

+55
-44
lines changed

3 files changed

+55
-44
lines changed

cli/src/main/java/com/devonfw/tools/ide/url/model/file/UrlSecurityJsonFile.java

+24-13
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import java.math.BigDecimal;
66
import java.nio.file.Files;
77
import java.nio.file.StandardOpenOption;
8+
import java.util.Collection;
89
import java.util.HashSet;
910
import java.util.List;
1011
import java.util.Objects;
@@ -18,6 +19,7 @@
1819
import com.devonfw.tools.ide.version.VersionIdentifier;
1920
import com.devonfw.tools.ide.version.VersionRange;
2021
import com.fasterxml.jackson.core.JsonProcessingException;
22+
import com.fasterxml.jackson.core.type.TypeReference;
2123
import com.fasterxml.jackson.databind.ObjectMapper;
2224

2325
/**
@@ -28,7 +30,7 @@ public class UrlSecurityJsonFile extends AbstractUrlFile<UrlEdition> {
2830
/** {@link #getName() Name} of security json file. */
2931
public static final String FILENAME_SECURITY = "security.json";
3032

31-
private UrlSecurityWarningsJson urlSecurityWarningsJson = new UrlSecurityWarningsJson();
33+
private Collection<UrlSecurityWarning> urlSecurityWarnings;
3234

3335
/**
3436
* The constructor.
@@ -38,17 +40,19 @@ public class UrlSecurityJsonFile extends AbstractUrlFile<UrlEdition> {
3840
public UrlSecurityJsonFile(UrlEdition parent) {
3941

4042
super(parent, FILENAME_SECURITY);
43+
this.urlSecurityWarnings = new HashSet<>();
4144
}
4245

4346
/**
4447
* A wrapper for {@link #addSecurityWarning(VersionRange, BigDecimal, String, String, String)} used in the unit tests.
48+
*
49+
* @param versionRange the {@link VersionRange}.
4550
*/
46-
public boolean addSecurityWarning(VersionRange versionRange) {
51+
public void addSecurityWarning(VersionRange versionRange) {
4752

4853
UrlSecurityWarning newWarning = new UrlSecurityWarning(versionRange, null, null, null, null);
49-
boolean added = this.urlSecurityWarningsJson.getWarnings().add(newWarning);
54+
boolean added = urlSecurityWarnings.add(newWarning);
5055
this.modified = this.modified || added;
51-
return added;
5256
}
5357

5458
/**
@@ -65,7 +69,7 @@ public boolean addSecurityWarning(VersionRange versionRange, BigDecimal severity
6569
String nistUrl) {
6670

6771
UrlSecurityWarning newWarning = new UrlSecurityWarning(versionRange, severity, cveName, description, nistUrl);
68-
boolean added = this.urlSecurityWarningsJson.getWarnings().add(newWarning);
72+
boolean added = urlSecurityWarnings.add(newWarning);
6973
this.modified = this.modified || added;
7074
return added;
7175
}
@@ -93,7 +97,7 @@ public boolean contains(VersionIdentifier version, boolean ignoreWarningsThatAff
9397
edition.getName());
9498
}
9599

96-
for (UrlSecurityWarning warning : this.urlSecurityWarningsJson.getWarnings()) {
100+
for (UrlSecurityWarning warning : this.urlSecurityWarnings) {
97101
VersionRange versionRange = warning.getVersionRange();
98102
if (ignoreWarningsThatAffectAllVersions) {
99103
boolean includesOldestVersion = versionRange.getMin() == null
@@ -114,6 +118,9 @@ public boolean contains(VersionIdentifier version, boolean ignoreWarningsThatAff
114118
/**
115119
* For a given version, returns whether there is a security warning in the {@link UrlSecurityWarningsJson JSON
116120
* object}. This method does not ignore warnings that affect all versions.
121+
*
122+
* @param version the {@link VersionIdentifier}.
123+
* @return {@code true} if there is a security risk for the given version, {@code false} otherwise.
117124
*/
118125
public boolean contains(VersionIdentifier version) {
119126

@@ -129,7 +136,7 @@ public boolean contains(VersionIdentifier version) {
129136
public Set<UrlSecurityWarning> getMatchingSecurityWarnings(VersionIdentifier version) {
130137

131138
Set<UrlSecurityWarning> matchedWarnings = new HashSet<>();
132-
for (UrlSecurityWarning warning : this.urlSecurityWarningsJson.getWarnings()) {
139+
for (UrlSecurityWarning warning : this.urlSecurityWarnings) {
133140
if (warning.getVersionRange().contains(version)) {
134141
matchedWarnings.add(warning);
135142
}
@@ -140,7 +147,7 @@ public Set<UrlSecurityWarning> getMatchingSecurityWarnings(VersionIdentifier ver
140147
/** Clears all security warnings. */
141148
public void clearSecurityWarnings() {
142149

143-
this.urlSecurityWarningsJson.getWarnings().clear();
150+
this.urlSecurityWarnings.clear();
144151
this.modified = true;
145152
}
146153

@@ -152,7 +159,8 @@ protected void doLoad() {
152159
}
153160
ObjectMapper mapper = JsonMapping.create();
154161
try {
155-
this.urlSecurityWarningsJson = mapper.readValue(getPath().toFile(), UrlSecurityWarningsJson.class);
162+
urlSecurityWarnings = mapper.readValue(getPath().toFile(), new TypeReference<Set<UrlSecurityWarning>>() {
163+
});
156164
} catch (IOException e) {
157165
throw new IllegalStateException("Failed to load the UrlSecurityJsonFile " + getPath(), e);
158166
}
@@ -163,13 +171,13 @@ protected void doSave() {
163171

164172
ObjectMapper mapper = JsonMapping.create();
165173

166-
if (this.urlSecurityWarningsJson.getWarnings().isEmpty() && !Files.exists(getPath())) {
174+
if (this.urlSecurityWarnings.isEmpty() && !Files.exists(getPath())) {
167175
return;
168176
}
169177

170178
String jsonString;
171179
try {
172-
jsonString = mapper.writeValueAsString(this.urlSecurityWarningsJson);
180+
jsonString = mapper.writeValueAsString(urlSecurityWarnings);
173181
} catch (JsonProcessingException e) {
174182
throw new RuntimeException(e);
175183
}
@@ -182,8 +190,11 @@ protected void doSave() {
182190
}
183191
}
184192

185-
public UrlSecurityWarningsJson getUrlSecurityWarningsJson() {
193+
/**
194+
* @return Collection of {@link UrlSecurityWarning}.
195+
*/
196+
public Collection<UrlSecurityWarning> getUrlSecurityWarnings() {
186197

187-
return this.urlSecurityWarningsJson;
198+
return this.urlSecurityWarnings;
188199
}
189200
}

cli/src/test/java/com/devonfw/tools/ide/url/model/UrlSecurityJsonFileTest.java

+15-16
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
package com.devonfw.tools.ide.url.model;
22

3+
import java.io.File;
4+
import java.math.BigDecimal;
5+
import java.nio.file.Path;
6+
import java.util.Set;
7+
8+
import org.junit.jupiter.api.Test;
9+
310
import com.devonfw.tools.ide.context.AbstractIdeContextTest;
411
import com.devonfw.tools.ide.context.IdeContext;
512
import com.devonfw.tools.ide.url.model.file.UrlSecurityJsonFile;
613
import com.devonfw.tools.ide.url.model.file.json.UrlSecurityWarning;
714
import com.devonfw.tools.ide.url.model.folder.UrlEdition;
815
import com.devonfw.tools.ide.version.VersionIdentifier;
916
import com.devonfw.tools.ide.version.VersionRange;
10-
import org.junit.jupiter.api.Test;
11-
12-
import java.io.File;
13-
import java.math.BigDecimal;
14-
import java.nio.file.Path;
15-
import java.util.Set;
1617

1718
/** Test of {@link UrlSecurityJsonFile}. */
1819

@@ -42,7 +43,7 @@ public void testUrlJsonSecurityFileLoad() {
4243
UrlSecurityJsonFile securityFile = context.getUrls().getEdition("mvn", "mvn").getSecurityJsonFile();
4344

4445
// assert
45-
assertThat(securityFile.getUrlSecurityWarningsJson().getWarnings()).containsExactly(warning1, warning2);
46+
assertThat(securityFile.getUrlSecurityWarnings()).containsExactly(warning1, warning2);
4647
}
4748

4849
/**
@@ -66,15 +67,13 @@ public void testUrlJsonSecurityFileAddAndSave() {
6667

6768
// assert
6869
assertThat(new File(String.valueOf(securityFilePath))).hasContent("""
69-
{
70-
"warnings" : [ {
71-
"versionRange" : "[1,3)",
72-
"severity" : 1.2,
73-
"cveName" : "testName3",
74-
"description" : "testDescription3",
75-
"nistUrl" : "https://nvd.nist.gov/vuln/detail/testName3"
76-
} ]
77-
}
70+
[ {
71+
"versionRange" : "[1,3)",
72+
"severity" : 1.2,
73+
"cveName" : "testName3",
74+
"description" : "testDescription3",
75+
"nistUrl" : "https://nvd.nist.gov/vuln/detail/testName3"
76+
} ]
7877
""");
7978
}
8079

Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
1-
{
2-
"warnings" : [ {
3-
"versionRange" : "[3.0.6,3.2.1)",
4-
"severity" : 5.8,
5-
"cveName" : "testName1",
6-
"description" : "testDescription1",
7-
"nistUrl" : "https://nvd.nist.gov/vuln/detail/testName1"
8-
}, {
9-
"versionRange" : "(,3.8.1)",
10-
"severity" : 9.1,
11-
"cveName" : "testName2",
12-
"description" : "testDescription2",
13-
"nistUrl" : "https://nvd.nist.gov/vuln/detail/testName2"
14-
} ]
15-
}
1+
[
2+
{
3+
"versionRange": "[3.0.6,3.2.1)",
4+
"severity": 5.8,
5+
"cveName": "testName1",
6+
"description": "testDescription1",
7+
"nistUrl": "https://nvd.nist.gov/vuln/detail/testName1"
8+
},
9+
{
10+
"versionRange": "(,3.8.1)",
11+
"severity": 9.1,
12+
"cveName": "testName2",
13+
"description": "testDescription2",
14+
"nistUrl": "https://nvd.nist.gov/vuln/detail/testName2"
15+
}
16+
]

0 commit comments

Comments
 (0)