vendor: update all dependencies
* Update all dependencies * Remove all `[[constraint]]` from Gopkg.toml * Add in the minimum number of `[[override]]` to build * Remove go get of github.com/inconshreveable/mousetrap as it is vendored * Update docs with new policy on constraints
This commit is contained in:
parent
21383877df
commit
6427029c4e
4902 changed files with 1443417 additions and 227283 deletions
188
vendor/github.com/golang/protobuf/jsonpb/jsonpb.go
generated
vendored
188
vendor/github.com/golang/protobuf/jsonpb/jsonpb.go
generated
vendored
|
@ -56,6 +56,8 @@ import (
|
|||
stpb "github.com/golang/protobuf/ptypes/struct"
|
||||
)
|
||||
|
||||
const secondInNanos = int64(time.Second / time.Nanosecond)
|
||||
|
||||
// Marshaler is a configurable object for converting between
|
||||
// protocol buffer objects and a JSON representation for them.
|
||||
type Marshaler struct {
|
||||
|
@ -118,6 +120,14 @@ type JSONPBUnmarshaler interface {
|
|||
|
||||
// Marshal marshals a protocol buffer into JSON.
|
||||
func (m *Marshaler) Marshal(out io.Writer, pb proto.Message) error {
|
||||
v := reflect.ValueOf(pb)
|
||||
if pb == nil || (v.Kind() == reflect.Ptr && v.IsNil()) {
|
||||
return errors.New("Marshal called with nil")
|
||||
}
|
||||
// Check for unset required fields first.
|
||||
if err := checkRequiredFields(pb); err != nil {
|
||||
return err
|
||||
}
|
||||
writer := &errWriter{writer: out}
|
||||
return m.marshalObject(writer, pb, "", "")
|
||||
}
|
||||
|
@ -190,13 +200,22 @@ func (m *Marshaler) marshalObject(out *errWriter, v proto.Message, indent, typeU
|
|||
// Any is a bit more involved.
|
||||
return m.marshalAny(out, v, indent)
|
||||
case "Duration":
|
||||
// "Generated output always contains 3, 6, or 9 fractional digits,
|
||||
// "Generated output always contains 0, 3, 6, or 9 fractional digits,
|
||||
// depending on required precision."
|
||||
s, ns := s.Field(0).Int(), s.Field(1).Int()
|
||||
d := time.Duration(s)*time.Second + time.Duration(ns)*time.Nanosecond
|
||||
x := fmt.Sprintf("%.9f", d.Seconds())
|
||||
if ns <= -secondInNanos || ns >= secondInNanos {
|
||||
return fmt.Errorf("ns out of range (%v, %v)", -secondInNanos, secondInNanos)
|
||||
}
|
||||
if (s > 0 && ns < 0) || (s < 0 && ns > 0) {
|
||||
return errors.New("signs of seconds and nanos do not match")
|
||||
}
|
||||
if s < 0 {
|
||||
ns = -ns
|
||||
}
|
||||
x := fmt.Sprintf("%d.%09d", s, ns)
|
||||
x = strings.TrimSuffix(x, "000")
|
||||
x = strings.TrimSuffix(x, "000")
|
||||
x = strings.TrimSuffix(x, ".000")
|
||||
out.write(`"`)
|
||||
out.write(x)
|
||||
out.write(`s"`)
|
||||
|
@ -207,13 +226,17 @@ func (m *Marshaler) marshalObject(out *errWriter, v proto.Message, indent, typeU
|
|||
return m.marshalValue(out, &proto.Properties{}, s.Field(0), indent)
|
||||
case "Timestamp":
|
||||
// "RFC 3339, where generated output will always be Z-normalized
|
||||
// and uses 3, 6 or 9 fractional digits."
|
||||
// and uses 0, 3, 6 or 9 fractional digits."
|
||||
s, ns := s.Field(0).Int(), s.Field(1).Int()
|
||||
if ns < 0 || ns >= secondInNanos {
|
||||
return fmt.Errorf("ns out of range [0, %v)", secondInNanos)
|
||||
}
|
||||
t := time.Unix(s, ns).UTC()
|
||||
// time.RFC3339Nano isn't exactly right (we need to get 3/6/9 fractional digits).
|
||||
x := t.Format("2006-01-02T15:04:05.000000000")
|
||||
x = strings.TrimSuffix(x, "000")
|
||||
x = strings.TrimSuffix(x, "000")
|
||||
x = strings.TrimSuffix(x, ".000")
|
||||
out.write(`"`)
|
||||
out.write(x)
|
||||
out.write(`Z"`)
|
||||
|
@ -632,7 +655,10 @@ func (u *Unmarshaler) UnmarshalNext(dec *json.Decoder, pb proto.Message) error {
|
|||
if err := dec.Decode(&inputValue); err != nil {
|
||||
return err
|
||||
}
|
||||
return u.unmarshalValue(reflect.ValueOf(pb).Elem(), inputValue, nil)
|
||||
if err := u.unmarshalValue(reflect.ValueOf(pb).Elem(), inputValue, nil); err != nil {
|
||||
return err
|
||||
}
|
||||
return checkRequiredFields(pb)
|
||||
}
|
||||
|
||||
// Unmarshal unmarshals a JSON object stream into a protocol
|
||||
|
@ -803,7 +829,7 @@ func (u *Unmarshaler) unmarshalValue(target reflect.Value, inputValue json.RawMe
|
|||
return fmt.Errorf("bad ListValue: %v", err)
|
||||
}
|
||||
|
||||
target.Field(0).Set(reflect.ValueOf(make([]*stpb.Value, len(s), len(s))))
|
||||
target.Field(0).Set(reflect.ValueOf(make([]*stpb.Value, len(s))))
|
||||
for i, sv := range s {
|
||||
if err := u.unmarshalValue(target.Field(0).Index(i), sv, prop); err != nil {
|
||||
return err
|
||||
|
@ -973,13 +999,6 @@ func (u *Unmarshaler) unmarshalValue(target reflect.Value, inputValue json.RawMe
|
|||
}
|
||||
if mp != nil {
|
||||
target.Set(reflect.MakeMap(targetType))
|
||||
var keyprop, valprop *proto.Properties
|
||||
if prop != nil {
|
||||
// These could still be nil if the protobuf metadata is broken somehow.
|
||||
// TODO: This won't work because the fields are unexported.
|
||||
// We should probably just reparse them.
|
||||
//keyprop, valprop = prop.mkeyprop, prop.mvalprop
|
||||
}
|
||||
for ks, raw := range mp {
|
||||
// Unmarshal map key. The core json library already decoded the key into a
|
||||
// string, so we handle that specially. Other types were quoted post-serialization.
|
||||
|
@ -988,14 +1007,16 @@ func (u *Unmarshaler) unmarshalValue(target reflect.Value, inputValue json.RawMe
|
|||
k = reflect.ValueOf(ks)
|
||||
} else {
|
||||
k = reflect.New(targetType.Key()).Elem()
|
||||
if err := u.unmarshalValue(k, json.RawMessage(ks), keyprop); err != nil {
|
||||
// TODO: pass the correct Properties if needed.
|
||||
if err := u.unmarshalValue(k, json.RawMessage(ks), nil); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
// Unmarshal map value.
|
||||
v := reflect.New(targetType.Elem()).Elem()
|
||||
if err := u.unmarshalValue(v, raw, valprop); err != nil {
|
||||
// TODO: pass the correct Properties if needed.
|
||||
if err := u.unmarshalValue(v, raw, nil); err != nil {
|
||||
return err
|
||||
}
|
||||
target.SetMapIndex(k, v)
|
||||
|
@ -1081,3 +1102,140 @@ func (s mapKeys) Less(i, j int) bool {
|
|||
}
|
||||
return fmt.Sprint(s[i].Interface()) < fmt.Sprint(s[j].Interface())
|
||||
}
|
||||
|
||||
// checkRequiredFields returns an error if any required field in the given proto message is not set.
|
||||
// This function is used by both Marshal and Unmarshal. While required fields only exist in a
|
||||
// proto2 message, a proto3 message can contain proto2 message(s).
|
||||
func checkRequiredFields(pb proto.Message) error {
|
||||
// Most well-known type messages do not contain required fields. The "Any" type may contain
|
||||
// a message that has required fields.
|
||||
//
|
||||
// When an Any message is being marshaled, the code will invoked proto.Unmarshal on Any.Value
|
||||
// field in order to transform that into JSON, and that should have returned an error if a
|
||||
// required field is not set in the embedded message.
|
||||
//
|
||||
// When an Any message is being unmarshaled, the code will have invoked proto.Marshal on the
|
||||
// embedded message to store the serialized message in Any.Value field, and that should have
|
||||
// returned an error if a required field is not set.
|
||||
if _, ok := pb.(wkt); ok {
|
||||
return nil
|
||||
}
|
||||
|
||||
v := reflect.ValueOf(pb)
|
||||
// Skip message if it is not a struct pointer.
|
||||
if v.Kind() != reflect.Ptr {
|
||||
return nil
|
||||
}
|
||||
v = v.Elem()
|
||||
if v.Kind() != reflect.Struct {
|
||||
return nil
|
||||
}
|
||||
|
||||
for i := 0; i < v.NumField(); i++ {
|
||||
field := v.Field(i)
|
||||
sfield := v.Type().Field(i)
|
||||
|
||||
if sfield.PkgPath != "" {
|
||||
// blank PkgPath means the field is exported; skip if not exported
|
||||
continue
|
||||
}
|
||||
|
||||
if strings.HasPrefix(sfield.Name, "XXX_") {
|
||||
continue
|
||||
}
|
||||
|
||||
// Oneof field is an interface implemented by wrapper structs containing the actual oneof
|
||||
// field, i.e. an interface containing &T{real_value}.
|
||||
if sfield.Tag.Get("protobuf_oneof") != "" {
|
||||
if field.Kind() != reflect.Interface {
|
||||
continue
|
||||
}
|
||||
v := field.Elem()
|
||||
if v.Kind() != reflect.Ptr || v.IsNil() {
|
||||
continue
|
||||
}
|
||||
v = v.Elem()
|
||||
if v.Kind() != reflect.Struct || v.NumField() < 1 {
|
||||
continue
|
||||
}
|
||||
field = v.Field(0)
|
||||
sfield = v.Type().Field(0)
|
||||
}
|
||||
|
||||
protoTag := sfield.Tag.Get("protobuf")
|
||||
if protoTag == "" {
|
||||
continue
|
||||
}
|
||||
var prop proto.Properties
|
||||
prop.Init(sfield.Type, sfield.Name, protoTag, &sfield)
|
||||
|
||||
switch field.Kind() {
|
||||
case reflect.Map:
|
||||
if field.IsNil() {
|
||||
continue
|
||||
}
|
||||
// Check each map value.
|
||||
keys := field.MapKeys()
|
||||
for _, k := range keys {
|
||||
v := field.MapIndex(k)
|
||||
if err := checkRequiredFieldsInValue(v); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
case reflect.Slice:
|
||||
// Handle non-repeated type, e.g. bytes.
|
||||
if !prop.Repeated {
|
||||
if prop.Required && field.IsNil() {
|
||||
return fmt.Errorf("required field %q is not set", prop.Name)
|
||||
}
|
||||
continue
|
||||
}
|
||||
|
||||
// Handle repeated type.
|
||||
if field.IsNil() {
|
||||
continue
|
||||
}
|
||||
// Check each slice item.
|
||||
for i := 0; i < field.Len(); i++ {
|
||||
v := field.Index(i)
|
||||
if err := checkRequiredFieldsInValue(v); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
case reflect.Ptr:
|
||||
if field.IsNil() {
|
||||
if prop.Required {
|
||||
return fmt.Errorf("required field %q is not set", prop.Name)
|
||||
}
|
||||
continue
|
||||
}
|
||||
if err := checkRequiredFieldsInValue(field); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Handle proto2 extensions.
|
||||
for _, ext := range proto.RegisteredExtensions(pb) {
|
||||
if !proto.HasExtension(pb, ext) {
|
||||
continue
|
||||
}
|
||||
ep, err := proto.GetExtension(pb, ext)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = checkRequiredFieldsInValue(reflect.ValueOf(ep))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func checkRequiredFieldsInValue(v reflect.Value) error {
|
||||
if pm, ok := v.Interface().(proto.Message); ok {
|
||||
return checkRequiredFields(pm)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
258
vendor/github.com/golang/protobuf/jsonpb/jsonpb_test.go
generated
vendored
258
vendor/github.com/golang/protobuf/jsonpb/jsonpb_test.go
generated
vendored
|
@ -406,7 +406,10 @@ var marshalingTests = []struct {
|
|||
{"Any with message and indent", marshalerAllOptions, anySimple, anySimplePrettyJSON},
|
||||
{"Any with WKT", marshaler, anyWellKnown, anyWellKnownJSON},
|
||||
{"Any with WKT and indent", marshalerAllOptions, anyWellKnown, anyWellKnownPrettyJSON},
|
||||
{"Duration", marshaler, &pb.KnownTypes{Dur: &durpb.Duration{Seconds: 3}}, `{"dur":"3.000s"}`},
|
||||
{"Duration", marshaler, &pb.KnownTypes{Dur: &durpb.Duration{Seconds: 3}}, `{"dur":"3s"}`},
|
||||
{"Duration", marshaler, &pb.KnownTypes{Dur: &durpb.Duration{Seconds: 3, Nanos: 1e6}}, `{"dur":"3.001s"}`},
|
||||
{"Duration beyond float64 precision", marshaler, &pb.KnownTypes{Dur: &durpb.Duration{Seconds: 100000000, Nanos: 1}}, `{"dur":"100000000.000000001s"}`},
|
||||
{"negative Duration", marshaler, &pb.KnownTypes{Dur: &durpb.Duration{Seconds: -123, Nanos: -456}}, `{"dur":"-123.000000456s"}`},
|
||||
{"Struct", marshaler, &pb.KnownTypes{St: &stpb.Struct{
|
||||
Fields: map[string]*stpb.Value{
|
||||
"one": {Kind: &stpb.Value_StringValue{"loneliest number"}},
|
||||
|
@ -421,6 +424,7 @@ var marshalingTests = []struct {
|
|||
{Kind: &stpb.Value_BoolValue{true}},
|
||||
}}}, `{"lv":["x",null,3,true]}`},
|
||||
{"Timestamp", marshaler, &pb.KnownTypes{Ts: &tspb.Timestamp{Seconds: 14e8, Nanos: 21e6}}, `{"ts":"2014-05-13T16:53:20.021Z"}`},
|
||||
{"Timestamp", marshaler, &pb.KnownTypes{Ts: &tspb.Timestamp{Seconds: 14e8, Nanos: 0}}, `{"ts":"2014-05-13T16:53:20Z"}`},
|
||||
{"number Value", marshaler, &pb.KnownTypes{Val: &stpb.Value{Kind: &stpb.Value_NumberValue{1}}}, `{"val":1}`},
|
||||
{"null Value", marshaler, &pb.KnownTypes{Val: &stpb.Value{Kind: &stpb.Value_NullValue{stpb.NullValue_NULL_VALUE}}}, `{"val":null}`},
|
||||
{"string number value", marshaler, &pb.KnownTypes{Val: &stpb.Value{Kind: &stpb.Value_StringValue{"9223372036854775807"}}}, `{"val":"9223372036854775807"}`},
|
||||
|
@ -449,6 +453,9 @@ var marshalingTests = []struct {
|
|||
{"BoolValue", marshaler, &pb.KnownTypes{Bool: &wpb.BoolValue{Value: true}}, `{"bool":true}`},
|
||||
{"StringValue", marshaler, &pb.KnownTypes{Str: &wpb.StringValue{Value: "plush"}}, `{"str":"plush"}`},
|
||||
{"BytesValue", marshaler, &pb.KnownTypes{Bytes: &wpb.BytesValue{Value: []byte("wow")}}, `{"bytes":"d293"}`},
|
||||
|
||||
{"required", marshaler, &pb.MsgWithRequired{Str: proto.String("hello")}, `{"str":"hello"}`},
|
||||
{"required bytes", marshaler, &pb.MsgWithRequiredBytes{Byts: []byte{}}, `{"byts":""}`},
|
||||
}
|
||||
|
||||
func TestMarshaling(t *testing.T) {
|
||||
|
@ -462,6 +469,40 @@ func TestMarshaling(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestMarshalingNil(t *testing.T) {
|
||||
var msg *pb.Simple
|
||||
m := &Marshaler{}
|
||||
if _, err := m.MarshalToString(msg); err == nil {
|
||||
t.Errorf("mashaling nil returned no error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestMarshalIllegalTime(t *testing.T) {
|
||||
tests := []struct {
|
||||
pb proto.Message
|
||||
fail bool
|
||||
}{
|
||||
{&pb.KnownTypes{Dur: &durpb.Duration{Seconds: 1, Nanos: 0}}, false},
|
||||
{&pb.KnownTypes{Dur: &durpb.Duration{Seconds: -1, Nanos: 0}}, false},
|
||||
{&pb.KnownTypes{Dur: &durpb.Duration{Seconds: 1, Nanos: -1}}, true},
|
||||
{&pb.KnownTypes{Dur: &durpb.Duration{Seconds: -1, Nanos: 1}}, true},
|
||||
{&pb.KnownTypes{Dur: &durpb.Duration{Seconds: 1, Nanos: 1000000000}}, true},
|
||||
{&pb.KnownTypes{Dur: &durpb.Duration{Seconds: -1, Nanos: -1000000000}}, true},
|
||||
{&pb.KnownTypes{Ts: &tspb.Timestamp{Seconds: 1, Nanos: 1}}, false},
|
||||
{&pb.KnownTypes{Ts: &tspb.Timestamp{Seconds: 1, Nanos: -1}}, true},
|
||||
{&pb.KnownTypes{Ts: &tspb.Timestamp{Seconds: 1, Nanos: 1000000000}}, true},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
_, err := marshaler.MarshalToString(tt.pb)
|
||||
if err == nil && tt.fail {
|
||||
t.Errorf("marshaler.MarshalToString(%v) = _, <nil>; want _, <non-nil>", tt.pb)
|
||||
}
|
||||
if err != nil && !tt.fail {
|
||||
t.Errorf("marshaler.MarshalToString(%v) = _, %v; want _, <nil>", tt.pb, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestMarshalJSONPBMarshaler(t *testing.T) {
|
||||
rawJson := `{ "foo": "bar", "baz": [0, 1, 2, 3] }`
|
||||
msg := dynamicMessage{rawJson: rawJson}
|
||||
|
@ -492,6 +533,104 @@ func TestMarshalAnyJSONPBMarshaler(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestMarshalWithCustomValidation(t *testing.T) {
|
||||
msg := dynamicMessage{rawJson: `{ "foo": "bar", "baz": [0, 1, 2, 3] }`, dummy: &dynamicMessage{}}
|
||||
|
||||
js, err := new(Marshaler).MarshalToString(&msg)
|
||||
if err != nil {
|
||||
t.Errorf("an unexpected error occurred when marshalling to json: %v", err)
|
||||
}
|
||||
err = Unmarshal(strings.NewReader(js), &msg)
|
||||
if err != nil {
|
||||
t.Errorf("an unexpected error occurred when unmarshalling from json: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
// Test marshaling message containing unset required fields should produce error.
|
||||
func TestMarshalUnsetRequiredFields(t *testing.T) {
|
||||
msgExt := &pb.Real{}
|
||||
proto.SetExtension(msgExt, pb.E_Extm, &pb.MsgWithRequired{})
|
||||
|
||||
tests := []struct {
|
||||
desc string
|
||||
marshaler *Marshaler
|
||||
pb proto.Message
|
||||
}{
|
||||
{
|
||||
desc: "direct required field",
|
||||
marshaler: &Marshaler{},
|
||||
pb: &pb.MsgWithRequired{},
|
||||
},
|
||||
{
|
||||
desc: "direct required field + emit defaults",
|
||||
marshaler: &Marshaler{EmitDefaults: true},
|
||||
pb: &pb.MsgWithRequired{},
|
||||
},
|
||||
{
|
||||
desc: "indirect required field",
|
||||
marshaler: &Marshaler{},
|
||||
pb: &pb.MsgWithIndirectRequired{Subm: &pb.MsgWithRequired{}},
|
||||
},
|
||||
{
|
||||
desc: "indirect required field + emit defaults",
|
||||
marshaler: &Marshaler{EmitDefaults: true},
|
||||
pb: &pb.MsgWithIndirectRequired{Subm: &pb.MsgWithRequired{}},
|
||||
},
|
||||
{
|
||||
desc: "direct required wkt field",
|
||||
marshaler: &Marshaler{},
|
||||
pb: &pb.MsgWithRequiredWKT{},
|
||||
},
|
||||
{
|
||||
desc: "direct required wkt field + emit defaults",
|
||||
marshaler: &Marshaler{EmitDefaults: true},
|
||||
pb: &pb.MsgWithRequiredWKT{},
|
||||
},
|
||||
{
|
||||
desc: "direct required bytes field",
|
||||
marshaler: &Marshaler{},
|
||||
pb: &pb.MsgWithRequiredBytes{},
|
||||
},
|
||||
{
|
||||
desc: "required in map value",
|
||||
marshaler: &Marshaler{},
|
||||
pb: &pb.MsgWithIndirectRequired{
|
||||
MapField: map[string]*pb.MsgWithRequired{
|
||||
"key": {},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
desc: "required in repeated item",
|
||||
marshaler: &Marshaler{},
|
||||
pb: &pb.MsgWithIndirectRequired{
|
||||
SliceField: []*pb.MsgWithRequired{
|
||||
{Str: proto.String("hello")},
|
||||
{},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
desc: "required inside oneof",
|
||||
marshaler: &Marshaler{},
|
||||
pb: &pb.MsgWithOneof{
|
||||
Union: &pb.MsgWithOneof_MsgWithRequired{&pb.MsgWithRequired{}},
|
||||
},
|
||||
},
|
||||
{
|
||||
desc: "required inside extension",
|
||||
marshaler: &Marshaler{},
|
||||
pb: msgExt,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range tests {
|
||||
if _, err := tc.marshaler.MarshalToString(tc.pb); err == nil {
|
||||
t.Errorf("%s: expecting error in marshaling with unset required fields %+v", tc.desc, tc.pb)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var unmarshalingTests = []struct {
|
||||
desc string
|
||||
unmarshaler Unmarshaler
|
||||
|
@ -553,8 +692,10 @@ var unmarshalingTests = []struct {
|
|||
{"camelName input", Unmarshaler{}, `{"oBool":true}`, &pb.Simple{OBool: proto.Bool(true)}},
|
||||
|
||||
{"Duration", Unmarshaler{}, `{"dur":"3.000s"}`, &pb.KnownTypes{Dur: &durpb.Duration{Seconds: 3}}},
|
||||
{"Duration", Unmarshaler{}, `{"dur":"4s"}`, &pb.KnownTypes{Dur: &durpb.Duration{Seconds: 4}}},
|
||||
{"null Duration", Unmarshaler{}, `{"dur":null}`, &pb.KnownTypes{Dur: nil}},
|
||||
{"Timestamp", Unmarshaler{}, `{"ts":"2014-05-13T16:53:20.021Z"}`, &pb.KnownTypes{Ts: &tspb.Timestamp{Seconds: 14e8, Nanos: 21e6}}},
|
||||
{"Timestamp", Unmarshaler{}, `{"ts":"2014-05-13T16:53:20Z"}`, &pb.KnownTypes{Ts: &tspb.Timestamp{Seconds: 14e8, Nanos: 0}}},
|
||||
{"PreEpochTimestamp", Unmarshaler{}, `{"ts":"1969-12-31T23:59:58.999999995Z"}`, &pb.KnownTypes{Ts: &tspb.Timestamp{Seconds: -2, Nanos: 999999995}}},
|
||||
{"ZeroTimeTimestamp", Unmarshaler{}, `{"ts":"0001-01-01T00:00:00Z"}`, &pb.KnownTypes{Ts: &tspb.Timestamp{Seconds: -62135596800, Nanos: 0}}},
|
||||
{"null Timestamp", Unmarshaler{}, `{"ts":null}`, &pb.KnownTypes{Ts: nil}},
|
||||
|
@ -623,6 +764,9 @@ var unmarshalingTests = []struct {
|
|||
{"null BoolValue", Unmarshaler{}, `{"bool":null}`, &pb.KnownTypes{Bool: nil}},
|
||||
{"null StringValue", Unmarshaler{}, `{"str":null}`, &pb.KnownTypes{Str: nil}},
|
||||
{"null BytesValue", Unmarshaler{}, `{"bytes":null}`, &pb.KnownTypes{Bytes: nil}},
|
||||
|
||||
{"required", Unmarshaler{}, `{"str":"hello"}`, &pb.MsgWithRequired{Str: proto.String("hello")}},
|
||||
{"required bytes", Unmarshaler{}, `{"byts": []}`, &pb.MsgWithRequiredBytes{Byts: []byte{}}},
|
||||
}
|
||||
|
||||
func TestUnmarshaling(t *testing.T) {
|
||||
|
@ -821,7 +965,7 @@ func TestUnmarshalAnyJSONPBUnmarshaler(t *testing.T) {
|
|||
}
|
||||
|
||||
if !proto.Equal(&got, &want) {
|
||||
t.Errorf("message contents not set correctly after unmarshalling JSON: got %s, wanted %s", got, want)
|
||||
t.Errorf("message contents not set correctly after unmarshalling JSON: got %v, wanted %v", got, want)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -873,6 +1017,10 @@ func (s *stringField) UnmarshalJSONPB(jum *Unmarshaler, js []byte) error {
|
|||
// It provides implementations of JSONPBMarshaler and JSONPBUnmarshaler for JSON support.
|
||||
type dynamicMessage struct {
|
||||
rawJson string `protobuf:"bytes,1,opt,name=rawJson"`
|
||||
|
||||
// an unexported nested message is present just to ensure that it
|
||||
// won't result in a panic (see issue #509)
|
||||
dummy *dynamicMessage `protobuf:"bytes,2,opt,name=dummy"`
|
||||
}
|
||||
|
||||
func (m *dynamicMessage) Reset() {
|
||||
|
@ -894,3 +1042,109 @@ func (m *dynamicMessage) UnmarshalJSONPB(jum *Unmarshaler, js []byte) error {
|
|||
m.rawJson = string(js)
|
||||
return nil
|
||||
}
|
||||
|
||||
// Test unmarshaling message containing unset required fields should produce error.
|
||||
func TestUnmarshalUnsetRequiredFields(t *testing.T) {
|
||||
tests := []struct {
|
||||
desc string
|
||||
pb proto.Message
|
||||
json string
|
||||
}{
|
||||
{
|
||||
desc: "direct required field missing",
|
||||
pb: &pb.MsgWithRequired{},
|
||||
json: `{}`,
|
||||
},
|
||||
{
|
||||
desc: "direct required field set to null",
|
||||
pb: &pb.MsgWithRequired{},
|
||||
json: `{"str": null}`,
|
||||
},
|
||||
{
|
||||
desc: "indirect required field missing",
|
||||
pb: &pb.MsgWithIndirectRequired{},
|
||||
json: `{"subm": {}}`,
|
||||
},
|
||||
{
|
||||
desc: "indirect required field set to null",
|
||||
pb: &pb.MsgWithIndirectRequired{},
|
||||
json: `{"subm": {"str": null}}`,
|
||||
},
|
||||
{
|
||||
desc: "direct required bytes field missing",
|
||||
pb: &pb.MsgWithRequiredBytes{},
|
||||
json: `{}`,
|
||||
},
|
||||
{
|
||||
desc: "direct required bytes field set to null",
|
||||
pb: &pb.MsgWithRequiredBytes{},
|
||||
json: `{"byts": null}`,
|
||||
},
|
||||
{
|
||||
desc: "direct required wkt field missing",
|
||||
pb: &pb.MsgWithRequiredWKT{},
|
||||
json: `{}`,
|
||||
},
|
||||
{
|
||||
desc: "direct required wkt field set to null",
|
||||
pb: &pb.MsgWithRequiredWKT{},
|
||||
json: `{"str": null}`,
|
||||
},
|
||||
{
|
||||
desc: "any containing message with required field set to null",
|
||||
pb: &pb.KnownTypes{},
|
||||
json: `{"an": {"@type": "example.com/jsonpb.MsgWithRequired", "str": null}}`,
|
||||
},
|
||||
{
|
||||
desc: "any containing message with missing required field",
|
||||
pb: &pb.KnownTypes{},
|
||||
json: `{"an": {"@type": "example.com/jsonpb.MsgWithRequired"}}`,
|
||||
},
|
||||
{
|
||||
desc: "missing required in map value",
|
||||
pb: &pb.MsgWithIndirectRequired{},
|
||||
json: `{"map_field": {"a": {}, "b": {"str": "hi"}}}`,
|
||||
},
|
||||
{
|
||||
desc: "required in map value set to null",
|
||||
pb: &pb.MsgWithIndirectRequired{},
|
||||
json: `{"map_field": {"a": {"str": "hello"}, "b": {"str": null}}}`,
|
||||
},
|
||||
{
|
||||
desc: "missing required in slice item",
|
||||
pb: &pb.MsgWithIndirectRequired{},
|
||||
json: `{"slice_field": [{}, {"str": "hi"}]}`,
|
||||
},
|
||||
{
|
||||
desc: "required in slice item set to null",
|
||||
pb: &pb.MsgWithIndirectRequired{},
|
||||
json: `{"slice_field": [{"str": "hello"}, {"str": null}]}`,
|
||||
},
|
||||
{
|
||||
desc: "required inside oneof missing",
|
||||
pb: &pb.MsgWithOneof{},
|
||||
json: `{"msgWithRequired": {}}`,
|
||||
},
|
||||
{
|
||||
desc: "required inside oneof set to null",
|
||||
pb: &pb.MsgWithOneof{},
|
||||
json: `{"msgWithRequired": {"str": null}}`,
|
||||
},
|
||||
{
|
||||
desc: "required field in extension missing",
|
||||
pb: &pb.Real{},
|
||||
json: `{"[jsonpb.extm]":{}}`,
|
||||
},
|
||||
{
|
||||
desc: "required field in extension set to null",
|
||||
pb: &pb.Real{},
|
||||
json: `{"[jsonpb.extm]":{"str": null}}`,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range tests {
|
||||
if err := UnmarshalString(tc.json, tc.pb); err == nil {
|
||||
t.Errorf("%s: expecting error in unmarshaling with unset required fields %s", tc.desc, tc.json)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
33
vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/Makefile
generated
vendored
33
vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/Makefile
generated
vendored
|
@ -1,33 +0,0 @@
|
|||
# Go support for Protocol Buffers - Google's data interchange format
|
||||
#
|
||||
# Copyright 2015 The Go Authors. All rights reserved.
|
||||
# https://github.com/golang/protobuf
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are
|
||||
# met:
|
||||
#
|
||||
# * Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
# * Redistributions in binary form must reproduce the above
|
||||
# copyright notice, this list of conditions and the following disclaimer
|
||||
# in the documentation and/or other materials provided with the
|
||||
# distribution.
|
||||
# * Neither the name of Google Inc. nor the names of its
|
||||
# contributors may be used to endorse or promote products derived from
|
||||
# this software without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
regenerate:
|
||||
protoc --go_out=Mgoogle/protobuf/any.proto=github.com/golang/protobuf/ptypes/any,Mgoogle/protobuf/duration.proto=github.com/golang/protobuf/ptypes/duration,Mgoogle/protobuf/struct.proto=github.com/golang/protobuf/ptypes/struct,Mgoogle/protobuf/timestamp.proto=github.com/golang/protobuf/ptypes/timestamp,Mgoogle/protobuf/wrappers.proto=github.com/golang/protobuf/ptypes/wrappers:. *.proto
|
226
vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/more_test_objects.pb.go
generated
vendored
226
vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/more_test_objects.pb.go
generated
vendored
|
@ -1,29 +1,6 @@
|
|||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||
// source: more_test_objects.proto
|
||||
|
||||
/*
|
||||
Package jsonpb is a generated protocol buffer package.
|
||||
|
||||
It is generated from these files:
|
||||
more_test_objects.proto
|
||||
test_objects.proto
|
||||
|
||||
It has these top-level messages:
|
||||
Simple3
|
||||
SimpleSlice3
|
||||
SimpleMap3
|
||||
SimpleNull3
|
||||
Mappy
|
||||
Simple
|
||||
NonFinites
|
||||
Repeats
|
||||
Widget
|
||||
Maps
|
||||
MsgWithOneof
|
||||
Real
|
||||
Complex
|
||||
KnownTypes
|
||||
*/
|
||||
package jsonpb
|
||||
|
||||
import proto "github.com/golang/protobuf/proto"
|
||||
|
@ -63,16 +40,40 @@ var Numeral_value = map[string]int32{
|
|||
func (x Numeral) String() string {
|
||||
return proto.EnumName(Numeral_name, int32(x))
|
||||
}
|
||||
func (Numeral) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
|
||||
|
||||
type Simple3 struct {
|
||||
Dub float64 `protobuf:"fixed64,1,opt,name=dub" json:"dub,omitempty"`
|
||||
func (Numeral) EnumDescriptor() ([]byte, []int) {
|
||||
return fileDescriptor_more_test_objects_bef0d79b901f4c4a, []int{0}
|
||||
}
|
||||
|
||||
func (m *Simple3) Reset() { *m = Simple3{} }
|
||||
func (m *Simple3) String() string { return proto.CompactTextString(m) }
|
||||
func (*Simple3) ProtoMessage() {}
|
||||
func (*Simple3) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
|
||||
type Simple3 struct {
|
||||
Dub float64 `protobuf:"fixed64,1,opt,name=dub" json:"dub,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
}
|
||||
|
||||
func (m *Simple3) Reset() { *m = Simple3{} }
|
||||
func (m *Simple3) String() string { return proto.CompactTextString(m) }
|
||||
func (*Simple3) ProtoMessage() {}
|
||||
func (*Simple3) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_more_test_objects_bef0d79b901f4c4a, []int{0}
|
||||
}
|
||||
func (m *Simple3) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_Simple3.Unmarshal(m, b)
|
||||
}
|
||||
func (m *Simple3) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||
return xxx_messageInfo_Simple3.Marshal(b, m, deterministic)
|
||||
}
|
||||
func (dst *Simple3) XXX_Merge(src proto.Message) {
|
||||
xxx_messageInfo_Simple3.Merge(dst, src)
|
||||
}
|
||||
func (m *Simple3) XXX_Size() int {
|
||||
return xxx_messageInfo_Simple3.Size(m)
|
||||
}
|
||||
func (m *Simple3) XXX_DiscardUnknown() {
|
||||
xxx_messageInfo_Simple3.DiscardUnknown(m)
|
||||
}
|
||||
|
||||
var xxx_messageInfo_Simple3 proto.InternalMessageInfo
|
||||
|
||||
func (m *Simple3) GetDub() float64 {
|
||||
if m != nil {
|
||||
|
@ -82,13 +83,35 @@ func (m *Simple3) GetDub() float64 {
|
|||
}
|
||||
|
||||
type SimpleSlice3 struct {
|
||||
Slices []string `protobuf:"bytes,1,rep,name=slices" json:"slices,omitempty"`
|
||||
Slices []string `protobuf:"bytes,1,rep,name=slices" json:"slices,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
}
|
||||
|
||||
func (m *SimpleSlice3) Reset() { *m = SimpleSlice3{} }
|
||||
func (m *SimpleSlice3) String() string { return proto.CompactTextString(m) }
|
||||
func (*SimpleSlice3) ProtoMessage() {}
|
||||
func (*SimpleSlice3) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
|
||||
func (m *SimpleSlice3) Reset() { *m = SimpleSlice3{} }
|
||||
func (m *SimpleSlice3) String() string { return proto.CompactTextString(m) }
|
||||
func (*SimpleSlice3) ProtoMessage() {}
|
||||
func (*SimpleSlice3) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_more_test_objects_bef0d79b901f4c4a, []int{1}
|
||||
}
|
||||
func (m *SimpleSlice3) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_SimpleSlice3.Unmarshal(m, b)
|
||||
}
|
||||
func (m *SimpleSlice3) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||
return xxx_messageInfo_SimpleSlice3.Marshal(b, m, deterministic)
|
||||
}
|
||||
func (dst *SimpleSlice3) XXX_Merge(src proto.Message) {
|
||||
xxx_messageInfo_SimpleSlice3.Merge(dst, src)
|
||||
}
|
||||
func (m *SimpleSlice3) XXX_Size() int {
|
||||
return xxx_messageInfo_SimpleSlice3.Size(m)
|
||||
}
|
||||
func (m *SimpleSlice3) XXX_DiscardUnknown() {
|
||||
xxx_messageInfo_SimpleSlice3.DiscardUnknown(m)
|
||||
}
|
||||
|
||||
var xxx_messageInfo_SimpleSlice3 proto.InternalMessageInfo
|
||||
|
||||
func (m *SimpleSlice3) GetSlices() []string {
|
||||
if m != nil {
|
||||
|
@ -98,13 +121,35 @@ func (m *SimpleSlice3) GetSlices() []string {
|
|||
}
|
||||
|
||||
type SimpleMap3 struct {
|
||||
Stringy map[string]string `protobuf:"bytes,1,rep,name=stringy" json:"stringy,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
|
||||
Stringy map[string]string `protobuf:"bytes,1,rep,name=stringy" json:"stringy,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
}
|
||||
|
||||
func (m *SimpleMap3) Reset() { *m = SimpleMap3{} }
|
||||
func (m *SimpleMap3) String() string { return proto.CompactTextString(m) }
|
||||
func (*SimpleMap3) ProtoMessage() {}
|
||||
func (*SimpleMap3) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
|
||||
func (m *SimpleMap3) Reset() { *m = SimpleMap3{} }
|
||||
func (m *SimpleMap3) String() string { return proto.CompactTextString(m) }
|
||||
func (*SimpleMap3) ProtoMessage() {}
|
||||
func (*SimpleMap3) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_more_test_objects_bef0d79b901f4c4a, []int{2}
|
||||
}
|
||||
func (m *SimpleMap3) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_SimpleMap3.Unmarshal(m, b)
|
||||
}
|
||||
func (m *SimpleMap3) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||
return xxx_messageInfo_SimpleMap3.Marshal(b, m, deterministic)
|
||||
}
|
||||
func (dst *SimpleMap3) XXX_Merge(src proto.Message) {
|
||||
xxx_messageInfo_SimpleMap3.Merge(dst, src)
|
||||
}
|
||||
func (m *SimpleMap3) XXX_Size() int {
|
||||
return xxx_messageInfo_SimpleMap3.Size(m)
|
||||
}
|
||||
func (m *SimpleMap3) XXX_DiscardUnknown() {
|
||||
xxx_messageInfo_SimpleMap3.DiscardUnknown(m)
|
||||
}
|
||||
|
||||
var xxx_messageInfo_SimpleMap3 proto.InternalMessageInfo
|
||||
|
||||
func (m *SimpleMap3) GetStringy() map[string]string {
|
||||
if m != nil {
|
||||
|
@ -114,13 +159,35 @@ func (m *SimpleMap3) GetStringy() map[string]string {
|
|||
}
|
||||
|
||||
type SimpleNull3 struct {
|
||||
Simple *Simple3 `protobuf:"bytes,1,opt,name=simple" json:"simple,omitempty"`
|
||||
Simple *Simple3 `protobuf:"bytes,1,opt,name=simple" json:"simple,omitempty"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
}
|
||||
|
||||
func (m *SimpleNull3) Reset() { *m = SimpleNull3{} }
|
||||
func (m *SimpleNull3) String() string { return proto.CompactTextString(m) }
|
||||
func (*SimpleNull3) ProtoMessage() {}
|
||||
func (*SimpleNull3) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
|
||||
func (m *SimpleNull3) Reset() { *m = SimpleNull3{} }
|
||||
func (m *SimpleNull3) String() string { return proto.CompactTextString(m) }
|
||||
func (*SimpleNull3) ProtoMessage() {}
|
||||
func (*SimpleNull3) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_more_test_objects_bef0d79b901f4c4a, []int{3}
|
||||
}
|
||||
func (m *SimpleNull3) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_SimpleNull3.Unmarshal(m, b)
|
||||
}
|
||||
func (m *SimpleNull3) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||
return xxx_messageInfo_SimpleNull3.Marshal(b, m, deterministic)
|
||||
}
|
||||
func (dst *SimpleNull3) XXX_Merge(src proto.Message) {
|
||||
xxx_messageInfo_SimpleNull3.Merge(dst, src)
|
||||
}
|
||||
func (m *SimpleNull3) XXX_Size() int {
|
||||
return xxx_messageInfo_SimpleNull3.Size(m)
|
||||
}
|
||||
func (m *SimpleNull3) XXX_DiscardUnknown() {
|
||||
xxx_messageInfo_SimpleNull3.DiscardUnknown(m)
|
||||
}
|
||||
|
||||
var xxx_messageInfo_SimpleNull3 proto.InternalMessageInfo
|
||||
|
||||
func (m *SimpleNull3) GetSimple() *Simple3 {
|
||||
if m != nil {
|
||||
|
@ -130,22 +197,44 @@ func (m *SimpleNull3) GetSimple() *Simple3 {
|
|||
}
|
||||
|
||||
type Mappy struct {
|
||||
Nummy map[int64]int32 `protobuf:"bytes,1,rep,name=nummy" json:"nummy,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
|
||||
Strry map[string]string `protobuf:"bytes,2,rep,name=strry" json:"strry,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
|
||||
Objjy map[int32]*Simple3 `protobuf:"bytes,3,rep,name=objjy" json:"objjy,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
|
||||
Buggy map[int64]string `protobuf:"bytes,4,rep,name=buggy" json:"buggy,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
|
||||
Booly map[bool]bool `protobuf:"bytes,5,rep,name=booly" json:"booly,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
|
||||
Enumy map[string]Numeral `protobuf:"bytes,6,rep,name=enumy" json:"enumy,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=jsonpb.Numeral"`
|
||||
S32Booly map[int32]bool `protobuf:"bytes,7,rep,name=s32booly" json:"s32booly,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
|
||||
S64Booly map[int64]bool `protobuf:"bytes,8,rep,name=s64booly" json:"s64booly,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
|
||||
U32Booly map[uint32]bool `protobuf:"bytes,9,rep,name=u32booly" json:"u32booly,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
|
||||
U64Booly map[uint64]bool `protobuf:"bytes,10,rep,name=u64booly" json:"u64booly,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
|
||||
Nummy map[int64]int32 `protobuf:"bytes,1,rep,name=nummy" json:"nummy,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
|
||||
Strry map[string]string `protobuf:"bytes,2,rep,name=strry" json:"strry,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
|
||||
Objjy map[int32]*Simple3 `protobuf:"bytes,3,rep,name=objjy" json:"objjy,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
|
||||
Buggy map[int64]string `protobuf:"bytes,4,rep,name=buggy" json:"buggy,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
|
||||
Booly map[bool]bool `protobuf:"bytes,5,rep,name=booly" json:"booly,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
|
||||
Enumy map[string]Numeral `protobuf:"bytes,6,rep,name=enumy" json:"enumy,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=jsonpb.Numeral"`
|
||||
S32Booly map[int32]bool `protobuf:"bytes,7,rep,name=s32booly" json:"s32booly,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
|
||||
S64Booly map[int64]bool `protobuf:"bytes,8,rep,name=s64booly" json:"s64booly,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
|
||||
U32Booly map[uint32]bool `protobuf:"bytes,9,rep,name=u32booly" json:"u32booly,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
|
||||
U64Booly map[uint64]bool `protobuf:"bytes,10,rep,name=u64booly" json:"u64booly,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
|
||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||
XXX_unrecognized []byte `json:"-"`
|
||||
XXX_sizecache int32 `json:"-"`
|
||||
}
|
||||
|
||||
func (m *Mappy) Reset() { *m = Mappy{} }
|
||||
func (m *Mappy) String() string { return proto.CompactTextString(m) }
|
||||
func (*Mappy) ProtoMessage() {}
|
||||
func (*Mappy) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
|
||||
func (m *Mappy) Reset() { *m = Mappy{} }
|
||||
func (m *Mappy) String() string { return proto.CompactTextString(m) }
|
||||
func (*Mappy) ProtoMessage() {}
|
||||
func (*Mappy) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_more_test_objects_bef0d79b901f4c4a, []int{4}
|
||||
}
|
||||
func (m *Mappy) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_Mappy.Unmarshal(m, b)
|
||||
}
|
||||
func (m *Mappy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||
return xxx_messageInfo_Mappy.Marshal(b, m, deterministic)
|
||||
}
|
||||
func (dst *Mappy) XXX_Merge(src proto.Message) {
|
||||
xxx_messageInfo_Mappy.Merge(dst, src)
|
||||
}
|
||||
func (m *Mappy) XXX_Size() int {
|
||||
return xxx_messageInfo_Mappy.Size(m)
|
||||
}
|
||||
func (m *Mappy) XXX_DiscardUnknown() {
|
||||
xxx_messageInfo_Mappy.DiscardUnknown(m)
|
||||
}
|
||||
|
||||
var xxx_messageInfo_Mappy proto.InternalMessageInfo
|
||||
|
||||
func (m *Mappy) GetNummy() map[int64]int32 {
|
||||
if m != nil {
|
||||
|
@ -221,14 +310,27 @@ func init() {
|
|||
proto.RegisterType((*Simple3)(nil), "jsonpb.Simple3")
|
||||
proto.RegisterType((*SimpleSlice3)(nil), "jsonpb.SimpleSlice3")
|
||||
proto.RegisterType((*SimpleMap3)(nil), "jsonpb.SimpleMap3")
|
||||
proto.RegisterMapType((map[string]string)(nil), "jsonpb.SimpleMap3.StringyEntry")
|
||||
proto.RegisterType((*SimpleNull3)(nil), "jsonpb.SimpleNull3")
|
||||
proto.RegisterType((*Mappy)(nil), "jsonpb.Mappy")
|
||||
proto.RegisterMapType((map[bool]bool)(nil), "jsonpb.Mappy.BoolyEntry")
|
||||
proto.RegisterMapType((map[int64]string)(nil), "jsonpb.Mappy.BuggyEntry")
|
||||
proto.RegisterMapType((map[string]Numeral)(nil), "jsonpb.Mappy.EnumyEntry")
|
||||
proto.RegisterMapType((map[int64]int32)(nil), "jsonpb.Mappy.NummyEntry")
|
||||
proto.RegisterMapType((map[int32]*Simple3)(nil), "jsonpb.Mappy.ObjjyEntry")
|
||||
proto.RegisterMapType((map[int32]bool)(nil), "jsonpb.Mappy.S32boolyEntry")
|
||||
proto.RegisterMapType((map[int64]bool)(nil), "jsonpb.Mappy.S64boolyEntry")
|
||||
proto.RegisterMapType((map[string]string)(nil), "jsonpb.Mappy.StrryEntry")
|
||||
proto.RegisterMapType((map[uint32]bool)(nil), "jsonpb.Mappy.U32boolyEntry")
|
||||
proto.RegisterMapType((map[uint64]bool)(nil), "jsonpb.Mappy.U64boolyEntry")
|
||||
proto.RegisterEnum("jsonpb.Numeral", Numeral_name, Numeral_value)
|
||||
}
|
||||
|
||||
func init() { proto.RegisterFile("more_test_objects.proto", fileDescriptor0) }
|
||||
func init() {
|
||||
proto.RegisterFile("more_test_objects.proto", fileDescriptor_more_test_objects_bef0d79b901f4c4a)
|
||||
}
|
||||
|
||||
var fileDescriptor0 = []byte{
|
||||
var fileDescriptor_more_test_objects_bef0d79b901f4c4a = []byte{
|
||||
// 526 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x94, 0xdd, 0x6b, 0xdb, 0x3c,
|
||||
0x14, 0x87, 0x5f, 0x27, 0xf5, 0xd7, 0x49, 0xfb, 0x2e, 0x88, 0xb1, 0x99, 0xf4, 0x62, 0xc5, 0xb0,
|
||||
|
|
830
vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/test_objects.pb.go
generated
vendored
830
vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/test_objects.pb.go
generated
vendored
File diff suppressed because it is too large
Load diff
24
vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/test_objects.proto
generated
vendored
24
vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/test_objects.proto
generated
vendored
|
@ -107,6 +107,7 @@ message MsgWithOneof {
|
|||
int64 salary = 2;
|
||||
string Country = 3;
|
||||
string home_address = 4;
|
||||
MsgWithRequired msg_with_required = 5;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -145,3 +146,26 @@ message KnownTypes {
|
|||
optional google.protobuf.StringValue str = 10;
|
||||
optional google.protobuf.BytesValue bytes = 11;
|
||||
}
|
||||
|
||||
// Test messages for marshaling/unmarshaling required fields.
|
||||
message MsgWithRequired {
|
||||
required string str = 1;
|
||||
}
|
||||
|
||||
message MsgWithIndirectRequired {
|
||||
optional MsgWithRequired subm = 1;
|
||||
map<string, MsgWithRequired> map_field = 2;
|
||||
repeated MsgWithRequired slice_field = 3;
|
||||
}
|
||||
|
||||
message MsgWithRequiredBytes {
|
||||
required bytes byts = 1;
|
||||
}
|
||||
|
||||
message MsgWithRequiredWKT {
|
||||
required google.protobuf.StringValue str = 1;
|
||||
}
|
||||
|
||||
extend Real {
|
||||
optional MsgWithRequired extm = 125;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue