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>
- generate api interfaces (see declarative client)
- generate model objects with fluent and property accessors
- generate interfaces for api tests based on method name and return code
- generate client interfaces with micronaut clientId
- add validation annotations
- support for One-Of interfaces
- support for additional properties with composed schemas
- generate example instances of the model-objects
- clientId: id for generated clients (if no client id is provided no interface will be generated)
- serdeable: add
@io.micronaut.serde.annotation.Serdeable
to models (defaulttrue
) - dateTimeRelaxed: add type registrar for relaxed time converter (default
true
) - useBeanValidation: generate validation annotations (default
true
) - useGenericResponse: return generic container or specific model, e.g.
Model
vs.HttpResponse<Model>
(defaulttrue
) - useOptional: optional parameters are generated as
java.util.Optional
(defaulttrue
) - openApiNullable: add container
JsonNullable
to model objects that are nullable (defaulttrue
) - supportAsync: use reactivex return types, see Reactive HTTP Request Processing
- pagable: generate provider for pagable (default
false
) - generateExamples: generate example objects for the model, based on example and default values (default
false
) - generateConstants: generate constants for model names and api paths (default
false
) - generateAuthentication: generate Àuthentication into controller interfaces if response code 401 is present (default
false
) - sealed: generate sealed interfaces (default
true
) - record: generate records instead of pojos (default
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 value
If 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();
}
}
- no project (e.g.
pom.xml
) is generated, only interfaces to implement - no support for java <17