Skip to content

Commit cf4fab5

Browse files
authored
Merge pull request #618 from justahero/refactor-bom-version
Update 'version' to be required field
2 parents d5df6c2 + 1ad3201 commit cf4fab5

File tree

3 files changed

+19
-25
lines changed

3 files changed

+19
-25
lines changed

cyclonedx-bom/src/specs/v1_3/bom.rs

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ use xml::{reader, writer::XmlEvent};
4444
pub(crate) struct Bom {
4545
bom_format: BomFormat,
4646
spec_version: SpecVersion,
47-
version: Option<u32>,
47+
version: u32,
4848
serial_number: Option<UrnUuid>,
4949
#[serde(skip_serializing_if = "Option::is_none")]
5050
metadata: Option<Metadata>,
@@ -69,7 +69,7 @@ impl TryFrom<models::bom::Bom> for Bom {
6969
Ok(Self {
7070
bom_format: BomFormat::CycloneDX,
7171
spec_version: SpecVersion::V1_3,
72-
version: Some(other.version),
72+
version: other.version,
7373
serial_number: convert_optional(other.serial_number),
7474
metadata: try_convert_optional(other.metadata)?,
7575
components: try_convert_optional(other.components)?,
@@ -85,7 +85,7 @@ impl TryFrom<models::bom::Bom> for Bom {
8585
impl From<Bom> for models::bom::Bom {
8686
fn from(other: Bom) -> Self {
8787
Self {
88-
version: other.version.unwrap_or(1),
88+
version: other.version,
8989
serial_number: convert_optional(other.serial_number),
9090
metadata: convert_optional(other.metadata),
9191
components: convert_optional(other.components),
@@ -109,17 +109,15 @@ impl ToXml for Bom {
109109
&self,
110110
writer: &mut xml::EventWriter<W>,
111111
) -> Result<(), crate::errors::XmlWriteError> {
112-
let version = self.version.map(|v| format!("{}", v));
112+
let version = format!("{}", self.version);
113113
let mut bom_start_element =
114114
XmlEvent::start_element(BOM_TAG).default_ns("http://cyclonedx.org/schema/bom/1.3");
115115

116116
if let Some(serial_number) = &self.serial_number {
117117
bom_start_element = bom_start_element.attr(SERIAL_NUMBER_ATTR, &serial_number.0);
118118
}
119119

120-
if let Some(version) = &version {
121-
bom_start_element = bom_start_element.attr(VERSION_ATTR, version);
122-
}
120+
bom_start_element = bom_start_element.attr(VERSION_ATTR, version.as_str());
123121

124122
writer
125123
.write(bom_start_element)
@@ -196,10 +194,9 @@ impl FromXmlDocument for Bom {
196194
expected_namespace_or_error("1.3", &namespace)?;
197195
let version =
198196
if let Some(version) = optional_attribute(&attributes, VERSION_ATTR) {
199-
let version = u32::from_xml_value(VERSION_ATTR, version)?;
200-
Some(version)
197+
u32::from_xml_value(VERSION_ATTR, version)?
201198
} else {
202-
None
199+
1
203200
};
204201
let serial_number =
205202
optional_attribute(&attributes, SERIAL_NUMBER_ATTR).map(UrnUuid);
@@ -361,7 +358,7 @@ pub(crate) mod test {
361358
Bom {
362359
bom_format: BomFormat::CycloneDX,
363360
spec_version: SpecVersion::V1_3,
364-
version: Some(1),
361+
version: 1,
365362
serial_number: Some(UrnUuid("fake-uuid".to_string())),
366363
metadata: None,
367364
components: None,
@@ -377,7 +374,7 @@ pub(crate) mod test {
377374
Bom {
378375
bom_format: BomFormat::CycloneDX,
379376
spec_version: SpecVersion::V1_3,
380-
version: Some(1),
377+
version: 1,
381378
serial_number: Some(UrnUuid("fake-uuid".to_string())),
382379
metadata: Some(example_metadata()),
383380
components: Some(example_components()),

cyclonedx-bom/src/specs/v1_4/bom.rs

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ use xml::{reader, writer::XmlEvent};
4141
pub(crate) struct Bom {
4242
bom_format: BomFormat,
4343
spec_version: SpecVersion,
44-
version: Option<u32>,
44+
version: u32,
4545
serial_number: Option<UrnUuid>,
4646
#[serde(skip_serializing_if = "Option::is_none")]
4747
metadata: Option<Metadata>,
@@ -68,7 +68,7 @@ impl From<models::bom::Bom> for Bom {
6868
Self {
6969
bom_format: BomFormat::CycloneDX,
7070
spec_version: SpecVersion::V1_4,
71-
version: Some(other.version),
71+
version: other.version,
7272
serial_number: convert_optional(other.serial_number),
7373
metadata: convert_optional(other.metadata),
7474
components: convert_optional(other.components),
@@ -86,7 +86,7 @@ impl From<models::bom::Bom> for Bom {
8686
impl From<Bom> for models::bom::Bom {
8787
fn from(other: Bom) -> Self {
8888
Self {
89-
version: other.version.unwrap_or(1),
89+
version: other.version,
9090
serial_number: convert_optional(other.serial_number),
9191
metadata: convert_optional(other.metadata),
9292
components: convert_optional(other.components),
@@ -110,17 +110,15 @@ impl ToXml for Bom {
110110
&self,
111111
writer: &mut xml::EventWriter<W>,
112112
) -> Result<(), crate::errors::XmlWriteError> {
113-
let version = self.version.map(|v| format!("{}", v));
113+
let version = format!("{}", self.version);
114114
let mut bom_start_element =
115115
XmlEvent::start_element(BOM_TAG).default_ns("http://cyclonedx.org/schema/bom/1.4");
116116

117117
if let Some(serial_number) = &self.serial_number {
118118
bom_start_element = bom_start_element.attr(SERIAL_NUMBER_ATTR, &serial_number.0);
119119
}
120120

121-
if let Some(version) = &version {
122-
bom_start_element = bom_start_element.attr(VERSION_ATTR, version);
123-
}
121+
bom_start_element = bom_start_element.attr(VERSION_ATTR, version.as_str());
124122

125123
writer
126124
.write(bom_start_element)
@@ -203,10 +201,9 @@ impl FromXmlDocument for Bom {
203201
expected_namespace_or_error("1.4", &namespace)?;
204202
let version =
205203
if let Some(version) = optional_attribute(&attributes, VERSION_ATTR) {
206-
let version = u32::from_xml_value(VERSION_ATTR, version)?;
207-
Some(version)
204+
u32::from_xml_value(VERSION_ATTR, version)?
208205
} else {
209-
None
206+
1
210207
};
211208
let serial_number =
212209
optional_attribute(&attributes, SERIAL_NUMBER_ATTR).map(UrnUuid);
@@ -394,7 +391,7 @@ pub(crate) mod test {
394391
Bom {
395392
bom_format: BomFormat::CycloneDX,
396393
spec_version: SpecVersion::V1_4,
397-
version: Some(1),
394+
version: 1,
398395
serial_number: Some(UrnUuid("fake-uuid".to_string())),
399396
metadata: None,
400397
components: None,
@@ -412,7 +409,7 @@ pub(crate) mod test {
412409
Bom {
413410
bom_format: BomFormat::CycloneDX,
414411
spec_version: SpecVersion::V1_4,
415-
version: Some(1),
412+
version: 1,
416413
serial_number: Some(UrnUuid("fake-uuid".to_string())),
417414
metadata: Some(example_metadata()),
418415
components: Some(example_components()),

cyclonedx-bom/src/specs/v1_4/signature.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,7 @@ impl FromXml for Signature {
364364
got_end_tag = true;
365365
}
366366
_ => {
367-
let signer = Signer::read_xml_element(event_reader, &element_name, &[])?;
367+
let signer = Signer::read_xml_element(event_reader, element_name, &[])?;
368368
signature = Some(Signature::Single(signer));
369369
}
370370
}

0 commit comments

Comments
 (0)