DependencyTrack / DependencyTrack/dependency-track
Null value handling for new columns is incorrect
- Dominant language
- Java
- Stars
- 4.2k
- Forks
- 811
- Avg merge
- 8h 39m
- Merged PRs (30d)
- 237
Description
### Current Behavior
Inconsistent nullvalue handling in ProjectMetrics
Some public properties are of type int, but the local field is of type Integer for new nullable columns.
The problem is, that you produce nullable ints, which is by definition not allowed.
Please add a null value handling this way:
public int getUnassigned() {
return unassigned == null ? 0 : unassigned;
}
public void setUnassigned(int unassigned) {
this.unassigned = unassigned;
}
public long getVulnerabilities() {
return vulnerabilities;
}
public void setVulnerabilities(int vulnerabilities) {
this.vulnerabilities = vulnerabilities;
}
public int getVulnerableComponents() {
return vulnerableComponents;
}
public void setVulnerableComponents(int vulnerableComponents) {
this.vulnerableComponents = vulnerableComponents;
}
public int getComponents() {
return components;
}
public void setComponents(int components) {
this.components = components;
}
public int getSuppressed() {
return suppressed;
}
public void setSuppressed(int suppressed) {
this.suppressed = suppressed;
}
public int getFindingsTotal() {
return findingsTotal;
}
public void setFindingsTotal(int findingsTotal) {
this.findingsTotal = findingsTotal;
}
public int getFindingsAudited() { return findingsAudited == null ? 0 : findingsAudited; }
public void setFindingsAudited(int findingsAudited) {
this.findingsAudited = findingsAudited;
}
public int getFindingsUnaudited() {
return findingsUnaudited == null ? 0 : findingsUnaudited;
}
public void setFindingsUnaudited(int findingsUnaudited) {
this.findingsUnaudited = findingsUnaudited;
}
public double getInheritedRiskScore() {
return inheritedRiskScore;
}
public void setInheritedRiskScore(double inheritedRiskScore) {
this.inheritedRiskScore = inheritedRiskScore;
}
public int getPolicyViolationsFail() {
return policyViolationsFail == null ? 0 : policyViolationsFail;
}
public void setPolicyViolationsFail(int policyViolationsFail) {
this.policyViolationsFail = policyViolationsFail;
}
public int getPolicyViolationsWarn() {
return policyViolationsWarn == null ? 0 : policyViolationsWarn;
}
public void setPolicyViolationsWarn(int policyViolationsWarn) {
this.policyViolationsWarn = policyViolationsWarn;
}
public int getPolicyViolationsInfo() { return policyViolationsInfo == null ? 0 : policyViolationsInfo; }
public void setPolicyViolationsInfo(int policyViolationsInfo) {
this.policyViolationsInfo = policyViolationsInfo;
}
public int getPolicyViolationsTotal() { return policyViolationsTotal == null ? 0 : policyViolationsTotal; }
public void setPolicyViolationsTotal(int policyViolationsTotal) {
this.policyViolationsTotal = policyViolationsTotal;
}
public int getPolicyViolationsAudited() {
return policyViolationsAudited == null ? 0 : policyViolationsAudited;
}
public void setPolicyViolationsAudited(int policyViolationsAudited) {
this.policyViolationsAudited = policyViolationsAudited;
}
public int getPolicyViolationsUnaudited() {
return policyViolationsUnaudited == null ? 0 : policyViolationsUnaudited;
}
public void setPolicyViolationsUnaudited(int policyViolationsUnaudited) {
this.policyViolationsUnaudited = policyViolationsUnaudited;
}
public int getPolicyViolationsSecurityTotal() {
return policyViolationsSecurityTotal == null ? 0 : policyViolationsSecurityTotal;
}
public void setPolicyViolationsSecurityTotal(int policyViolationsSecurityTotal) {
this.policyViolationsSecurityTotal = policyViolationsSecurityTotal;
}
public int getPolicyViolationsSecurityAudited() {
return policyViolationsSecurityAudited == null ? 0 : policyViolationsSecurityAudited;
}
public void setPolicyViolationsSecurityAudited(int policyViolationsSecurityAudited) {
this.policyViolationsSecurityAudited = policyViolationsSecurityAudited;
}
public int getPolicyViolationsSecurityUnaudited() {
return policyViolationsSecurityUnaudited == null ? 0 : policyViolationsSecurityUnaudited;
}
public void setPolicyViolationsSecurityUnaudited(int policyViolationsSecurityUnaudited) {
this.policyViolationsSecurityUnaudited = policyViolationsSecurityUnaudited;
}
public int getPolicyViolationsLicenseTotal() {
return policyViolationsLicenseTotal == null ? 0 : policyViolationsLicenseTotal;
}
public void setPolicyViolationsLicenseTotal(int policyViolationsLicenseTotal) {
this.policyViolationsLicenseTotal = policyViolationsLicenseTotal;
}
public int getPolicyViolationsLicenseAudited() {
return policyViolationsLicenseAudited == null ? 0 : policyViolationsLicenseAudited;
}
public void setPolicyViolationsLicenseAudited(int policyViolationsLicenseAudited) {
this.policyViolationsLicenseAudited = policyViolationsLicenseAudited;
}
public int getPolicyViolationsLicenseUnaudited() {
return policyViolationsLicenseUnaudited == null ? 0 : policyViolationsLicenseUnaudited;
}
public void setPolicyViolationsLicenseUnaudited(int policyViolationsLicenseUnaudited) {
this.policyViolationsLicenseUnaudited = policyViolationsLicenseUnaudited;
}
public int getPolicyViolationsOperationalTotal() {
return policyViolationsOperationalTotal == null ? 0 : policyViolationsOperationalTotal;
}
public void setPolicyViolationsOperationalTotal(int policyViolationsOperationalTotal) {
this.policyViolationsOperationalTotal = policyViolationsOperationalTotal;
}
public int getPolicyViolationsOperationalAudited() {
return policyViolationsOperationalAudited == null ? 0 : policyViolationsOperationalAudited;
}
public void setPolicyViolationsOperationalAudited(int policyViolationsOperationalAudited) {
this.policyViolationsOperationalAudited = policyViolationsOperationalAudited;
}
public int getPolicyViolationsOperationalUnaudited() {
return policyViolationsOperationalUnaudited == null ? 0 : policyViolationsOperationalUnaudited;
}
public void setPolicyViolationsOperationalUnaudited(int policyViolationsOperationalUnaudited) {
this.policyViolationsOperationalUnaudited = policyViolationsOperationalUnaudited;
}
And please change
public long getVulnerabilities() {
return vulnerabilities;
}
public void setVulnerabilities(int vulnerabilities) {
this.vulnerabilities = vulnerabilities;
}
to
public int getVulnerabilities() {
return vulnerabilities;
}
public void setVulnerabilities(int vulnerabilities) {
this.vulnerabilities = vulnerabilities;
}
thanks a lot
### Steps to Reproduce
1. Just have a look to the code of 4.9.1 (4.10)
### Expected Behavior
Return 0 instead of trying to return null. This would cause a crash.
### Dependency-Track Version
4.9.1
### Dependency-Track Distribution
Container Image, Executable WAR
### Database Server
Microsoft SQL Server
### Database Server Version
_No response_
### Browser
Google Chrome
### Checklist
- [X] I have read and understand the [contributing guidelines](https://github.com/DependencyTrack/dependency-track/blob/master/CONTRIBUTING.md#filing-issues)
- [X] I have checked the [existing issues](https://github.com/DependencyTrack/dependency-track/issues) for whether this defect was already reported
Contributor guide
Assessment
This issue has not been assessed yet.