diff options
author | Ujjwal Agarwal <ujjwalcoding012@gmail.com> | 2021-08-15 22:58:03 +0530 |
---|---|---|
committer | Ujjwal Agarwal <ujjwalcoding012@gmail.com> | 2021-08-15 22:58:03 +0530 |
commit | e26f08da56be2c1412cdd7e3027a74cb2bd1c047 (patch) | |
tree | 605ca3d17e468567895e702d0e94f074c36d716f | |
parent | 87a00cd722af26fc0bbd0bf12d2c95809b2844aa (diff) | |
download | spdx-tools-e26f08da56be2c1412cdd7e3027a74cb2bd1c047.tar.gz |
Jsonsaver : Create a temporary storage for files instead of modifying original document
Signed-off-by: Ujjwal Agarwal <ujjwalcoding012@gmail.com>
-rw-r--r-- | jsonsaver/saver2v2/save_document.go | 14 | ||||
-rw-r--r-- | jsonsaver/saver2v2/save_files.go | 7 | ||||
-rw-r--r-- | jsonsaver/saver2v2/save_files_test.go | 2 | ||||
-rw-r--r-- | jsonsaver/saver2v2/save_package.go | 4 | ||||
-rw-r--r-- | jsonsaver/saver2v2/save_package_test.go | 2 | ||||
-rw-r--r-- | jsonsaver/saver2v2/save_snippets.go | 5 | ||||
-rw-r--r-- | jsonsaver/saver2v2/save_snippets_test.go | 2 |
7 files changed, 19 insertions, 17 deletions
diff --git a/jsonsaver/saver2v2/save_document.go b/jsonsaver/saver2v2/save_document.go index 2a0e6b7..43ea907 100644 --- a/jsonsaver/saver2v2/save_document.go +++ b/jsonsaver/saver2v2/save_document.go @@ -57,22 +57,26 @@ func RenderDocument2_2(doc *spdx.Document2_2, buf *bytes.Buffer) error { } jsondocument["documentDescribes"] = describesID } - + allfiles := make(map[spdx.ElementID]*spdx.File2_2) // save packages from spdx to json if doc.Packages != nil { - _, err = renderPackage2_2(doc, jsondocument) + _, err = renderPackage2_2(doc, jsondocument, allfiles) if err != nil { return err } } + for k, v := range doc.UnpackagedFiles { + allfiles[k] = v + } + // save files and snippets from spdx to json - if doc.UnpackagedFiles != nil { - _, err = renderFiles2_2(doc, jsondocument) + if allfiles != nil { + _, err = renderFiles2_2(doc, jsondocument, allfiles) if err != nil { return err } - _, err = renderSnippets2_2(doc, jsondocument) + _, err = renderSnippets2_2(jsondocument, allfiles) if err != nil { return err } diff --git a/jsonsaver/saver2v2/save_files.go b/jsonsaver/saver2v2/save_files.go index d866fd3..29ea576 100644 --- a/jsonsaver/saver2v2/save_files.go +++ b/jsonsaver/saver2v2/save_files.go @@ -8,18 +8,17 @@ import ( "github.com/spdx/tools-golang/spdx" ) -func renderFiles2_2(doc *spdx.Document2_2, jsondocument map[string]interface{}) ([]interface{}, error) { +func renderFiles2_2(doc *spdx.Document2_2, jsondocument map[string]interface{}, allfiles map[spdx.ElementID]*spdx.File2_2) ([]interface{}, error) { var keys []string - for ke := range doc.UnpackagedFiles { + for ke := range allfiles { keys = append(keys, string(ke)) } sort.Strings(keys) var files []interface{} - // for k, v := range doc.UnpackagedFiles { for _, k := range keys { - v := doc.UnpackagedFiles[spdx.ElementID(k)] + v := allfiles[spdx.ElementID(k)] file := make(map[string]interface{}) file["SPDXID"] = spdx.RenderElementID(spdx.ElementID(k)) ann, _ := renderAnnotations2_2(doc.Annotations, spdx.MakeDocElementID("", string(v.FileSPDXIdentifier))) diff --git a/jsonsaver/saver2v2/save_files_test.go b/jsonsaver/saver2v2/save_files_test.go index fbc6ba1..baa6f45 100644 --- a/jsonsaver/saver2v2/save_files_test.go +++ b/jsonsaver/saver2v2/save_files_test.go @@ -132,7 +132,7 @@ func Test_renderFiles2_2(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - got, err := renderFiles2_2(tt.args.doc, tt.args.jsondocument) + got, err := renderFiles2_2(tt.args.doc, tt.args.jsondocument, tt.args.doc.UnpackagedFiles) if (err != nil) != tt.wantErr { t.Errorf("renderFiles2_2() error = %v, wantErr %v", err, tt.wantErr) } diff --git a/jsonsaver/saver2v2/save_package.go b/jsonsaver/saver2v2/save_package.go index ab96045..042e5fb 100644 --- a/jsonsaver/saver2v2/save_package.go +++ b/jsonsaver/saver2v2/save_package.go @@ -9,7 +9,7 @@ import ( "github.com/spdx/tools-golang/spdx" ) -func renderPackage2_2(doc *spdx.Document2_2, jsondocument map[string]interface{}) ([]interface{}, error) { +func renderPackage2_2(doc *spdx.Document2_2, jsondocument map[string]interface{}, allfiles map[spdx.ElementID]*spdx.File2_2) ([]interface{}, error) { var packages []interface{} @@ -82,7 +82,7 @@ func renderPackage2_2(doc *spdx.Document2_2, jsondocument map[string]interface{} if v.Files != nil { var fileIds []string for k, v := range v.Files { - doc.UnpackagedFiles[k] = v + allfiles[k] = v fileIds = append(fileIds, spdx.RenderElementID(k)) } pkg["hasFiles"] = fileIds diff --git a/jsonsaver/saver2v2/save_package_test.go b/jsonsaver/saver2v2/save_package_test.go index 451fd8f..ad8c69a 100644 --- a/jsonsaver/saver2v2/save_package_test.go +++ b/jsonsaver/saver2v2/save_package_test.go @@ -206,7 +206,7 @@ func Test_renderPackage2_2(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - got, err := renderPackage2_2(tt.args.doc, tt.args.jsondocument) + got, err := renderPackage2_2(tt.args.doc, tt.args.jsondocument, make(map[spdx.ElementID]*spdx.File2_2)) if (err != nil) != tt.wantErr { t.Errorf("renderPackage2_2() error = %v, wantErr %v", err, tt.wantErr) return diff --git a/jsonsaver/saver2v2/save_snippets.go b/jsonsaver/saver2v2/save_snippets.go index d9b3a37..6a4bdac 100644 --- a/jsonsaver/saver2v2/save_snippets.go +++ b/jsonsaver/saver2v2/save_snippets.go @@ -8,10 +8,10 @@ import ( "github.com/spdx/tools-golang/spdx" ) -func renderSnippets2_2(doc *spdx.Document2_2, jsondocument map[string]interface{}) ([]interface{}, error) { +func renderSnippets2_2(jsondocument map[string]interface{}, allfiles map[spdx.ElementID]*spdx.File2_2) ([]interface{}, error) { var snippets []interface{} - for _, value := range doc.UnpackagedFiles { + for _, value := range allfiles { snippet := make(map[string]interface{}) var keys []string @@ -21,7 +21,6 @@ func renderSnippets2_2(doc *spdx.Document2_2, jsondocument map[string]interface{ sort.Strings(keys) for _, k := range keys { v := value.Snippets[spdx.ElementID(k)] - // for _, v := range value.Snippets { snippet["SPDXID"] = spdx.RenderElementID(v.SnippetSPDXIdentifier) if v.SnippetComment != "" { snippet["comment"] = v.SnippetComment diff --git a/jsonsaver/saver2v2/save_snippets_test.go b/jsonsaver/saver2v2/save_snippets_test.go index cd7df13..b0d2bce 100644 --- a/jsonsaver/saver2v2/save_snippets_test.go +++ b/jsonsaver/saver2v2/save_snippets_test.go @@ -102,7 +102,7 @@ func Test_renderSnippets2_2(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - got, err := renderSnippets2_2(tt.args.doc, tt.args.jsondocument) + got, err := renderSnippets2_2(tt.args.jsondocument, tt.args.doc.UnpackagedFiles) if (err != nil) != tt.wantErr { t.Errorf("renderSnippets2_2() error = %v, wantErr %v", err, tt.wantErr) return |