micronaut-openapi icon indicating copy to clipboard operation
micronaut-openapi copied to clipboard

`@JsonProperty` name ignored in OpenAPI metadata when `@Schema` present as well

Open oujesky opened this issue 1 year ago • 0 comments

Expected Behavior

@JsonProperty specified name of the field will be used in generated OpenAPI metadata

...
components:
  schemas:
    ExampleModel:
      type: object
      properties:
        nameInJson:
          type: string
          description: example field

Actual Behaviour

Class field name is used in generated OpenAPI metadata and the value in @JsonProperty is ignored

...
components:
  schemas:
    ExampleModel:
      type: object
      properties:
        nameInPojo:
          type: string
          description: example field
      description: ""

Steps To Reproduce

  1. Controller returning simple Pojo
@Controller("/api/example")
public class ExampleController {
    @Get
    public ExampleModel getExample() {
        return new ExampleModel();
    }
}
  1. Pojo with field annotated with both @JsonProperty & @Schema
@Introspected
public class ExampleModel {
    @JsonProperty("nameInJson")
    @Schema(description = "example field")
    private String nameInPojo;

    public String getNameInPojo() {
        return nameInPojo;
    }
}
  1. Compile code which generates the OpenAPI metadata

Additional notes:

  • not reproducible with micronautVersion=3.5.4 (https://github.com/oujesky/micronaut-openapi-model-bug/blob/main/micronaut-openapi-model-bug-3.5.4.yml)
  • seems to be injected with dependencies coming from micronautVersion=3.6.0 (https://github.com/oujesky/micronaut-openapi-model-bug/blob/main/micronaut-openapi-model-bug-3.6.0.yml)
  • not reproducible when @Schema annotation is not present on the field

Environment Information

  • Windows 10
  • JDK 17

Example Application

https://github.com/oujesky/micronaut-openapi-model-bug

Version

3.6.0

oujesky avatar Aug 05 '22 13:08 oujesky