Skip to content

Commit 60cde08

Browse files
committed
Add Missing Annotations for filter based on spec
Signed-off-by: Alex Alzate <[email protected]>
1 parent 55618c8 commit 60cde08

File tree

12 files changed

+72
-3
lines changed

12 files changed

+72
-3
lines changed

src/main/java/org/cyclonedx/model/Bom.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,7 @@ public void addComponent(Component component) {
146146

147147
@JacksonXmlElementWrapper(localName = "services")
148148
@JacksonXmlProperty(localName = "service")
149+
@VersionFilter(Version.VERSION_12)
149150
public List<Service> getServices() {
150151
return services;
151152
}
@@ -163,6 +164,7 @@ public void addService(Service service) {
163164

164165
@JacksonXmlElementWrapper(useWrapping = false)
165166
@JsonDeserialize(using = DependencyDeserializer.class)
167+
@VersionFilter(Version.VERSION_11)
166168
public List<Dependency> getDependencies() {
167169
return dependencies;
168170
}
@@ -198,6 +200,7 @@ public void setExternalReferences(List<ExternalReference> externalReferences) {
198200

199201
@JacksonXmlElementWrapper(localName = "compositions")
200202
@JacksonXmlProperty(localName = "composition")
203+
@VersionFilter(Version.VERSION_13)
201204
public List<Composition> getCompositions() {
202205
return compositions;
203206
}
@@ -208,6 +211,7 @@ public void setCompositions(List<Composition> compositions) {
208211

209212
@JacksonXmlElementWrapper(localName = "formulation")
210213
@JacksonXmlProperty(localName = "formula")
214+
@VersionFilter(Version.VERSION_15)
211215
public List<Formula> getFormulation() {
212216
return formulation;
213217
}
@@ -218,12 +222,14 @@ public void setFormulation(final List<Formula> formulation) {
218222

219223
@JacksonXmlElementWrapper(localName = "vulnerabilities")
220224
@JacksonXmlProperty(localName = "vulnerability")
225+
@VersionFilter(Version.VERSION_14)
221226
public List<Vulnerability> getVulnerabilities() { return vulnerabilities; }
222227

223228
public void setVulnerabilities(List<Vulnerability> vulnerabilities) { this.vulnerabilities = vulnerabilities; }
224229

225230
@JacksonXmlElementWrapper(localName = "annotations")
226231
@JacksonXmlProperty(localName = "annotation")
232+
@VersionFilter(Version.VERSION_15)
227233
public List<Annotation> getAnnotations() {
228234
return annotations;
229235
}
@@ -234,6 +240,7 @@ public void setAnnotations(List<Annotation> annotations) {
234240

235241
@JacksonXmlElementWrapper(localName = "properties")
236242
@JacksonXmlProperty(localName = "property")
243+
@JsonInclude(JsonInclude.Include.NON_EMPTY)
237244
public List<Property> getProperties() {
238245
return properties;
239246
}

src/main/java/org/cyclonedx/model/Component.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
@JsonInclude(JsonInclude.Include.NON_EMPTY)
5050
@JsonPropertyOrder(
5151
{"supplier",
52+
"manufacturer",
5253
"author",
5354
"publisher",
5455
"group",
@@ -140,15 +141,20 @@ public String getScopeName() {
140141

141142
@JacksonXmlProperty(isAttribute = true, localName = "bom-ref")
142143
@JsonProperty("bom-ref")
144+
@VersionFilter(Version.VERSION_11)
143145
private String bomRef;
146+
144147
@JacksonXmlProperty(isAttribute = true, localName = "mime-type")
145148
@JsonProperty("mime-type")
146149
private String mimeType;
150+
147151
@VersionFilter(Version.VERSION_12)
148152
private OrganizationalEntity supplier;
153+
149154
@Deprecated
150155
@VersionFilter(Version.VERSION_12)
151156
private String author;
157+
152158
@VersionFilter(Version.VERSION_11)
153159
private String publisher;
154160
private String group;
@@ -161,24 +167,33 @@ public String getScopeName() {
161167
private String copyright;
162168
private String cpe;
163169
private String purl;
170+
164171
@VersionFilter(Version.VERSION_16)
165172
private List<String> omniborId;
173+
166174
@VersionFilter(Version.VERSION_16)
167175
private List<String> swhid;
168176
@VersionFilter(Version.VERSION_12)
169177
private Swid swid;
178+
170179
private Boolean modified;
180+
171181
@VersionFilter(Version.VERSION_11)
172182
private Pedigree pedigree;
183+
173184
@VersionFilter(Version.VERSION_11)
174185
private List<ExternalReference> externalReferences;
175186
@VersionFilter(Version.VERSION_13)
176187
private List<Property> properties;
188+
177189
private List<Component> components;
190+
178191
@VersionFilter(Version.VERSION_13)
179192
private Evidence evidence;
193+
180194
@JacksonXmlProperty(isAttribute = true)
181195
private Type type;
196+
182197
@VersionFilter(Version.VERSION_14)
183198
private ReleaseNotes releaseNotes;
184199

src/main/java/org/cyclonedx/model/Composition.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,7 @@ public void addDependency(BomReference dependency) {
133133

134134
@JacksonXmlElementWrapper(localName = "vulnerabilities")
135135
@JacksonXmlProperty(localName = "vulnerability")
136+
@VersionFilter(Version.VERSION_15)
136137
public List<BomReference> getVulnerabilities() { return vulnerabilities; }
137138

138139
public void setVulnerabilities(List<BomReference> vulnerabilities) { this.vulnerabilities = vulnerabilities; }

src/main/java/org/cyclonedx/model/Evidence.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ public void addCopyright(Copyright copyright) {
9999
@JsonProperty("occurrences")
100100
@JacksonXmlElementWrapper(localName = "occurrences")
101101
@JacksonXmlProperty(localName = "occurrence")
102+
@VersionFilter(Version.VERSION_15)
102103
public List<Occurrence> getOccurrences() {
103104
return occurrences;
104105
}
@@ -119,6 +120,7 @@ public void setCallstack(final Callstack callstack) {
119120
@JacksonXmlProperty(localName = "identity")
120121
@JsonProperty("identity")
121122
@JsonDeserialize(using = IdentityDeserializer.class)
123+
@VersionFilter(Version.VERSION_15)
122124
public List<Identity> getIdentities() {
123125
return identities;
124126
}

src/main/java/org/cyclonedx/model/ExternalReference.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ public enum Type {
7373
BUILD_SYSTEM("build-system"),
7474
@JsonProperty("release-notes")
7575
RELEASE_NOTES("release-notes"),
76+
@VersionFilter(Version.VERSION_15)
7677
@JsonProperty("security-contact")
7778
SECURITY_CONTACT("security-contact"),
7879
@JsonProperty("model_card")
@@ -180,6 +181,7 @@ public void setComment(String comment) {
180181

181182
@JacksonXmlElementWrapper(localName = "hashes")
182183
@JacksonXmlProperty(localName = "hash")
184+
@VersionFilter(Version.VERSION_13)
183185
public List<Hash> getHashes() {
184186
return hashes;
185187
}

src/main/java/org/cyclonedx/model/Hash.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
import com.fasterxml.jackson.annotation.JsonProperty;
2424
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
2525
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlText;
26+
import org.cyclonedx.Version;
27+
2628
import java.util.Objects;
2729

2830
@SuppressWarnings("unused")
@@ -37,11 +39,16 @@ public enum Algorithm {
3739
SHA_384("SHA-384"),
3840
SHA_512("SHA-512"),
3941
SHA3_256("SHA3-256"),
40-
SHA3_384("SHA3-384"),
4142
SHA3_512("SHA3-512"),
43+
@VersionFilter(Version.VERSION_12)
44+
SHA3_384("SHA3-384"),
45+
@VersionFilter(Version.VERSION_12)
4246
BLAKE2b_256("BLAKE2b-256"),
47+
@VersionFilter(Version.VERSION_12)
4348
BLAKE2b_384("BLAKE2b-384"),
49+
@VersionFilter(Version.VERSION_12)
4450
BLAKE2b_512("BLAKE2b-512"),
51+
@VersionFilter(Version.VERSION_12)
4552
BLAKE3("BLAKE3");
4653

4754
private final String spec;
@@ -53,6 +60,15 @@ public enum Algorithm {
5360
public String getSpec() {
5461
return spec;
5562
}
63+
64+
public static Algorithm fromSpec(String spec) {
65+
for (Algorithm algorithm : values()) {
66+
if (algorithm.spec.equalsIgnoreCase(spec)) {
67+
return algorithm;
68+
}
69+
}
70+
throw new IllegalArgumentException("No enum constant with spec " + spec);
71+
}
5672
}
5773

5874
@JacksonXmlProperty(localName = "alg", isAttribute = true)

src/main/java/org/cyclonedx/model/License.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,10 @@ public class License extends ExtensibleElement {
5858

5959
@JacksonXmlProperty(localName = "text")
6060
@JsonProperty("text")
61+
@VersionFilter(Version.VERSION_11)
6162
private AttachmentText attachmentText;
63+
64+
@VersionFilter(Version.VERSION_11)
6265
private String url;
6366

6467
@VersionFilter(Version.VERSION_15)
@@ -96,10 +99,12 @@ public void setLicensing(final Licensing licensing) {
9699
this.licensing = licensing;
97100
}
98101

102+
@VersionFilter(Version.VERSION_11)
99103
public String getUrl() {
100104
return url;
101105
}
102106

107+
@VersionFilter(Version.VERSION_11)
103108
public void setUrl(String url) {
104109
this.url = url;
105110
}

src/main/java/org/cyclonedx/model/Property.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
2222
import com.fasterxml.jackson.annotation.JsonInclude;
23+
import com.fasterxml.jackson.annotation.JsonInclude.Include;
2324
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
2425
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
2526
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
@@ -29,7 +30,7 @@
2930
import java.util.Objects;
3031

3132
@JsonIgnoreProperties(ignoreUnknown = true)
32-
@JsonInclude(JsonInclude.Include.NON_NULL)
33+
@JsonInclude(Include.NON_EMPTY)
3334
@JsonPropertyOrder({"name", "value"})
3435
@JsonDeserialize(using = PropertyDeserializer.class)
3536
public class Property extends ExtensibleElement {

src/main/java/org/cyclonedx/model/VersionFilter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
import org.cyclonedx.Version;
2727

2828
@Retention(RetentionPolicy.RUNTIME)
29-
@Target(ElementType.FIELD)
29+
@Target({ElementType.METHOD, ElementType.FIELD})
3030
public @interface VersionFilter {
3131
//Version where the attribute was introduced
3232
Version value();

src/main/java/org/cyclonedx/model/vulnerability/Vulnerability.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -392,10 +392,12 @@ public enum Method {
392392
CVSSV3("CVSSv3"),
393393
@JsonProperty("CVSSv31")
394394
CVSSV31("CVSSv31"),
395+
@VersionFilter(org.cyclonedx.Version.VERSION_15)
395396
@JsonProperty("CVSSv4")
396397
CVSSV4("CVSSv4"),
397398
@JsonProperty("OWASP")
398399
OWASP("OWASP"),
400+
@VersionFilter(org.cyclonedx.Version.VERSION_15)
399401
@JsonProperty("SSVC")
400402
SSVC("SSVC"),
401403
@JsonProperty("other")

0 commit comments

Comments
 (0)