OpenAPI codegen for Micronaut
OpenAPI code generator for Micronaut 4. Micronaut 3 is supported by version 3.x
Include in your pom.xml
:
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>${version.org.openapitools.generator}</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<generatorName>micronaut</generatorName>
<output>${project.build.directory}</output>
<inputSpec>src/resources//openapi/spec.yaml</inputSpec>
<packageName>changeMe</packageName>
</configuration>
<dependencies>
<dependency>
<groupId>io.kokuwa.micronaut</groupId>
<artifactId>micronaut-openapi-codegen</artifactId>
<version>${version.io.kokuwa.micronaut.codegen}</version>
</dependency>
</dependencies>
</plugin>
@io.micronaut.serde.annotation.Serdeable
to models (default true
)true
)true
)Model
vs. HttpResponse<Model>
(default true
)java.util.Optional
(default true
)JsonNullable
to model objects that are nullable (default true
)false
)false
)false
)false
)true
)false
)For examples see integration tests.
Jackson Inclusions:
required=true
& nullable=false
: JsonInclude.ALWAYS
required=true
& nullable=true
: JsonInclude.ALWAYS
required=false
& nullable=false
: JsonInclude.NON_ABSENT
required=false
& nullable=true
: JsonInclude.NON_NULL
Container (array/map):
required=true
& nullable=false
: empty containers are set as default valuerequired=true
& nullable=true
: containers have no default valuerequired=false
& nullable=false
: containers have no default valuerequired=false
& nullable=true
: containers have no default valueIf jacksonDatabindNullable=true
is configured always JsonNullable.undefined()
is set.
Do not forget to add the dependency to pom.xml
:
<dependency>
<groupId>org.openapitools</groupId>
<artifactId>jackson-databind-nullable</artifactId>
<version>0.2.6</version>
</dependency>
And register Jackson Module:
@Factory
public class ApplicationFactory {
@Singleton
JsonNullableModule jsonNullableModule() {
return new JsonNullableModule();
}
}
pom.xml
) is generated, only interfaces to implement