'openapi scheme generated does not contains "content" of EntityModel spring-hateoas entities

I'm using :

  • springdoc-openapi-ui : 1.6.6
  • springdoc-openapi-hateoas: 1.6.8
  • swagger-models: 2.1.12
  • spring-hateoas: 1.4.1

When i retrieve the generated openapi scheme from my rest services i get responses format for hateoas EntityModel withtout the content section. (v3/api-doc endpoint)

Is there a way to get the scheme generated with the content section ?

I get :

{
    "EntityModelProject": {
    "required": [
    "name"
    ],
    "type": "object",
    "properties": {
    "id": {
    "type": "integer",
    "format": "int64"
    },
    "name": {
    "pattern": "[a-zA-Z0-9-_]*",
    "type": "string"
    },
    "label": {
    "type": "string"
    },
    "links": {
    "type": "array",
    "items": {
    "$ref": "#/components/schemas/Link"
    }
    }
    }
    }
}

I would like to have :

{
    "EntityModelProject": {
       "type": "object",
       "properties": {
         "content": {
           "type": "array",
           "items": {
              "$ref": "#/components/schemas/Project"
            }
         },
         "links": {
            "type": "array",
             "items": {
                "$ref": "#/components/schemas/Link"
             }
          }
       }
    }
}

EDIT 1 :

After looking into spring-hateoas code i see that the EntitModel class contains the Jakson @JsonUnwrapped annotation on getContent method. In our project we use Gson and Nt jakson. With Gson serialization, the result containts de "content" section. Wtih jakson the content section is unwrap. I assume that, the scheme generated by springdoc-openapi interpret with jsackson and not gson.

EDIT 2 :

Indeed, the ModelResolver class of io.swagger.v3.core.jackson, read Jackson annotations to create schema. In my case, the @JsonUnwrapped annotation. Swagger schema generation seems to be not compatible with Gson formatted api.



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source