Skip to content

Commit deab66e

Browse files
committed
Fix openapi codegen: don't skip ref types
1 parent 91060e6 commit deab66e

File tree

8 files changed

+19
-10
lines changed

8 files changed

+19
-10
lines changed

examples/internal/clients/abe/BUILD.bazel

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,15 @@ go_library(
2525
"model_book.go",
2626
"model_examplepb_a_bit_of_everything.go",
2727
"model_examplepb_a_bit_of_everything_repeated.go",
28+
"model_examplepb_bar.go",
2829
"model_examplepb_body.go",
2930
"model_examplepb_book.go",
3031
"model_examplepb_check_status_response.go",
3132
"model_examplepb_error_object.go",
3233
"model_examplepb_error_response.go",
34+
"model_examplepb_foo.go",
3335
"model_examplepb_numeric_enum.go",
36+
"model_examplepb_required_message_type_request.go",
3437
"model_examplepb_snake_enum_response.go",
3538
"model_examplepbsnake_case_0_enum.go",
3639
"model_examplepbsnake_case_enum.go",

examples/internal/clients/abe/api/swagger.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4905,6 +4905,8 @@ definitions:
49054905
$ref: "#/definitions/examplepbErrorObject"
49064906
examplepbFoo:
49074907
type: "object"
4908+
required:
4909+
- "bar"
49084910
properties:
49094911
bar:
49104912
$ref: "#/definitions/examplepbBar"
@@ -4919,6 +4921,7 @@ definitions:
49194921
examplepbRequiredMessageTypeRequest:
49204922
type: "object"
49214923
required:
4924+
- "foo"
49224925
- "id"
49234926
properties:
49244927
id:

examples/internal/clients/abe/model_examplepb_foo.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,5 @@
1111
package abe
1212

1313
type ExamplepbFoo struct {
14-
Bar *ExamplepbBar `json:"bar,omitempty"`
14+
Bar *ExamplepbBar `json:"bar"`
1515
}

examples/internal/clients/abe/model_examplepb_required_message_type_request.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,5 @@ package abe
1212

1313
type ExamplepbRequiredMessageTypeRequest struct {
1414
Id string `json:"id"`
15-
Foo *ExamplepbFoo `json:"foo,omitempty"`
15+
Foo *ExamplepbFoo `json:"foo"`
1616
}

examples/internal/proto/examplepb/a_bit_of_everything.swagger.json

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6984,7 +6984,10 @@
69846984
"bar": {
69856985
"$ref": "#/definitions/examplepbBar"
69866986
}
6987-
}
6987+
},
6988+
"required": [
6989+
"bar"
6990+
]
69886991
},
69896992
"examplepbNumericEnum": {
69906993
"type": "string",
@@ -7007,7 +7010,8 @@
70077010
},
70087011
"title": "Required message type -\u003e OpenAPI\nhttps://github.com/grpc-ecosystem/grpc-gateway/issues/2837",
70097012
"required": [
7010-
"id"
7013+
"id",
7014+
"foo"
70117015
]
70127016
},
70137017
"examplepbSnakeEnumResponse": {

examples/internal/server/a_bit_of_everything.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -411,3 +411,7 @@ func (s *_ABitOfEverythingServer) TraceRequest(ctx context.Context, msg *example
411411
func (s *_ABitOfEverythingServer) PostOneofEnum(ctx context.Context, msg *oneofenum.OneofEnumMessage) (*emptypb.Empty, error) {
412412
return new(emptypb.Empty), nil
413413
}
414+
415+
func (s *_ABitOfEverythingServer) PostRequiredMessageType(ctx context.Context, req *examples.RequiredMessageTypeRequest) (*emptypb.Empty, error) {
416+
return new(emptypb.Empty), nil
417+
}

protoc-gen-openapiv2/internal/genopenapi/template.go

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2652,12 +2652,6 @@ func updateswaggerObjectFromJSONSchema(s *openapiSchemaObject, j *openapi_option
26522652
}
26532653

26542654
func updateSwaggerObjectFromFieldBehavior(s *openapiSchemaObject, j []annotations.FieldBehavior, reg *descriptor.Registry, field *descriptor.Field) {
2655-
// Per the JSON Reference syntax: Any members other than "$ref" in a JSON Reference object SHALL be ignored.
2656-
// https://tools.ietf.org/html/draft-pbryan-zyp-json-ref-03#section-3
2657-
if s.Ref != "" {
2658-
return
2659-
}
2660-
26612655
for _, fb := range j {
26622656
switch fb {
26632657
case annotations.FieldBehavior_REQUIRED:

protoc-gen-openapiv2/internal/genopenapi/template_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4340,6 +4340,7 @@ func TestSchemaOfField(t *testing.T) {
43404340
schemaCore: schemaCore{
43414341
Ref: "#/definitions/exampleMessage",
43424342
},
4343+
Required: []string{"message_field"},
43434344
},
43444345
},
43454346
{

0 commit comments

Comments
 (0)