Skip to content

Commit d3f8214

Browse files
authored
Merge pull request #627 from CycloneDX/issue_616
Fix wrong property type in `ComponentData.content` Fixes #616
2 parents c1ab197 + bfcb876 commit d3f8214

File tree

6 files changed

+62
-5
lines changed

6 files changed

+62
-5
lines changed

src/main/java/org/cyclonedx/model/component/data/Content.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@
22

33
import java.util.List;
44
import java.util.Objects;
5-
import java.util.Properties;
65

76
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
87
import com.fasterxml.jackson.annotation.JsonInclude;
8+
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
99
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
1010
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
1111
import org.cyclonedx.model.AttachmentText;
12+
import org.cyclonedx.model.Property;
13+
import org.cyclonedx.util.deserializer.PropertiesDeserializer;
1214

1315
@JsonIgnoreProperties(ignoreUnknown = true)
1416
@JsonInclude(JsonInclude.Include.NON_EMPTY)
@@ -18,7 +20,7 @@ public class Content
1820

1921
private String url;
2022

21-
private List<Properties> properties;
23+
private List<Property> properties;
2224

2325
public AttachmentText getAttachment() {
2426
return attachment;
@@ -38,11 +40,12 @@ public void setUrl(final String url) {
3840

3941
@JacksonXmlElementWrapper(localName = "properties")
4042
@JacksonXmlProperty(localName = "property")
41-
public List<Properties> getProperties() {
43+
@JsonDeserialize(using = PropertiesDeserializer.class)
44+
public List<Property> getProperties() {
4245
return properties;
4346
}
4447

45-
public void setProperties(final List<Properties> properties) {
48+
public void setProperties(final List<Property> properties) {
4649
this.properties = properties;
4750
}
4851

src/main/java/org/cyclonedx/model/component/modelCard/ModelParameters.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,13 @@
88
import com.fasterxml.jackson.annotation.JsonProperty;
99
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
1010
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
11+
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
1112
import org.cyclonedx.model.ExtensibleElement;
1213
import org.cyclonedx.model.component.data.DatasetChoice;
1314

1415
@JsonIgnoreProperties(ignoreUnknown = true)
1516
@JsonInclude(JsonInclude.Include.NON_EMPTY)
17+
@JacksonXmlRootElement(localName = "modelParameters")
1618
public class ModelParameters extends ExtensibleElement
1719
{
1820
private Approach approach;

src/test/java/org/cyclonedx/parsers/JsonParserTest.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,10 @@
4848
import org.cyclonedx.model.component.crypto.enums.ImplementationPlatform;
4949
import org.cyclonedx.model.component.crypto.enums.Mode;
5050
import org.cyclonedx.model.component.crypto.enums.Primitive;
51+
import org.cyclonedx.model.component.data.Content;
5152
import org.cyclonedx.model.component.evidence.Identity;
5253
import org.cyclonedx.model.component.modelCard.Considerations;
54+
import org.cyclonedx.model.component.modelCard.ModelParameters;
5355
import org.cyclonedx.model.component.modelCard.consideration.EnvironmentalConsideration;
5456
import org.cyclonedx.model.component.modelCard.consideration.consumption.Activity;
5557
import org.cyclonedx.model.component.modelCard.consideration.consumption.EnergyConsumption;
@@ -352,6 +354,23 @@ public void schema16_ml_considerations() throws Exception {
352354
assertNull(eec.getProperties());
353355
}
354356

357+
@Test
358+
public void schema16_ml() throws Exception {
359+
final Bom bom = getJsonBom("1.6/valid-machine-learning-1.6.json");
360+
361+
assertNotNull(bom.getComponents());
362+
ModelCard mc = bom.getComponents().get(0).getModelCard();
363+
assertNotNull(mc);
364+
365+
ModelParameters mp = mc.getModelParameters();
366+
assertNotNull(mp);
367+
368+
Content content = mp.getDatasets().get(0).getComponentData().getContents();
369+
assertNotNull(content);
370+
371+
assertEquals(2, content.getProperties().size());
372+
}
373+
355374
@Test
356375
public void schema16_component_identifiers() throws Exception {
357376
final Bom bom = getJsonBom("1.6/valid-component-identifiers-1.6.json");

src/test/java/org/cyclonedx/parsers/XmlParserTest.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,10 @@
4949
import org.cyclonedx.model.component.crypto.enums.ImplementationPlatform;
5050
import org.cyclonedx.model.component.crypto.enums.Mode;
5151
import org.cyclonedx.model.component.crypto.enums.Primitive;
52+
import org.cyclonedx.model.component.data.Content;
5253
import org.cyclonedx.model.component.evidence.Identity;
5354
import org.cyclonedx.model.component.modelCard.Considerations;
55+
import org.cyclonedx.model.component.modelCard.ModelParameters;
5456
import org.cyclonedx.model.component.modelCard.consideration.EnvironmentalConsideration;
5557
import org.cyclonedx.model.component.modelCard.consideration.consumption.Activity;
5658
import org.cyclonedx.model.component.modelCard.consideration.consumption.EnergyConsumption;
@@ -497,6 +499,23 @@ public void schema16_ml_considerations() throws Exception {
497499
assertNull(eec.getProperties());
498500
}
499501

502+
@Test
503+
public void schema16_ml_content() throws Exception {
504+
final Bom bom = getXmlBom("1.6/valid-machine-learning-1.6.xml");
505+
506+
assertNotNull(bom.getComponents());
507+
ModelCard mc = bom.getComponents().get(0).getModelCard();
508+
assertNotNull(mc);
509+
510+
ModelParameters mp = mc.getModelParameters();
511+
assertNotNull(mp);
512+
513+
Content content = mp.getDatasets().get(0).getComponentData().getContents();
514+
assertNotNull(content);
515+
516+
assertEquals(2, content.getProperties().size());
517+
}
518+
500519
@Test
501520
public void schema16_component_identifiers() throws Exception {
502521
final Bom bom = getXmlBom("1.6/valid-component-identifiers-1.6.xml");

src/test/resources/1.6/valid-machine-learning-1.6.json

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,17 @@
2626
"type": "dataset",
2727
"name": "Training Data",
2828
"contents": {
29-
"url": "https://example.com/path/to/dataset"
29+
"url": "https://example.com/path/to/dataset",
30+
"properties": [
31+
{
32+
"name": "Foo",
33+
"value": "Bar"
34+
},
35+
{
36+
"name": "Foo",
37+
"value": "Two"
38+
}
39+
]
3040
},
3141
"classification": "public"
3242
}

src/test/resources/1.6/valid-machine-learning-1.6.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@
2121
<name>Training Data</name>
2222
<contents>
2323
<url>https://example.com/path/to/dataset</url>
24+
<properties>
25+
<property name="foo">bar</property>
26+
<property name="foo1">bar2</property>
27+
</properties>
2428
</contents>
2529
<classification>public</classification>
2630
</dataset>

0 commit comments

Comments
 (0)