Skip to content

Commit 1551319

Browse files
Unify realtime scan wrappers; consolidate Secrets/IaC models; deprecate and stub obsolete result classes
1 parent f741fa1 commit 1551319

File tree

10 files changed

+319
-29
lines changed

10 files changed

+319
-29
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package com.checkmarx.ast.containersRealtime;
2+
3+
import com.checkmarx.ast.realtime.RealtimeLocation;
4+
import com.fasterxml.jackson.annotation.JsonCreator;
5+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
6+
import com.fasterxml.jackson.annotation.JsonInclude;
7+
import com.fasterxml.jackson.annotation.JsonProperty;
8+
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
9+
import lombok.Value;
10+
11+
import java.util.Collections;
12+
import java.util.List;
13+
14+
@Value
15+
@JsonDeserialize
16+
@JsonInclude(JsonInclude.Include.NON_NULL)
17+
@JsonIgnoreProperties(ignoreUnknown = true)
18+
public class ContainersRealtimeImage {
19+
@JsonProperty("ImageName") String imageName;
20+
@JsonProperty("ImageTag") String imageTag;
21+
@JsonProperty("FilePath") String filePath;
22+
@JsonProperty("Locations") List<RealtimeLocation> locations;
23+
@JsonProperty("Status") String status;
24+
@JsonProperty("Vulnerabilities") List<ContainersRealtimeVulnerability> vulnerabilities;
25+
26+
@JsonCreator
27+
public ContainersRealtimeImage(@JsonProperty("ImageName") String imageName,
28+
@JsonProperty("ImageTag") String imageTag,
29+
@JsonProperty("FilePath") String filePath,
30+
@JsonProperty("Locations") List<RealtimeLocation> locations,
31+
@JsonProperty("Status") String status,
32+
@JsonProperty("Vulnerabilities") List<ContainersRealtimeVulnerability> vulnerabilities) {
33+
this.imageName = imageName;
34+
this.imageTag = imageTag;
35+
this.filePath = filePath;
36+
this.locations = locations == null ? Collections.emptyList() : locations;
37+
this.status = status;
38+
this.vulnerabilities = vulnerabilities == null ? Collections.emptyList() : vulnerabilities;
39+
}
40+
}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package com.checkmarx.ast.containersRealtime;
2+
3+
import com.fasterxml.jackson.annotation.JsonCreator;
4+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
5+
import com.fasterxml.jackson.annotation.JsonInclude;
6+
import com.fasterxml.jackson.annotation.JsonProperty;
7+
import com.fasterxml.jackson.databind.ObjectMapper;
8+
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
9+
import lombok.Value;
10+
import org.apache.commons.lang3.StringUtils;
11+
import org.slf4j.Logger;
12+
import org.slf4j.LoggerFactory;
13+
14+
import java.io.IOException;
15+
import java.util.List;
16+
17+
@Value
18+
@JsonDeserialize
19+
@JsonInclude(JsonInclude.Include.NON_NULL)
20+
@JsonIgnoreProperties(ignoreUnknown = true)
21+
public class ContainersRealtimeResults {
22+
private static final Logger log = LoggerFactory.getLogger(ContainersRealtimeResults.class);
23+
24+
@JsonProperty("Images") List<ContainersRealtimeImage> images;
25+
26+
@JsonCreator
27+
public ContainersRealtimeResults(@JsonProperty("Images") List<ContainersRealtimeImage> images) {
28+
this.images = images;
29+
}
30+
31+
public static ContainersRealtimeResults fromLine(String line) {
32+
if (StringUtils.isBlank(line)) {
33+
return null;
34+
}
35+
try {
36+
if (line.contains("\"Images\"") && isValidJSON(line)) {
37+
return new ObjectMapper().readValue(line, ContainersRealtimeResults.class);
38+
}
39+
} catch (IOException e) {
40+
log.debug("Failed to parse containers realtime line: {}", line, e);
41+
}
42+
return null;
43+
}
44+
45+
private static boolean isValidJSON(String json) {
46+
try {
47+
new ObjectMapper().readTree(json);
48+
return true;
49+
} catch (IOException e) {
50+
return false;
51+
}
52+
}
53+
}
54+

src/main/java/com/checkmarx/ast/containersRealtime/ContainersRealtimeVulnerability.java

