Skip to content

Commit 7a12930

Browse files
committed
Fix view used to render media types in Swagger
1 parent 7d7107f commit 7a12930

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

goagen/gen_schema/json_schema.go

+4-3
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ func GenerateResourceDefinition(api *design.APIDefinition, r *design.ResourceDef
236236

237237
// MediaTypeRef produces the JSON reference to the media type definition with the given view.
238238
func MediaTypeRef(api *design.APIDefinition, mt *design.MediaTypeDefinition, view string) string {
239-
if _, ok := Definitions[mt.TypeName]; !ok {
239+
if _, ok := Definitions[design.CanonicalIdentifier(mt.Identifier)]; !ok {
240240
GenerateMediaTypeDefinition(api, mt, view)
241241
}
242242
ref := fmt.Sprintf("#/definitions/%s", mt.TypeName)
@@ -257,12 +257,13 @@ func TypeRef(api *design.APIDefinition, ut *design.UserTypeDefinition) string {
257257
// GenerateMediaTypeDefinition produces the JSON schema corresponding to the given media type and
258258
// given view.
259259
func GenerateMediaTypeDefinition(api *design.APIDefinition, mt *design.MediaTypeDefinition, view string) {
260-
if _, ok := Definitions[mt.TypeName]; ok {
260+
cano := design.CanonicalIdentifier(mt.Identifier)
261+
if _, ok := Definitions[cano]; ok {
261262
return
262263
}
263264
s := NewJSONSchema()
264265
s.Title = fmt.Sprintf("Mediatype identifier: %s", mt.Identifier)
265-
Definitions[mt.TypeName] = s
266+
Definitions[cano] = s
266267
buildMediaTypeSchema(api, mt, view, s)
267268
}
268269

goagen/gen_swagger/swagger.go

+6-1
Original file line numberDiff line numberDiff line change
@@ -757,7 +757,12 @@ func responseSpecFromDefinition(s *Swagger, api *design.APIDefinition, r *design
757757
var schema *genschema.JSONSchema
758758
if r.MediaType != "" {
759759
if mt, ok := api.MediaTypes[design.CanonicalIdentifier(r.MediaType)]; ok {
760-
schema = genschema.TypeSchema(api, mt)
760+
view := r.ViewName
761+
if view == "" {
762+
view = design.DefaultView
763+
}
764+
schema = genschema.NewJSONSchema()
765+
schema.Ref = genschema.MediaTypeRef(api, mt, view)
761766
}
762767
}
763768
headers, err := headersFromDefinition(r.Headers)

0 commit comments

Comments
 (0)