I see that there is a date
format for strings in OpenAPI, and that by using dateLibrary=java8
we can generate LocalDate
fields by using openapi-generator
.
But is there any way of producing LocalTime
fields? There is no time
format in OpenAPI and the date-time
one produces OffsetDateTime
.
EDIT: It's hard offering a reproducible example since the question is about something I can't do, but some illustrative example would be that I want something along the lines of:
A schema specification:
Visit:
type: object
parameters:
visitor:
type: string
timeOfVisit:
type: string
format: time
But obviously the time
format is not present in the OpenAPI specification. The generated code should be something like
public class Visit {
private String visitor;
private LocalTime timeOfVisit;
// Getters, setters, etc
}
There must surely be some way for openapi-generator
to produce this output, isn't it? I've found that there are some import-mappings
that map LocalTime
to org.joda.time.*
so there seems to be a way of having it produce LocalTime
types, but I haven't found it
Solved it! Actually it was really easy, but being a beginner in OpenAPI it was hard finding a solution. Given the example in my question, I'd just have to run openapi-generator-cli
as
openapi-generator-cli generate -g java --type-mappings time=LocalTime
And voilĂ , it's done!
EDIT:
This would make the field type become LocalTime
, but the compiler will complain that the type is not imported. The import can be added using the previously (in the question) mentioned import-mappings
, so the definitive command would be:
openapi-generator-cli generate -g java --type-mappings time=LocalTime --import-mappings LocalTime=java.time.LocalTime
EDIT:
An alternative is to configure the plugin inside your pom.xml:
<configuration>
<typeMappings>
<typeMapping>time=LocalTime</typeMapping>
</typeMappings>
<importMappings>
<importMapping>LocalTime=java.time.LocalTime</importMapping>
</importMappings>
</configuration>