aboutsummaryrefslogtreecommitdiff
path: root/jsonloader/parser2v2/parser.go
diff options
context:
space:
mode:
Diffstat (limited to 'jsonloader/parser2v2/parser.go')
-rw-r--r--jsonloader/parser2v2/parser.go132
1 files changed, 0 insertions, 132 deletions
diff --git a/jsonloader/parser2v2/parser.go b/jsonloader/parser2v2/parser.go
deleted file mode 100644
index b1fbe8a..0000000
--- a/jsonloader/parser2v2/parser.go
+++ /dev/null
@@ -1,132 +0,0 @@
-// Package jsonloader is used to load and parse SPDX JSON documents
-// into tools-golang data structures.
-// SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
-
-package parser2v2
-
-import (
- "encoding/json"
- "fmt"
-
- "github.com/spdx/tools-golang/spdx"
-)
-
-//TODO : return spdx.Document2_2
-func Load2_2(content []byte) (*spdx.Document2_2, error) {
- // check whetehr the Json is valid or not
- if !json.Valid(content) {
- return nil, fmt.Errorf("%s", "Invalid JSON Specification")
- }
- result := spdxDocument2_2{}
- // unmarshall the json into the result struct
- err := json.Unmarshal(content, &result)
- resultfinal := spdx.Document2_2(result)
-
- if err != nil {
- return nil, fmt.Errorf("%s", err)
- }
-
- return &resultfinal, nil
-}
-
-func (doc *spdxDocument2_2) UnmarshalJSON(data []byte) error {
- var specs JSONSpdxDocument
- //unmarshall the json into the intermediate stricture map[string]interface{}
- err := json.Unmarshal(data, &specs)
- if err != nil {
- return err
- }
- // parse the data from the intermediate structure to the spdx.Document2_2{}
- err = specs.newDocument(doc)
- if err != nil {
- return err
- }
- return nil
-}
-
-func (spec JSONSpdxDocument) newDocument(doc *spdxDocument2_2) error {
- // raneg through all the keys in the map and send them to appropriate arsing functions
- for key, val := range spec {
- switch key {
- case "dataLicense", "spdxVersion", "SPDXID", "documentNamespace", "name", "comment", "creationInfo", "externalDocumentRefs":
- err := spec.parseJsonCreationInfo2_2(key, val, doc)
- if err != nil {
- return err
- }
- case "annotations":
- // if the json spec doenn't has any files then only this case will be executed
- if spec["files"] == nil {
-
- id, err := extractDocElementID(spec["SPDXID"].(string))
- if err != nil {
- return fmt.Errorf("%s", err)
- }
- err = spec.parseJsonAnnotations2_2(key, val, doc, id)
- if err != nil {
- return err
- }
- }
- case "relationships":
- err := spec.parseJsonRelationships2_2(key, val, doc)
- if err != nil {
- return err
- }
- case "files":
- //first parse all the files
- err := spec.parseJsonFiles2_2(key, val, doc)
- if err != nil {
- return err
- }
- //then parse the snippets
- if spec["snippets"] != nil {
- err = spec.parseJsonSnippets2_2("snippets", spec["snippets"], doc)
- if err != nil {
- return err
- }
- }
- //then parse the packages
- if spec["packages"] != nil {
- err = spec.parseJsonPackages2_2("packages", spec["packages"], doc)
- if err != nil {
- return err
- }
- }
- // then parse the annotations
- if spec["annotations"] != nil {
- id, err := extractDocElementID(spec["SPDXID"].(string))
- if err != nil {
- return fmt.Errorf("%s", err)
- }
- err = spec.parseJsonAnnotations2_2("annotations", spec["annotations"], doc, id)
- if err != nil {
- return err
- }
- }
-
- case "packages":
- // if the json spec doesn't has any files to parse then this switch case will be executed
- if spec["files"] == nil {
- err := spec.parseJsonPackages2_2("packages", spec["packages"], doc)
- if err != nil {
- return err
- }
- }
- case "hasExtractedLicensingInfos":
- err := spec.parseJsonOtherLicenses2_2(key, val, doc)
- if err != nil {
- return err
- }
- case "revieweds":
- err := spec.parseJsonReviews2_2(key, val, doc)
- if err != nil {
- return err
- }
- case "snippets", "documentDescribes":
- //redundant case
- default:
- return fmt.Errorf("unrecognized key here %v", key)
- }
-
- }
- return nil
-}