问题描述
运行 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",…]
- 鉴于此使用了 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 输出中不显示为元素?
-
鉴于上面显示的生成的 debugModel 的摘录,获取 ExtendedErrorModel 的 model.interfaceModels.vars.baseName 的语法是什么?类似于:{{#models}}{{#interfaceModels}}{{#vars}}{{baseName}}? (这不起作用)。
-
考虑到这些版本生成 ExtendedErrorModel extends BasicErrorModel,ExtendedErrorModel 的 model.interfaceModels.vars.baseName 是否是在 2.4.17 和 3.0.24 中查找基类变量名称的正确路径而 2.4.14 只生成包含所有字段的 ExtendedErrorModel?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)