Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update Jackson to 2.10.3 #243

Merged
merged 2 commits into from
Mar 30, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 2 additions & 14 deletions sonar-dependency-check-plugin/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
<sonar.pluginName>Dependency-Check</sonar.pluginName>
<sonar.pluginKey>dependencycheck</sonar.pluginKey>
<junit.jupiter.version>5.5.2</junit.jupiter.version>
<jackson.version>2.8.11</jackson.version>
<jackson.version>2.10.3</jackson.version>
</properties>

<dependencies>
Expand All @@ -44,24 +44,12 @@
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}.4</version>
<exclusions>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
</exclusion>
</exclusions>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>${jackson.version}</version>
<exclusions>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.github.spotbugs</groupId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,21 +54,19 @@ protected EvidenceDeserializer(@Nullable Class<?> vc) {

@Override
public Map<String, List<Evidence>> deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
ArrayList<Evidence> evidences = new ArrayList<>();
while (jsonParser.nextToken() != JsonToken.END_OBJECT) {
List<Evidence> evidences = new ArrayList<>();
// empty evidenceCollected in XML
if (StringUtils.equals(jsonParser.getCurrentName(), "evidenceCollected") && JsonToken.VALUE_STRING.equals(jsonParser.getCurrentToken())) {
return buildFinalEvidences(evidences);
}
while (!JsonToken.END_OBJECT.equals(jsonParser.nextToken())) {
JsonToken jsonToken = jsonParser.currentToken();
// For JSON
if (JsonToken.START_ARRAY.equals(jsonToken)) {
String fieldName = jsonParser.getCurrentName();
if (StringUtils.equalsAnyIgnoreCase(fieldName, "vendorEvidence", "productEvidence", "versionEvidence")) {
while (jsonParser.nextToken() != JsonToken.END_ARRAY) {
Evidence ev = jsonParser.readValueAs(Evidence.class);
evidences.add(ev);
}
}
parseJson(jsonParser, evidences);
}
// For XML
if(JsonToken.START_OBJECT.equals(jsonToken)){
else if(JsonToken.START_OBJECT.equals(jsonToken)){
String fieldName = jsonParser.getCurrentName();
if (StringUtils.equalsIgnoreCase("evidence", fieldName)) {
evidences.add(jsonParser.readValueAs(Evidence.class));
Expand All @@ -78,6 +76,16 @@ public Map<String, List<Evidence>> deserialize(JsonParser jsonParser, Deserializ
return buildFinalEvidences(evidences);
}

private void parseJson(JsonParser jsonParser, List<Evidence> evidences) throws IOException {
String fieldName = jsonParser.getCurrentName();
if (StringUtils.equalsAnyIgnoreCase(fieldName, "vendorEvidence", "productEvidence", "versionEvidence")) {
while (!JsonToken.END_ARRAY.equals(jsonParser.nextToken())) {
Evidence ev = jsonParser.readValueAs(Evidence.class);
evidences.add(ev);
}
}
}

private Map<String, List<Evidence>> buildFinalEvidences(List<Evidence> evidences) {
Map<String, List<Evidence>> evidencesMap = new HashMap<>();
for (Evidence evidence : evidences) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,19 +53,36 @@ protected VulnarabilitiesDeserializer(@Nullable Class<?> vc) {
@Override
public List<Vulnerability> deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
ArrayList<Vulnerability> vulnerabilities = new ArrayList<>();
while (jsonParser.nextToken() != JsonToken.END_OBJECT) {
JsonToken jsonToken = jsonParser.currentToken();
if (JsonToken.START_OBJECT.equals(jsonToken)) {
String fieldName = jsonParser.getCurrentName();
// for JSON
if (JsonToken.START_ARRAY.equals(jsonParser.currentToken())) {
parseJson(jsonParser, vulnerabilities);
}
// For XML
else if (JsonToken.START_OBJECT.equals(jsonParser.currentToken())) {
parseXML(jsonParser, vulnerabilities);
}
return vulnerabilities;
}

private void parseXML(JsonParser jsonParser, List<Vulnerability> vulnerabilities) throws IOException {
while (!JsonToken.END_OBJECT.equals(jsonParser.nextToken())) {
if (JsonToken.START_OBJECT.equals(jsonParser.currentToken())) {
Vulnerability vul = jsonParser.readValueAs(Vulnerability.class);
// fieldName == null with JSON
// fieldName == vulnerability with XML
// fieldName == suppressedVulnerabilities with XML but skip it
if (fieldName == null || StringUtils.equals(fieldName, "vulnerability")) {
// skip suppressedVulnerabilities
if (StringUtils.equals(jsonParser.getCurrentName(), "vulnerability")) {
vulnerabilities.add(vul);
}
}
}
return vulnerabilities;
}

private void parseJson(JsonParser jsonParser, List<Vulnerability> vulnerabilities) throws IOException {
while (!JsonToken.END_ARRAY.equals(jsonParser.nextToken())) {
JsonToken jsonToken = jsonParser.currentToken();
if (JsonToken.START_OBJECT.equals(jsonToken)) {
Vulnerability vul = jsonParser.readValueAs(Vulnerability.class);
vulnerabilities.add(vul);
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ public void parsePomIOException() {
InputStream inputStream = mock(InputStream.class);
doThrow(IOException.class).when(inputStream);
ReportParserException exception = assertThrows(ReportParserException.class, () -> PomParserHelper.parse(inputStream), "No IOException thrown");
assertEquals("IO Problem with pom.xml", exception.getMessage());
assertEquals("Could not parse pom.xml", exception.getMessage());
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ public void parseReportXMLIOException() {
InputStream inputStream = mock(InputStream.class);
doThrow(IOException.class).when(inputStream);
ReportParserException exception = assertThrows(ReportParserException.class, () -> XMLReportParserHelper.parse(inputStream), "No IOException thrown");
assertEquals("IO Problem with XML-Report", exception.getMessage());
assertEquals("Could not parse XML", exception.getMessage());
}

@Test
Expand Down