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");
  ...