aboutsummaryrefslogtreecommitdiff
path: root/rdfloader/parser2v2/parse_relationship.go
diff options
context:
space:
mode:
authorRishabhBhatnagar <bhatnagarrishabh4@gmail.com>2020-08-27 13:02:50 +0530
committerRishabhBhatnagar <bhatnagarrishabh4@gmail.com>2020-08-27 13:02:50 +0530
commitf652816522876a038fed37d869039ee38311f253 (patch)
tree2ff40ce4c8d0a52d588025b02997b839333a365d /rdfloader/parser2v2/parse_relationship.go
parent35fc7e067f87dcffc84fee5e832d8346cac909a0 (diff)
downloadspdx-tools-f652816522876a038fed37d869039ee38311f253.tar.gz
Add Tests And Bug Fixes For parse_file.go
- noticeText can now assume two states: SPDX_NOASSERTION and string - add tests for parse_file.go file - relationship now returns the MUX error - getRelationshipTypeFromURI fixed - add constant for NS_SPDX+"Checksum" (SPDX_CHECKSUM_CAPITALIZED) - file Dependency set to the file being populated - add extended support for licenseInfoInFile Signed-off-by: RishabhBhatnagar <bhatnagarrishabh4@gmail.com>
Diffstat (limited to 'rdfloader/parser2v2/parse_relationship.go')
-rw-r--r--rdfloader/parser2v2/parse_relationship.go26
1 files changed, 16 insertions, 10 deletions
diff --git a/rdfloader/parser2v2/parse_relationship.go b/rdfloader/parser2v2/parse_relationship.go
index b51105b..b4c4704 100644
--- a/rdfloader/parser2v2/parse_relationship.go
+++ b/rdfloader/parser2v2/parse_relationship.go
@@ -26,7 +26,7 @@ func (parser *rdfParser2_2) parseRelationship(triple *gordfParser.Triple) (err e
switch subTriple.Predicate.ID {
case SPDX_RELATIONSHIP_TYPE:
// cardinality: exactly 1
- reln.Relationship, err = getRelationshipType(subTriple.Object.ID)
+ reln.Relationship, err = getRelationshipTypeFromURI(subTriple.Object.ID)
case RDF_TYPE:
// cardinality: exactly 1
continue
@@ -57,6 +57,9 @@ func (parser *rdfParser2_2) parseRelationship(triple *gordfParser.Triple) (err e
default:
return fmt.Errorf("unexpected predicate id: %s", subTriple.Predicate.ID)
}
+ if err != nil {
+ return err
+ }
}
parser.doc.Relationships = append(parser.doc.Relationships, &reln)
return nil
@@ -102,6 +105,8 @@ func (parser *rdfParser2_2) parseRelatedElementFromTriple(reln spdx.Relationship
return nil
}
+
+// references like RefA and RefB of any relationship
func getReferenceFromURI(uri string) (spdx.DocElementID, error) {
fragment := getLastPartOfURI(uri)
switch strings.ToLower(strings.TrimSpace(fragment)) {
@@ -114,18 +119,19 @@ func getReferenceFromURI(uri string) (spdx.DocElementID, error) {
return ExtractDocElementID(fragment)
}
-func getRelationshipType(relnType string) (string, error) {
- relnType = strings.TrimSpace(relnType)
- if !strings.HasPrefix(relnType, PREFIX_RELATIONSHIP_TYPE) {
- return "", fmt.Errorf("relationshipType must start with %s. found %s", PREFIX_RELATIONSHIP_TYPE, relnType)
+func getRelationshipTypeFromURI(relnTypeURI string) (string, error) {
+ relnTypeURI = strings.TrimSpace(relnTypeURI)
+ lastPart := getLastPartOfURI(relnTypeURI)
+ if !strings.HasPrefix(lastPart, PREFIX_RELATIONSHIP_TYPE) {
+ return "", fmt.Errorf("relationshipType must start with %s. found %s", PREFIX_RELATIONSHIP_TYPE, lastPart)
}
- relnType = strings.TrimPrefix(relnType, PREFIX_RELATIONSHIP_TYPE)
+ lastPart = strings.TrimPrefix(lastPart, PREFIX_RELATIONSHIP_TYPE)
- relnType = strings.TrimSpace(relnType)
+ lastPart = strings.TrimSpace(lastPart)
for _, validRelationshipType := range AllRelationshipTypes() {
- if relnType == validRelationshipType {
- return relnType, nil
+ if lastPart == validRelationshipType {
+ return lastPart, nil
}
}
- return "", fmt.Errorf("unknown relationshipType: %s", relnType)
+ return "", fmt.Errorf("unknown relationshipType: '%s'", lastPart)
}