Using the simple petstore sample split into files, swagger-codegen is unable to generate any of the models.
During the generation, I receive this log for each model:
[main] WARN io.swagger.codegen.examples.ExampleGenerator - Ref property with empty model.
[main] WARN io.swagger.codegen.examples.ExampleGenerator - Ref property with empty model.
[main] WARN io.swagger.codegen.examples.ExampleGenerator - Ref property with empty model.
Here is my swagger.yaml
swagger: '2.0'
info:
version: '1.0.0'
title: Swagger Petstore (Simple)
description: A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification
termsOfService: http://helloreverb.com/terms/
contact:
name: Swagger API team
email: [email protected]
url: http://swagger.io
license:
name: MIT
url: http://opensource.org/licenses/MIT
host: petstore.swagger.io
basePath: /api
schemes:
- http
consumes:
- application/json
produces:
- application/json
paths:
/pets:
get:
description: Returns all pets from the system that the user has access to
operationId: findPets
produces:
- application/json
- application/xml
- text/xml
- text/html
parameters:
- name: tags
in: query
description: tags to filter by
required: false
type: array
items:
type: string
collectionFormat: csv
- name: limit
in: query
description: maximum number of results to return
required: false
type: integer
format: int32
responses:
'200':
description: pet response
schema:
type: array
items:
$ref: 'definitions.yaml#/definitions/pet'
default:
description: unexpected error
schema:
$ref: 'definitions.yaml#/definitions/errorModel'
post:
description: Creates a new pet in the store. Duplicates are allowed
operationId: addPet
produces:
- application/json
parameters:
- name: pet
in: body
description: Pet to add to the store
required: true
schema:
$ref: 'definitions.yaml#/definitions/newPet'
responses:
'200':
description: pet response
schema:
$ref: 'definitions.yaml#/definitions/pet'
default:
description: unexpected error
schema:
$ref: 'definitions.yaml#/definitions/errorModel'
/pets/{id}:
get:
description: Returns a user based on a single ID, if the user does not have access to the pet
operationId: findPetById
produces:
- application/json
- application/xml
- text/xml
- text/html
parameters:
- name: id
in: path
description: ID of pet to fetch
required: true
type: integer
format: int64
responses:
'200':
description: pet response
schema:
$ref: 'definitions.yaml#/definitions/pet'
default:
description: unexpected error
schema:
$ref: 'definitions.yaml#/definitions/errorModel'
delete:
description: deletes a single pet based on the ID supplied
operationId: deletePet
parameters:
- name: id
in: path
description: ID of pet to delete
required: true
type: integer
format: int64
responses:
'204':
description: pet deleted
default:
description: unexpected error
schema:
$ref: 'definitions.yaml#/definitions/errorModel'
And here is the definitions.yaml file
definitions:
pet:
type: object
required:
- id
- name
properties:
id:
type: integer
format: int64
name:
type: string
tag:
type: string
newPet:
type: object
required:
- name
properties:
id:
type: integer
format: int64
name:
type: string
tag:
type: string
errorModel:
type: object
required:
- code
- message
properties:
code:
type: integer
format: int32
message:
type: string
Latest master
java -jar swagger-codegen-cli.jar generate -i swagger.yaml -l java-play-framework -o generatedServer -DhideGenerationTimestamp=true
Just run the command line above
My swagger.yaml and definitions.yaml files are valid and load without problem in swagger-ui.
Is there any limitation in swagger-codegen preventing the use of multiple files?
It seems like basically no swagger tools other than the old version of the editor(editor2) and swaggerui actually support external refs.
@tony-gutierrez : If that is true, then I guess I will have to stick with my method to bundle all my yaml files to a single json and do the generation from this json file.
@wing328 : Can you confirm this?
I'm by no means an official source, i have just been spending the last hour trying to generate any possible code in any language, from a multi file spec, with no results. I know the current editor tool for spec 3 does not work with external refs.
@tony-gutierrez : Yeah I got the same feeling in my own experience. @wing328 is an official source and we should be fixed when he will answer.
I'm closing this since all of theses problems are in the swagger-parser project. I have created the related issue in this project and will keep track of them in the swagger-parser project from now on.
@tony-gutierrez have you tried adding "./" instead?
e.g $ref: './definitions.yaml#/definitions/errorModel'
Sorry to necro this post; I can get './' working fine, but when I try and reference folders with '../' I get 'Could not find ../definitions/someFile.yml on the classpath' . I thought maybe bringing it onto the classpath would flatten, so have tried ./, #/, no folder and all variations I could think of to no avail.
Most helpful comment
@tony-gutierrez have you tried adding "./" instead?
e.g
$ref: './definitions.yaml#/definitions/errorModel'