aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUjjwal Agarwal <ujjwalcoding012@gmail.com>2021-08-15 22:58:03 +0530
committerUjjwal Agarwal <ujjwalcoding012@gmail.com>2021-08-15 22:58:03 +0530
commite26f08da56be2c1412cdd7e3027a74cb2bd1c047 (patch)
tree605ca3d17e468567895e702d0e94f074c36d716f
parent87a00cd722af26fc0bbd0bf12d2c95809b2844aa (diff)
downloadspdx-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.go14
-rw-r--r--jsonsaver/saver2v2/save_files.go7
-rw-r--r--jsonsaver/saver2v2/save_files_test.go2
-rw-r--r--jsonsaver/saver2v2/save_package.go4
-rw-r--r--jsonsaver/saver2v2/save_package_test.go2
-rw-r--r--jsonsaver/saver2v2/save_snippets.go5
-rw-r--r--jsonsaver/saver2v2/save_snippets_test.go2
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