diff options
author | Rishabh Bhatnagar <bhatnagarrishabh4@gmail.com> | 2020-11-11 20:56:55 +0530 |
---|---|---|
committer | Rishabh Bhatnagar <bhatnagarrishabh4@gmail.com> | 2020-11-12 06:55:31 +0530 |
commit | 20e06832ced7051ddd4ad40fcfedacdc9b3c8abc (patch) | |
tree | dabb57a32212cb7d7703666d2c3957418193799f | |
parent | 5896dbaf2a29bc6279df83a9f48e66bfea600448 (diff) | |
download | spdx-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>
-rw-r--r-- | go.mod | 2 | ||||
-rw-r--r-- | rdfloader/parser2v2/parse_spdx_document.go | 24 | ||||
-rw-r--r-- | rdfloader/parser2v2/parser.go | 4 |
3 files changed, 17 insertions, 13 deletions
@@ -1,3 +1,5 @@ module github.com/spdx/tools-golang go 1.13 + +require github.com/spdx/gordf v0.0.0-20201111095634-7098f93598fb 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{}, |