swagger-api / swagger-codegen

swagger-codegen contains a template-driven engine to generate documentation, API clients and server stubs in different languages by parsing your OpenAPI / Swagger definition.
http://swagger.io
Apache License 2.0
16.98k stars 6.03k forks source link

[codegen] InlineModelResolver doesn't copy `required` parameter to new reference property #4296

Open NikolaySl opened 7 years ago

NikolaySl commented 7 years ago
Description

https://github.com/swagger-api/swagger-codegen/blob/v2.2.1/modules/swagger-codegen/src/main/java/io/swagger/codegen/InlineModelResolver.java#L249 Here new reference property is created instead on inline object property. But flag required is not copied to newly created property definition. It leads that generated model is not relevant to swagger description.

Also in ModelImpl - https://github.com/swagger-api/swagger-core/blob/v1.5.10/modules/swagger-models/src/main/java/io/swagger/models/ModelImpl.java#L176 the list of required fields is calculated according to properties, not appropriate variable - https://github.com/swagger-api/swagger-core/blob/v1.5.10/modules/swagger-models/src/main/java/io/swagger/models/ModelImpl.java#L22 It looks like data duplication (list and value in properties), I would remove the list.

Swagger-codegen version

2.2.1 and current master

wing328 commented 7 years ago

@NikolaySl thanks for reporting the issue. May I know if you've time to contribute a fix?

ebelanger commented 7 years ago

I also encountered this problem. What we will do for now is remove inline models from our API. I may at one point take a go at it.