Skip to content
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
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import org.cyclonedx.util.serializer.LifecycleSerializer;
import org.cyclonedx.util.serializer.MetadataSerializer;
import org.cyclonedx.util.serializer.OutputTypeSerializer;
import org.cyclonedx.util.serializer.SignatorySerializer;

public abstract class AbstractBomGenerator extends CycloneDxSchema
{
Expand Down Expand Up @@ -58,5 +59,9 @@ protected void setupObjectMapper(boolean isXml) {
SimpleModule evidenceModule = new SimpleModule();
evidenceModule.addSerializer(new EvidenceSerializer(isXml, getSchemaVersion()));
mapper.registerModule(evidenceModule);

SimpleModule signatoryModule = new SimpleModule();
signatoryModule.addSerializer(new SignatorySerializer(isXml));
mapper.registerModule(signatoryModule);
}
}
26 changes: 26 additions & 0 deletions src/main/java/org/cyclonedx/model/Bom.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
import org.cyclonedx.Version;
import org.cyclonedx.model.attestation.Declarations;
import org.cyclonedx.model.definition.Definition;
import org.cyclonedx.model.formulation.Formula;
import org.cyclonedx.model.vulnerability.Vulnerability;
import org.cyclonedx.util.deserializer.DependencyDeserializer;
Expand All @@ -55,6 +57,8 @@
"vulnerabilities",
"annotations",
"formulation",
"declarations",
"definitions",
"signature"
})
public class Bom extends ExtensibleElement {
Expand Down Expand Up @@ -84,6 +88,12 @@ public class Bom extends ExtensibleElement {
@VersionFilter(Version.VERSION_15)
private List<Formula> formulation;

@VersionFilter(Version.VERSION_16)
private Definition definitions;

@VersionFilter(Version.VERSION_16)
private Declarations declarations;

@VersionFilter(Version.VERSION_14)
@JsonDeserialize(using = VulnerabilityDeserializer.class)
private List<Vulnerability> vulnerabilities;
Expand Down Expand Up @@ -237,6 +247,22 @@ public void addProperty(Property property) {
this.properties.add(property);
}

public Declarations getDeclarations() {
return declarations;
}

public void setDeclarations(final Declarations declarations) {
this.declarations = declarations;
}

public Definition getDefinitions() {
return definitions;
}

public void setDefinitions(final Definition definitions) {
this.definitions = definitions;
}

public int getVersion() {
return version;
}
Expand Down
6 changes: 6 additions & 0 deletions src/main/java/org/cyclonedx/model/ExternalReference.java
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,12 @@ public enum Type {
FORMULATION("formulation"),
@JsonProperty("rfc-9116")
RFC_9116("rfc-9116"),
@VersionFilter(Version.VERSION_16)
@JsonProperty("electronic-signature")
ELECTRONIC_SIGNATURE("electronic-signature"),
@VersionFilter(Version.VERSION_16)
@JsonProperty("digital-signature")
DIGITAL_SIGNATURE("digital-signature"),
@JsonProperty("other")
OTHER("other");

Expand Down
2 changes: 1 addition & 1 deletion src/main/java/org/cyclonedx/model/Service.java
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ public class Service extends ExtensibleElement {
private List<ExternalReference> externalReferences;
@VersionFilter(Version.VERSION_13)
private List<Property> properties;
@VersionFilter(value = Version.VERSION_16)
@VersionFilter(Version.VERSION_16)
@JsonUnwrapped
private Tags tags;
private List<Service> services;
Expand Down
49 changes: 49 additions & 0 deletions src/main/java/org/cyclonedx/model/attestation/Assessor.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package org.cyclonedx.model.attestation;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import org.cyclonedx.model.OrganizationalEntity;

@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(JsonInclude.Include.NON_EMPTY)
@JsonPropertyOrder({
"thirdParty",
"organization"
})
public class Assessor
{
@JacksonXmlProperty(isAttribute = true, localName = "bom-ref")
@JsonProperty("bom-ref")
private String bomRef;

private Boolean thirdParty;

private OrganizationalEntity organization;

public String getBomRef() {
return bomRef;
}

public void setBomRef(final String bomRef) {
this.bomRef = bomRef;
}

public Boolean getThirdParty() {
return thirdParty;
}

public void setThirdParty(final Boolean thirdParty) {
this.thirdParty = thirdParty;
}

public OrganizationalEntity getOrganization() {
return organization;
}

public void setOrganization(final OrganizationalEntity organization) {
this.organization = organization;
}
}
63 changes: 63 additions & 0 deletions src/main/java/org/cyclonedx/model/attestation/Attestation.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
package org.cyclonedx.model.attestation;

import java.util.List;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import org.cyclonedx.model.Signature;

@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(JsonInclude.Include.NON_EMPTY)
@JsonPropertyOrder({
"summary",
"assessor",
"mapList",
"signature"
})
public class Attestation
{
private String summary;

@JacksonXmlProperty(isAttribute = true, localName = "assessor")
@JsonProperty("assessor")
private String assessor;

private List<AttestationMap> mapList;

private Signature signature;

public String getSummary() {
return summary;
}

public void setSummary(final String summary) {
this.summary = summary;
}

public String getAssessor() {
return assessor;
}

public void setAssessor(final String assessor) {
this.assessor = assessor;
}

public List<AttestationMap> getMapList() {
return mapList;
}

public void setMapList(final List<AttestationMap> mapList) {
this.mapList = mapList;
}

public Signature getSignature() {
return signature;
}

public void setSignature(final Signature signature) {
this.signature = signature;
}
}
80 changes: 80 additions & 0 deletions src/main/java/org/cyclonedx/model/attestation/AttestationMap.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
package org.cyclonedx.model.attestation;

import java.util.List;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;

@JacksonXmlRootElement(localName = "map")
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(JsonInclude.Include.NON_EMPTY)
@JsonPropertyOrder({
"requirement",
"claims",
"counterClaims",
"conformance",
"confidence"
})
public class AttestationMap
{
@JacksonXmlProperty(isAttribute = true, localName = "requirement")
@JsonProperty("requirement")
private String requirement;

private List<String> claims;

private List<String> counterClaims;

private Conformance conformance;

private Confidence confidence;

public String getRequirement() {
return requirement;
}

public void setRequirement(final String requirement) {
this.requirement = requirement;
}

@JacksonXmlElementWrapper(localName = "claims")
@JacksonXmlProperty(localName = "claim")
public List<String> getClaims() {
return claims;
}

public void setClaims(final List<String> claims) {
this.claims = claims;
}

@JacksonXmlElementWrapper(localName = "counterClaims")
@JacksonXmlProperty(localName = "counterClaim")
public List<String> getCounterClaims() {
return counterClaims;
}

public void setCounterClaims(final List<String> counterClaims) {
this.counterClaims = counterClaims;
}

public Conformance getConformance() {
return conformance;
}

public void setConformance(final Conformance conformance) {
this.conformance = conformance;
}

public Confidence getConfidence() {
return confidence;
}

public void setConfidence(final Confidence confidence) {
this.confidence = confidence;
}
}
Loading