From a1c539a3fe0ef4f94e5cfe5646faf16ab6a62f43 Mon Sep 17 00:00:00 2001 From: Dmitrii Anoshin Date: Wed, 6 Apr 2022 09:47:10 -0700 Subject: [PATCH] [pdata] Use Value.asRaw in Map.AsRaw and Slice.asRaw methods (#5157) This change also improves `Slice.asRaw()` method. Now it returns raw presentation of Slice and Map elements instead of "" string. --- CHANGELOG.md | 1 + model/internal/pdata/common.go | 39 ++-------------------------------- 2 files changed, 3 insertions(+), 37 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d4c14cb83ed..81ff8666b20 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ - Setup the correct meter provider if telemetry.useOtelForInternalMetrics featuregate enabled (#5146) - Fix pdata.Value.asRaw() to correctly return elements of Slice and Map type (#5153) +- Update pdata.Slice.asRaw() to return raw representation of Slice and Map elements (#5157) ## v0.48.0 Beta diff --git a/model/internal/pdata/common.go b/model/internal/pdata/common.go index 0039e53ad5e..633412654e5 100644 --- a/model/internal/pdata/common.go +++ b/model/internal/pdata/common.go @@ -923,25 +923,7 @@ func (m Map) CopyTo(dest Map) { func (m Map) AsRaw() map[string]interface{} { rawMap := make(map[string]interface{}) m.Range(func(k string, v Value) bool { - // TODO: Use v.asRaw() instead - switch v.Type() { - case ValueTypeString: - rawMap[k] = v.StringVal() - case ValueTypeInt: - rawMap[k] = v.IntVal() - case ValueTypeDouble: - rawMap[k] = v.DoubleVal() - case ValueTypeBool: - rawMap[k] = v.BoolVal() - case ValueTypeBytes: - rawMap[k] = v.BytesVal() - case ValueTypeEmpty: - rawMap[k] = nil - case ValueTypeMap: - rawMap[k] = v.MapVal().AsRaw() - case ValueTypeSlice: - rawMap[k] = v.SliceVal().asRaw() - } + rawMap[k] = v.asRaw() return true }) return rawMap @@ -964,24 +946,7 @@ func newSliceFromRaw(rawSlice []interface{}) Slice { func (es Slice) asRaw() []interface{} { rawSlice := make([]interface{}, 0, es.Len()) for i := 0; i < es.Len(); i++ { - v := es.At(i) - // TODO: Use v.asRaw() instead - switch v.Type() { - case ValueTypeString: - rawSlice = append(rawSlice, v.StringVal()) - case ValueTypeInt: - rawSlice = append(rawSlice, v.IntVal()) - case ValueTypeDouble: - rawSlice = append(rawSlice, v.DoubleVal()) - case ValueTypeBool: - rawSlice = append(rawSlice, v.BoolVal()) - case ValueTypeBytes: - rawSlice = append(rawSlice, v.BytesVal()) - case ValueTypeEmpty: - rawSlice = append(rawSlice, nil) - default: - rawSlice = append(rawSlice, "") - } + rawSlice = append(rawSlice, es.At(i).asRaw()) } return rawSlice }