aboutsummaryrefslogtreecommitdiff
path: root/rdfloader
diff options
context:
space:
mode:
authorRishabh Bhatnagar <bhatnagarrishabh4@gmail.com>2020-11-11 20:56:55 +0530
committerRishabh Bhatnagar <bhatnagarrishabh4@gmail.com>2020-11-12 06:55:31 +0530
commit20e06832ced7051ddd4ad40fcfedacdc9b3c8abc (patch)
treedabb57a32212cb7d7703666d2c3957418193799f /rdfloader
parent5896dbaf2a29bc6279df83a9f48e66bfea600448 (diff)
downloadspdx-tools-20e06832ced7051ddd4ad40fcfedacdc9b3c8abc.tar.gz
Use Updated ExternalDocumentRef For RDFLoader
- ExternalDocumentRef is now a struct instead of a coalesced string - Also, added dependency of github.com/spdx/gordf in go.mod file Signed-off-by: Rishabh Bhatnagar <bhatnagarrishabh4@gmail.com>
Diffstat (limited to 'rdfloader')
-rw-r--r--rdfloader/parser2v2/parse_spdx_document.go24
-rw-r--r--rdfloader/parser2v2/parser.go4
2 files changed, 15 insertions, 13 deletions
diff --git a/rdfloader/parser2v2/parse_spdx_document.go b/rdfloader/parser2v2/parse_spdx_document.go
index c6b9b19..e98fbf6 100644
--- a/rdfloader/parser2v2/parse_spdx_document.go
+++ b/rdfloader/parser2v2/parse_spdx_document.go
@@ -42,9 +42,12 @@ func (parser *rdfParser2_2) parseSpdxDocumentNode(spdxDocNode *gordfParser.Node)
ci.DocumentName = objectValue
case SPDX_EXTERNAL_DOCUMENT_REF: // 2.6: externalDocumentReferences
// cardinality: min 0
- var extRef string
+ var extRef spdx.ExternalDocumentRef2_2
extRef, err = parser.getExternalDocumentRefFromNode(subTriple.Object)
- ci.ExternalDocumentReferences = append(ci.ExternalDocumentReferences, extRef)
+ if err != nil {
+ return err
+ }
+ ci.ExternalDocumentReferences[extRef.DocumentRefID] = extRef
case SPDX_CREATION_INFO: // 2.7 - 2.10:
// cardinality: exactly 1
err = parser.parseCreationInfoFromNode(ci, subTriple.Object)
@@ -86,31 +89,28 @@ func (parser *rdfParser2_2) parseSpdxDocumentNode(spdxDocNode *gordfParser.Node)
return nil
}
-func (parser *rdfParser2_2) getExternalDocumentRefFromNode(node *gordfParser.Node) (string, error) {
- var docID, checksumValue, checksumAlgorithm, spdxDocument string
- var err error
+func (parser *rdfParser2_2) getExternalDocumentRefFromNode(node *gordfParser.Node) (edr spdx.ExternalDocumentRef2_2, err error) {
for _, triple := range parser.nodeToTriples(node) {
switch triple.Predicate.ID {
case SPDX_EXTERNAL_DOCUMENT_ID:
// cardinality: exactly 1
- docID = triple.Object.ID
+ edr.DocumentRefID = triple.Object.ID
case SPDX_SPDX_DOCUMENT:
// cardinality: exactly 1
// assumption: "spdxDocument" property of an external document
// reference is just a uri which doesn't follow a spdxDocument definition
- spdxDocument = triple.Object.ID
+ edr.URI = triple.Object.ID
case SPDX_CHECKSUM:
// cardinality: exactly 1
- checksumAlgorithm, checksumValue, err = parser.getChecksumFromNode(triple.Object)
+ edr.Alg, edr.Checksum, err = parser.getChecksumFromNode(triple.Object)
if err != nil {
- return "", err
+ return edr, err
}
case RDF_TYPE:
continue
default:
- return "", fmt.Errorf("unknown predicate ID (%s) while parsing externalDocumentReference", triple.Predicate.ID)
+ return edr, fmt.Errorf("unknown predicate ID (%s) while parsing externalDocumentReference", triple.Predicate.ID)
}
}
- // transform the variables into string form (same as that of tag-value).
- return fmt.Sprintf("%s %s %s: %s", docID, spdxDocument, checksumAlgorithm, checksumValue), nil
+ return edr, nil
}
diff --git a/rdfloader/parser2v2/parser.go b/rdfloader/parser2v2/parser.go
index 3b0fac9..4f1adc0 100644
--- a/rdfloader/parser2v2/parser.go
+++ b/rdfloader/parser2v2/parser.go
@@ -16,7 +16,9 @@ func NewParser2_2(gordfParserObj *gordfParser.Parser, nodeToTriples map[string][
gordfParserObj: gordfParserObj,
nodeStringToTriples: nodeToTriples,
doc: &spdx.Document2_2{
- CreationInfo: &spdx.CreationInfo2_2{},
+ CreationInfo: &spdx.CreationInfo2_2{
+ ExternalDocumentReferences: map[string]spdx.ExternalDocumentRef2_2{},
+ },
Packages: map[spdx.ElementID]*spdx.Package2_2{},
UnpackagedFiles: map[spdx.ElementID]*spdx.File2_2{},
OtherLicenses: []*spdx.OtherLicense2_2{},