1818 */
1919package org .cyclonedx .model ;
2020
21+ import org .cyclonedx .Version ;
2122import com .fasterxml .jackson .annotation .JsonIgnoreProperties ;
2223import com .fasterxml .jackson .annotation .JsonInclude ;
2324import com .fasterxml .jackson .annotation .JsonProperty ;
@@ -36,6 +37,11 @@ public class Dependency extends BomReference {
3637 @ JacksonXmlProperty (localName = "dependency" )
3738 private List <Dependency > dependencies ;
3839
40+ @ VersionFilter (Version .VERSION_16 )
41+ @ JsonProperty ("provides" )
42+ @ JacksonXmlProperty (localName = "provides" )
43+ private List <Dependency > provides ;
44+
3945 public Dependency (final String ref ) {
4046 super (ref );
4147 }
@@ -60,6 +66,26 @@ public void addDependency(final Dependency dependency) {
6066 }
6167 }
6268
69+ @ VersionFilter (Version .VERSION_16 )
70+ public List <Dependency > getProvides () {
71+ return provides ;
72+ }
73+
74+ @ VersionFilter (Version .VERSION_16 )
75+ public void setProvides (final List <Dependency > provides ) {
76+ this .provides = provides ;
77+ }
78+
79+ @ VersionFilter (Version .VERSION_16 )
80+ public void addProvides (final Dependency dependency ) {
81+ if (provides == null ) {
82+ provides = new ArrayList <>();
83+ }
84+ boolean found = provides .stream ().anyMatch (d -> d .getRef ().equals (dependency .getRef ()));
85+ if (!found ) {
86+ provides .add (dependency );
87+ }
88+ }
6389 @ Override
6490 public boolean equals (Object o ) {
6591 if (this == o ) return true ;
0 commit comments