Whitespace-only changes.
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
package com.checkmarx.ast.iacRealtime;
2+
3+
import com.checkmarx.ast.realtime.RealtimeLocation;
4+
import com.fasterxml.jackson.annotation.JsonCreator;
5+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
6+
import com.fasterxml.jackson.annotation.JsonInclude;
7+
import com.fasterxml.jackson.annotation.JsonProperty;
8+
import com.fasterxml.jackson.databind.ObjectMapper;
9+
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
10+
import lombok.Value;
11+
import org.apache.commons.lang3.StringUtils;
12+
import org.slf4j.Logger;
13+
import org.slf4j.LoggerFactory;
14+
15+
import java.io.IOException;
16+
import java.util.Collections;
17+
import java.util.List;
18+
19+
@Value
20+
@JsonDeserialize
21+
@JsonInclude(JsonInclude.Include.NON_NULL)
22+
@JsonIgnoreProperties(ignoreUnknown = true)
23+
public class IacRealtimeResults {
24+
private static final Logger log = LoggerFactory.getLogger(IacRealtimeResults.class);
25+
@JsonProperty("Results") List<Issue> results; // Normalized list (array or single object)
26+
27+
@JsonCreator
28+
public IacRealtimeResults(@JsonProperty("Results") List<Issue> results) {
29+
this.results = results == null ? Collections.emptyList() : results;
30+
}
31+
32+
@Value
33+
@JsonDeserialize
34+
@JsonInclude(JsonInclude.Include.NON_NULL)
35+
@JsonIgnoreProperties(ignoreUnknown = true)
36+
public static class Issue {
37+
@JsonProperty("Title") String title;
38+
@JsonProperty("Description") String description;
39+
@JsonProperty("SimilarityID") String similarityId;
40+
@JsonProperty("FilePath") String filePath;
41+
@JsonProperty("Severity") String severity;
42+
@JsonProperty("ExpectedValue") String expectedValue;
43+
@JsonProperty("ActualValue") String actualValue;
44+
@JsonProperty("Locations") List<RealtimeLocation> locations;
45+
46+
@JsonCreator
47+
public Issue(@JsonProperty("Title") String title,
48+
@JsonProperty("Description") String description,
49+
@JsonProperty("SimilarityID") String similarityId,
50+
@JsonProperty("FilePath") String filePath,
51+
@JsonProperty("Severity") String severity,
52+
@JsonProperty("ExpectedValue") String expectedValue,
53+
@JsonProperty("ActualValue") String actualValue,
54+
@JsonProperty("Locations") List<RealtimeLocation> locations) {
55+
this.title = title;
56+
this.description = description;
57+
this.similarityId = similarityId;
58+
this.filePath = filePath;
59+
this.severity = severity;
60+
this.expectedValue = expectedValue;
61+
this.actualValue = actualValue;
62+
this.locations = locations == null ? Collections.emptyList() : locations;
63+
}
64+
}
65+
66+
public static IacRealtimeResults fromLine(String line) {
67+
if (StringUtils.isBlank(line)) {
68+
return null;
69+
}
70+
try {
71+
if (!isValidJSON(line)) {
72+
return null;
73+
}
74+
ObjectMapper mapper = new ObjectMapper();
75+
String trimmed = line.trim();
76+
if (trimmed.startsWith("[")) {
77+
List<Issue> list = mapper.readValue(trimmed, mapper.getTypeFactory().constructCollectionType(List.class, Issue.class));
78+
return new IacRealtimeResults(list == null ? Collections.emptyList() : list);
79+
}
80+
if (trimmed.startsWith("{")) {
81+
Issue single = mapper.readValue(trimmed, Issue.class);
82+
return new IacRealtimeResults(Collections.singletonList(single));
83+
}
84+
} catch (IOException e) {
85+
log.debug("Failed to parse iac realtime JSON line: {}", line, e);
86+
}
87+
return null;
88+
}
89+
90+
private static boolean isValidJSON(String json) {
91+
try {
92+
new ObjectMapper().readTree(json);
93+
return true;
94+
} catch (IOException e) {
95+
return false;
96+
}
97+
}
98+
}

src/main/java/com/checkmarx/ast/ossrealtime/OssRealtimeResults.java renamed to src/main/java/com/checkmarx/ast/ossRealtime/OssRealtimeResults.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.checkmarx.ast.ossrealtime;
1+
package com.checkmarx.ast.ossRealtime;
22

33
import com.fasterxml.jackson.annotation.JsonCreator;
44
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@@ -8,6 +8,8 @@
88
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
99
import lombok.Value;
1010
import org.apache.commons.lang3.StringUtils;
11+
import org.slf4j.Logger;
12+
import org.slf4j.LoggerFactory;
1113

