Skip to content

Commit 3961a33

Browse files
fdfzcqerikjoh
andauthored
Fix issues with error details (#379)
Co-authored-by: Erik Engberg <ejohansson@spotify.com>
1 parent d5b8e4d commit 3961a33

File tree

1 file changed

+22
-7
lines changed

1 file changed

+22
-7
lines changed

format.go

+22-7
Original file line numberDiff line numberDiff line change
@@ -136,10 +136,25 @@ type Formatter func(proto.Message) (string, error)
136136
func NewJSONFormatter(emitDefaults bool, resolver jsonpb.AnyResolver) Formatter {
137137
marshaler := jsonpb.Marshaler{
138138
EmitDefaults: emitDefaults,
139-
Indent: " ",
140139
AnyResolver: resolver,
141140
}
142-
return marshaler.MarshalToString
141+
// Workaround for indentation issue in jsonpb with Any messages.
142+
// Bug was originally fixed in https://github.com/golang/protobuf/pull/834
143+
// but later re-introduced before the module was deprecated and frozen.
144+
// If jsonpb is ever replaced with google.golang.org/protobuf/encoding/protojson
145+
// this workaround will no longer be needed.
146+
formatter := func(message proto.Message) (string, error) {
147+
output, err := marshaler.MarshalToString(message)
148+
if err != nil {
149+
return "", err
150+
}
151+
var buf bytes.Buffer
152+
if err := json.Indent(&buf, []byte(output), "", " "); err != nil {
153+
return "", err
154+
}
155+
return buf.String(), nil
156+
}
157+
return formatter
143158
}
144159

145160
// NewTextFormatter returns a formatter that returns strings in the protobuf
@@ -274,11 +289,11 @@ func (r *anyResolver) Resolve(typeUrl string) (proto.Message, error) {
274289
if !ok {
275290
return nil, fmt.Errorf("unknown message: %s", typeUrl)
276291
}
277-
// populate any extensions for this message, too
278-
if exts, err := r.source.AllExtensionsForType(mname); err != nil {
279-
return nil, err
280-
} else if err := r.er.AddExtension(exts...); err != nil {
281-
return nil, err
292+
// populate any extensions for this message, too (if there are any)
293+
if exts, err := r.source.AllExtensionsForType(mname); err == nil {
294+
if err := r.er.AddExtension(exts...); err != nil {
295+
return nil, err
296+
}
282297
}
283298

284299
if r.mf == nil {

0 commit comments

Comments
 (0)