restdocs-api-spec icon indicating copy to clipboard operation
restdocs-api-spec copied to clipboard

Gradle task openapi3 fails when a field is not given a description

Open pangyikhei opened this issue 6 years ago • 2 comments

Not sure if this is intended behavior, but when I don't specify a description for a response field, the output snippet resource.json outputs "description": null, which causes the openapi3 gradle task to fail.

Example:

The controller returns an array of objects.

[
  {
    "example": "blah"
  }
]

resources.json shows a null value for description

 "responseFields" : [ {
      "attributes" : { },
      "description" : null,
      "ignored" : false,
      "path" : "[].example",
      "type" : "STRING",
      "optional" : false
    },

Test uses Spring @WebMvcTest and MockMvc with MockMvcRestDocumentationWrapper

this.mockMvc.perform(get("/example"))
        .andExpect(status().isOk())
        .andDo(document("example", resource(ResourceSnippetParameters.builder()
            .responseFields(
                fieldWithPath("[].example").type(JsonFieldType.STRING)
            )
            .build()
        )));

Error:

Execution failed for task ':example:openapi3'.
> com.fasterxml.jackson.module.kotlin.MissingKotlinParameterException: Instantiation of [simple type, class com.epages.restdocs.apispec.model.FieldDescriptor] value failed for JSON property description due to missing (therefore NULL) value for creator parameter description which is a non-nullable type
...

com.epages.restdocs.apispec.model.ResourceModel["response"]->com.epages.restdocs.apispec.model.ResponseModel["responseFields"]->java.util.ArrayList[0]->com.epages.restdocs.apispec.model.FieldDescriptor["description"])

If I add any description to the FieldDescriptor, the task succeeds.

pangyikhei avatar Jan 07 '20 20:01 pangyikhei

Interesting, we are always using FieldDescriptor with a description to leverage Spring restdocs throwing errors when not all/too many fields are documented (missing FieldDescriptor is equivalent to a missing description for us).

Your usage seems to be valid, however. So I'd consider it an error in the openapi3 generator.

Thanks for the report!

ozscheyge avatar Jan 13 '20 13:01 ozscheyge

I think I can solve this problem. Can I handle this issue?

seokjun7410 avatar Mar 13 '24 02:03 seokjun7410