1214
import java.io.IOException;
1315
import java.util.List;
@@ -17,6 +19,7 @@
1719
@JsonInclude(JsonInclude.Include.NON_NULL)
1820
@JsonIgnoreProperties(ignoreUnknown = true)
1921
public class OssRealtimeResults {
22+
private static final Logger log = LoggerFactory.getLogger(OssRealtimeResults.class);
2023
@JsonProperty("Packages")
2124
List<OssRealtimeScanPackage> packages;
2225

@@ -33,7 +36,8 @@ public static OssRealtimeResults fromLine(String line) {
3336
if (isValidJSON(line) && line.contains("\"Packages\"")) {
3437
return new ObjectMapper().readValue(line, OssRealtimeResults.class);
3538
}
36-
} catch (IOException ignored) {
39+
} catch (IOException e) {
40+
log.debug("Failed to parse oss realtime line: {}", line, e);
3741
}
3842
return null;
3943
}
@@ -47,4 +51,3 @@ private static boolean isValidJSON(String json) {
4751
}
4852
}
4953
}
50-

src/main/java/com/checkmarx/ast/ossrealtime/OssRealtimeScanPackage.java renamed to src/main/java/com/checkmarx/ast/ossRealtime/OssRealtimeScanPackage.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
1-
package com.checkmarx.ast.ossrealtime;
1+
package com.checkmarx.ast.ossRealtime;
22

3+
import com.checkmarx.ast.realtime.RealtimeLocation;
34
import com.fasterxml.jackson.annotation.JsonCreator;
45
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
56
import com.fasterxml.jackson.annotation.JsonInclude;
67
import com.fasterxml.jackson.annotation.JsonProperty;
78
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
89
import lombok.Value;
910

11+
import java.util.Collections;
1012
import java.util.List;
1113

1214
@Value
@@ -23,7 +25,7 @@ public class OssRealtimeScanPackage {
2325
@JsonProperty("FilePath")
2426
String filePath;
2527
@JsonProperty("Locations")
26-
List<OssRealtimeLocation> locations;
28+
List<RealtimeLocation> locations;
2729
@JsonProperty("Status")
2830
String status;
2931
@JsonProperty("Vulnerabilities")
@@ -34,16 +36,15 @@ public OssRealtimeScanPackage(@JsonProperty("PackageManager") String packageMana
3436
@JsonProperty("PackageName") String packageName,
3537
@JsonProperty("PackageVersion") String packageVersion,
3638
@JsonProperty("FilePath") String filePath,
37-
@JsonProperty("Locations") List<OssRealtimeLocation> locations,
39+
@JsonProperty("Locations") List<RealtimeLocation> locations,
3840
@JsonProperty("Status") String status,
3941
@JsonProperty("Vulnerabilities") List<OssRealtimeVulnerability> vulnerabilities) {
4042
this.packageManager = packageManager;
4143
this.packageName = packageName;
4244
this.packageVersion = packageVersion;
4345
this.filePath = filePath;
44-
this.locations = locations;
46+
this.locations = locations == null ? Collections.emptyList() : locations;
4547
this.status = status;
46-
this.vulnerabilities = vulnerabilities;
48+
this.vulnerabilities = vulnerabilities == null ? Collections.emptyList() : vulnerabilities;
4749
}
4850
}
49-

src/main/java/com/checkmarx/ast/ossrealtime/OssRealtimeVulnerability.java renamed to src/main/java/com/checkmarx/ast/ossRealtime/OssRealtimeVulnerability.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.checkmarx.ast.ossrealtime;
1+
package com.checkmarx.ast.ossRealtime;
22

33
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
44
import com.fasterxml.jackson.annotation.JsonInclude;

src/main/java/com/checkmarx/ast/ossrealtime/OssRealtimeLocation.java renamed to src/main/java/com/checkmarx/ast/realtime/RealtimeLocation.java

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.checkmarx.ast.ossrealtime;
1+
package com.checkmarx.ast.realtime;
22

33
import com.fasterxml.jackson.annotation.JsonCreator;
44
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@@ -11,18 +11,15 @@
1111
@JsonDeserialize
1212
@JsonInclude(JsonInclude.Include.NON_NULL)
1313
@JsonIgnoreProperties(ignoreUnknown = true)
14-
public class OssRealtimeLocation {
15-
@JsonProperty("Line")
16-
int line;
17-
@JsonProperty("StartIndex")
18-
int startIndex;
19-
@JsonProperty("EndIndex")
20-
int endIndex;
14+
public class RealtimeLocation {
15+
@JsonProperty("Line") int line;
16+
@JsonProperty("StartIndex") int startIndex;
17+
@JsonProperty("EndIndex") int endIndex;
2118

2219
@JsonCreator
23-
public OssRealtimeLocation(@JsonProperty("Line") int line,
24-
@JsonProperty("StartIndex") int startIndex,
25-
@JsonProperty("EndIndex") int endIndex) {
20+
public RealtimeLocation(@JsonProperty("Line") int line,
21+
@JsonProperty("StartIndex") int startIndex,
22+
@JsonProperty("EndIndex") int endIndex) {
2623
this.line = line;
2724
this.startIndex = startIndex;
2825
this.endIndex = endIndex;

0 commit comments

Comments
 (0)