Swagger Codegen 将 "format: time" 转换为非字符串
Swagger Codegen convert "format: time" to non String
我正在尝试自定义 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");
...
问题是时间格式,因为 codegen 没有默认定义这种格式,所以我可以 "override" 它。
有可能做我想做的事吗?如果有怎么办?
经过大量的敲击,我尝试了一种 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");
...
我正在尝试自定义 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");
...
问题是时间格式,因为 codegen 没有默认定义这种格式,所以我可以 "override" 它。
有可能做我想做的事吗?如果有怎么办?
经过大量的敲击,我尝试了一种 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");
...