in JetBrains.SbomUtils/src/JetBrains.SbomUtils/SbomReader.cs [29:58]
public SpdxDocument ReadSbom(Stream stream)
{
SpdxDocument? spdxDocument;
try
{
using (StreamReader file = new StreamReader(stream))
{
JsonSerializer serializer = new JsonSerializer();
spdxDocument = serializer.Deserialize<SpdxDocument>(new JsonTextReader(file));
}
if (spdxDocument == null)
throw new SbomValidationException("Failed to parse the SBOM");
}
catch (Exception e)
{
throw new SbomValidationException($"Failed to parse the SBOM: {e.Message}", e);
}
spdxDocument.Packages ??= new List<Package>();
spdxDocument.Files ??= new List<File>();
spdxDocument.Relationships ??= new List<Relationship>();
_logger.LogDebug("Loaded {packages} packages, {files} files and {relationships} relationships",
spdxDocument.Packages.Count,
spdxDocument.Files.Count,
spdxDocument.Relationships.Count);
return spdxDocument;
}