Skip to content

Commit b9193a2

Browse files
authored
BomRef.value default None (#505)
--------- Signed-off-by: Jan Kowalleck <[email protected]>
1 parent ef76c49 commit b9193a2

20 files changed

+43
-68
lines changed

cyclonedx/model/bom_ref.py

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
# Copyright (c) OWASP Foundation. All Rights Reserved.
1717

1818
from typing import Any, Optional
19-
from uuid import uuid4
2019

2120

2221
class BomRef:
@@ -30,31 +29,31 @@ class BomRef:
3029
"""
3130

3231
def __init__(self, value: Optional[str] = None) -> None:
33-
self.value = value or str(uuid4())
32+
self.value = value
3433

3534
@property
36-
def value(self) -> str:
35+
def value(self) -> Optional[str]:
3736
return self._value
3837

3938
@value.setter
40-
def value(self, value: str) -> None:
41-
self._value = value
39+
def value(self, value: Optional[str]) -> None:
40+
self._value = value or None
4241

4342
def __eq__(self, other: object) -> bool:
4443
if isinstance(other, BomRef):
45-
return other.value == self.value
44+
return str(other) == str(self)
4645
return False
4746

4847
def __lt__(self, other: Any) -> bool:
4948
if isinstance(other, BomRef):
50-
return self.value < other.value
49+
return str(self) < str(other)
5150
return NotImplemented
5251

5352
def __hash__(self) -> int:
54-
return hash(self.value)
53+
return hash(str(self))
5554

5655
def __repr__(self) -> str:
57-
return f'<BomRef {self.value}>'
56+
return f'<BomRef {self._value!r}>'
5857

5958
def __str__(self) -> str:
60-
return self.value
59+
return self.value or ''

cyclonedx/output/__init__.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -150,13 +150,13 @@ def __exit__(self, exc_type: Any, exc_val: Any, exc_tb: Any) -> None:
150150
self.reset()
151151

152152
def discriminate(self) -> None:
153-
known_values = set()
153+
known_values = []
154154
for bomref, _ in self._bomrefs:
155155
value = bomref.value
156-
if value in known_values:
156+
if value is None or value in known_values:
157157
value = self._make_unique()
158158
bomref.value = value
159-
known_values.add(value)
159+
known_values.append(value)
160160

161161
def reset(self) -> None:
162162
for bomref, original_value in self._bomrefs:

cyclonedx/serialization/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
class BomRefHelper(BaseHelper):
3939

4040
@classmethod
41-
def serialize(cls, o: Any) -> str:
41+
def serialize(cls, o: Any) -> Optional[str]:
4242
if isinstance(o, BomRef):
4343
return o.value
4444
raise SerializationOfUnexpectedValueException(

tests/_data/models.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -360,7 +360,9 @@ def get_bom_with_nested_services() -> Bom:
360360
bom_ref='my-specific-bom-ref-for-my-second-service',
361361
services=[
362362
Service(
363-
name='yet-another-nested-service', provider=get_org_entity_1(), group='what-group', version='6.5.4'
363+
name='yet-another-nested-service',
364+
bom_ref='yet-another-nested-service',
365+
provider=get_org_entity_1(), group='what-group', version='6.5.4'
364366
),
365367
Service(
366368
name='another-nested-service',

tests/_data/snapshots/get_bom_with_nested_services-1.2.json.bin

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@
114114
"name": "my-second-service",
115115
"services": [
116116
{
117-
"bom-ref": "00000000-0000-4000-8000-000000000004",
117+
"bom-ref": "yet-another-nested-service",
118118
"group": "what-group",
119119
"name": "yet-another-nested-service",
120120
"provider": {

tests/_data/snapshots/get_bom_with_nested_services-1.2.xml.bin

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@
8282
<service bom-ref="my-specific-bom-ref-for-my-second-service">
8383
<name>my-second-service</name>
8484
<services>
85-
<service bom-ref="00000000-0000-4000-8000-000000000004">
85+
<service bom-ref="yet-another-nested-service">
8686
<provider>
8787
<name>CycloneDX</name>
8888
<url>https://cyclonedx.org</url>

tests/_data/snapshots/get_bom_with_nested_services-1.3.json.bin

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@
130130
"name": "my-second-service",
131131
"services": [
132132
{
133-
"bom-ref": "00000000-0000-4000-8000-000000000003",
133+
"bom-ref": "yet-another-nested-service",
134134
"group": "what-group",
135135
"name": "yet-another-nested-service",
136136
"provider": {

tests/_data/snapshots/get_bom_with_nested_services-1.3.xml.bin

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@
8989
<service bom-ref="my-specific-bom-ref-for-my-second-service">
9090
<name>my-second-service</name>
9191
<services>
92-
<service bom-ref="00000000-0000-4000-8000-000000000003">
92+
<service bom-ref="yet-another-nested-service">
9393
<provider>
9494
<name>CycloneDX</name>
9595
<url>https://cyclonedx.org</url>

tests/_data/snapshots/get_bom_with_nested_services-1.4.json.bin

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@
223223
"name": "my-second-service",
224224
"services": [
225225
{
226-
"bom-ref": "00000000-0000-4000-8000-000000000002",
226+
"bom-ref": "yet-another-nested-service",
227227
"group": "what-group",
228228
"name": "yet-another-nested-service",
229229
"provider": {

tests/_data/snapshots/get_bom_with_nested_services-1.4.xml.bin

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@
159159
<service bom-ref="my-specific-bom-ref-for-my-second-service">
160160
<name>my-second-service</name>
161161
<services>
162-
<service bom-ref="00000000-0000-4000-8000-000000000002">
162+
<service bom-ref="yet-another-nested-service">
163163
<provider>
164164
<name>CycloneDX</name>
165165
<url>https://cyclonedx.org</url>

0 commit comments

Comments
 (0)