微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

看起来 swagger-codegen-cli -DdebugModels 不显示父级,显示无法访问的 interfaceModels 并且在 2.4.14 之后损坏?

如何解决看起来 swagger-codegen-cli -DdebugModels 不显示父级,显示无法访问的 interfaceModels 并且在 2.4.14 之后损坏?

运行 swagger-codegen 2.4.14 以生成带有 -DdebugModels 的 Java 语言 jaxrs-spec:

java -DdebugModels -jar swagger-codegen-cli-2.4.14.jar generate -i composition_2.yaml -l jaxrs-spec

使用规范 https://swagger.io/specification/v2/“带组合的模型”示例,其中 composition_2.yaml 包含以下摘录:

ExtendedErrorModel:
  allOf:     # Combines the BasicErrorModel and the inline model
    - $ref: '#/deFinitions/BasicErrorModel'
    - type: object
      required:
        - rootCause
      properties:
        rootCause:
          type: string

产生:

[…{…},{
  "importPath" : "io.swagger.model.ExtendedErrorModel","model" : {
    "interfaces" : [ "BasicErrorModel" ],"interfaceModels" : [ {
      "name" : "BasicErrorModel","classname" : "BasicErrorModel","classVarName" : "basicErrorModel",…
      "vars" : [ {
        "baseName" : "message","getter" : "getMessage","setter" : "setMessage","datatype" : "String",…]
  1. 鉴于此使用了 https://github.com/swagger-api/swagger-codegen/blob/master/modules/swagger-codegen/src/main/resources/JavaJaxRS/pojo.mustache 中的 pojo.mustache(摘自 https://mvnrepository.com/artifact/io.swagger/swagger-codegen-cli/2.4.14 下面)(请注意,在 2.4.14 之后 -DdebugModels 导致 stackOverflowError 崩溃,因此我尽管 openApi3 版本是我真正感兴趣的版本,但无法检查该模型)

public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#serializableModel}}implements Serializable{{/serializableModel}} {

为什么 parent 在 debugModel 输出不显示为元素?

  1. 鉴于上面显示生成的 debugModel 的摘录,获取 ExtendedErrorModel 的 model.interfaceModels.vars.baseName 的语法是什么?类似于:{{#models}}{{#interfaceModels}}{{#vars}}{{baseName}}? (这不起作用)。

  2. 考虑到这些版本生成 ExtendedErrorModel extends BasicErrorModel,ExtendedErrorModel 的 model.interfaceModels.vars.baseName 是否是在 2.4.17 和 3.0.24 中查找基类变量名称的正确路径而 2.4.14 只生成包含所有字段的 ExtendedErrorModel

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。