我正在尝试自定义OpenAPI规范字符串格式之间的映射
到
分别。
我目前正在使用自己的自定义服务器生成器,该生成器扩展了JavaJerseyServerCodegen,所以我进行了更改,一切正常
@Override
public void processOpts()
{
super.processOpts();
typeMapping.put("DateTime", "Instant");
typeMapping.put("date", "LocalDate");
importMapping.put("Instant", "java.time.Instant");
importMapping.put("LocalDate", "java.time.LocalDate");
...
问题是时间格式,因为默认情况下代码源没有定义此格式,因此我可以“覆盖”它。
可以做我想做的吗?如果可以,怎么办?
答案 0 :(得分:1)
经过大量的敲打,我尝试了一种KISS方法,并得到了以下解决方案:
@Override
public String getSwaggerType(final Property property)
{
if ((property instanceof StringProperty) && ("time".equals(property.getFormat())))
{
return "OffsetTime";
}
else
{
return super.getSwaggerType(property);
}
}
现在我可以简单地执行以下操作
@Override
public void processOpts()
{
super.processOpts();
typeMapping.put("DateTime", "Instant");
typeMapping.put("date", "LocalDate");
typeMapping.put("time", "OffsetTime");
importMapping.put("Instant", "java.time.Instant");
importMapping.put("LocalDate", "java.time.LocalDate");
importMapping.put("OffsetTime", "java.time.OffsetTime");
...