Skip to content

Commit 5f9214d

Browse files
committed
feature(spdx)!: serialize referenceCategory using hyphens by default so it matches SPDX 2.2.2
Signed-off-by: Wessel Terpstra <wessel@wesselterpstra.com>
1 parent 7e6f223 commit 5f9214d

11 files changed

Lines changed: 27 additions & 10 deletions

src/CycloneDX.Spdx/Models/v2_2/ExternalRef.cs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
// Copyright (c) OWASP Foundation. All Rights Reserved.
1717

1818
using System;
19+
using System.Reflection;
20+
using System.Runtime.Serialization;
1921
using System.Text.Json.Serialization;
2022
using System.Xml.Serialization;
2123

@@ -39,7 +41,16 @@ public class ExternalRef
3941
[JsonIgnore]
4042
public string ReferenceCategoryAsString
4143
{
42-
get => ReferenceCategory.ToString();
44+
get
45+
{
46+
switch (ReferenceCategory)
47+
{
48+
case ExternalRefCategory.PACKAGE_MANAGER:
49+
return "PACKAGE-MANAGER";
50+
default:
51+
return ReferenceCategory.ToString();
52+
}
53+
}
4354
set
4455
{
4556
switch (value.ToUpperInvariant())

src/CycloneDX.Spdx/Models/v2_2/ExternalRefCategory.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,15 @@
1616
// Copyright (c) OWASP Foundation. All Rights Reserved.
1717

1818
using System;
19+
using System.Runtime.Serialization;
1920

2021
namespace CycloneDX.Spdx.Models.v2_2
2122
{
2223
public enum ExternalRefCategory
2324
{
2425
OTHER,
2526
SECURITY,
27+
[EnumMember(Value = "PACKAGE-MANAGER")]
2628
PACKAGE_MANAGER,
2729
}
2830
}

src/CycloneDX.Spdx/Serialization/Converters/HyphenToUnderscoreEnumConverter.cs renamed to src/CycloneDX.Spdx/Serialization/Converters/HyphenEnumConverter.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
namespace CycloneDX.Spdx.Serialization.Converters
2424
{
2525

26-
public class HyphenToUnderscoreEnumConverter<T> : JsonConverter<T> where T: struct
26+
public class HyphenEnumConverter<T> : JsonConverter<T> where T: struct
2727
{
2828
public override T Read(
2929
ref Utf8JsonReader reader,
@@ -56,7 +56,7 @@ public override void Write(
5656
JsonSerializerOptions options)
5757
{
5858
Contract.Requires(writer != null);
59-
writer.WriteStringValue(value.ToString());
59+
writer.WriteStringValue(value.ToString().Replace('_', '-'));
6060
}
6161
}
6262
}

src/CycloneDX.Spdx/Serialization/JsonSerializer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public static JsonSerializerOptions GetJsonSerializerOptions_v2_2()
4040
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
4141
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
4242
};
43-
options.Converters.Add(new HyphenToUnderscoreEnumConverter<ExternalRefCategory>());
43+
options.Converters.Add(new HyphenEnumConverter<ExternalRefCategory>());
4444
options.Converters.Add(new JsonStringEnumConverter());
4545
return options;
4646
}

tests/CycloneDX.Spdx.Tests/CycloneDX.Spdx.Tests.csproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,8 @@
3333
<ProjectReference Include="..\..\src\CycloneDX.Spdx\CycloneDX.Spdx.csproj" />
3434
</ItemGroup>
3535

36+
<ItemGroup>
37+
<Folder Include="__snapshots__\" />
38+
</ItemGroup>
39+
3640
</Project>

tests/CycloneDX.Spdx.Tests/__snapshots__/JsonSerializerTests.JsonAsyncRoundTripTest_document-with-hyphens-in-external-reference-category.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@
171171
"downloadLocation": "https://search.maven.org/remotecontent?filepath=org/apache/jena/apache-jena/3.12.0/apache-jena-3.12.0.tar.gz",
172172
"externalRefs": [
173173
{
174-
"referenceCategory": "PACKAGE_MANAGER",
174+
"referenceCategory": "PACKAGE-MANAGER",
175175
"referenceLocator": "pkg:maven/org.apache.jena/apache-jena@3.12.0",
176176
"referenceType": "purl"
177177
}

tests/CycloneDX.Spdx.Tests/__snapshots__/JsonSerializerTests.JsonAsyncRoundTripTest_document.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@
171171
"downloadLocation": "https://search.maven.org/remotecontent?filepath=org/apache/jena/apache-jena/3.12.0/apache-jena-3.12.0.tar.gz",
172172
"externalRefs": [
173173
{
174-
"referenceCategory": "PACKAGE_MANAGER",
174+
"referenceCategory": "PACKAGE-MANAGER",
175175
"referenceLocator": "pkg:maven/org.apache.jena/apache-jena@3.12.0",
176176
"referenceType": "purl"
177177
}

tests/CycloneDX.Spdx.Tests/__snapshots__/JsonSerializerTests.JsonRoundTripTest_document-with-hyphens-in-external-reference-category.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@
171171
"downloadLocation": "https://search.maven.org/remotecontent?filepath=org/apache/jena/apache-jena/3.12.0/apache-jena-3.12.0.tar.gz",
172172
"externalRefs": [
173173
{
174-
"referenceCategory": "PACKAGE_MANAGER",
174+
"referenceCategory": "PACKAGE-MANAGER",
175175
"referenceLocator": "pkg:maven/org.apache.jena/apache-jena@3.12.0",
176176
"referenceType": "purl"
177177
}

tests/CycloneDX.Spdx.Tests/__snapshots__/JsonSerializerTests.JsonRoundTripTest_document.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@
171171
"downloadLocation": "https://search.maven.org/remotecontent?filepath=org/apache/jena/apache-jena/3.12.0/apache-jena-3.12.0.tar.gz",
172172
"externalRefs": [
173173
{
174-
"referenceCategory": "PACKAGE_MANAGER",
174+
"referenceCategory": "PACKAGE-MANAGER",
175175
"referenceLocator": "pkg:maven/org.apache.jena/apache-jena@3.12.0",
176176
"referenceType": "purl"
177177
}

tests/CycloneDX.Spdx.Tests/__snapshots__/XmlSerializerTests.XmlRoundTripTest_document-with-hyphens-in-external-reference-category.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@
267267
<copyrightText>NOASSERTION</copyrightText>
268268
<downloadLocation>https://search.maven.org/remotecontent?filepath=org/apache/jena/apache-jena/3.12.0/apache-jena-3.12.0.tar.gz</downloadLocation>
269269
<externalRefs>
270-
<referenceCategory>PACKAGE_MANAGER</referenceCategory>
270+
<referenceCategory>PACKAGE-MANAGER</referenceCategory>
271271
<referenceLocator>pkg:maven/org.apache.jena/apache-jena@3.12.0</referenceLocator>
272272
<referenceType>purl</referenceType>
273273
</externalRefs>

0 commit comments

Comments
 (0)