swagger-codegen-cliで生成したコードが好みでなかったときの対処法
困ったこと
外部サービスが提供しているSwagger Specでjava-clientのコードをswagger-codegen-cliで生成して使っていました。
swagger-codegen-cliのバージョンを上げて再作成したところ、BooleanのgetterがgetXXX
ではなくisXXX
に変わってしまいました。
状況
- swagger-codegen-cliのv2.2.3を以前使ったが、新しいSwagger Specでは正しく生成できない。(ビルドエラーになる)
- v2.2.3 -> v2.3.1に変更(current stable)
テンプレートをカスタマイズ
実行する際に-t
をつける
# 例
# -t: templateがあるフォルダを指定. templateに存在するテンプレートファイルを優先して作成してくれる
java -jar swagger-codegen-cli.jar generate -l java -t ./template -o swagger-java-client
元々のテンプレートファイルの場所はgithubのswagger-codegen/modules/swagger-codegen/src/main/resources/Java/
にあります
今回上書きしたいテンプレートファイルはpojo.mustacheです。getter部分の箇所を見ると
public {{{datatypeWithEnum}}} {{#isBoolean}}is{{/isBoolean}}{{getter}}() {
return {{name}};
}
{{^isReadOnly}}
となっている場所があるので、次のように直します
{{#isBoolean}}
public {{{datatypeWithEnum}}} get{{getter}}() {
return {{name}};
}
{{/isBoolean}}
{{! Boolean以外はgetを書かなくてもgetが設定される }}
{{^isBoolean}}
public {{{datatypeWithEnum}}} {{getter}}() {
return {{name}};
}
{{/isBoolean}}
{{^isReadOnly}}
まとめ
今回は生成したコードでは困るので、テンプレートを上書きするようにしました。
同様に自分の好みにカスタマイズすることも可能です。
補足
v2.3.1ではテンプレートファイルで上書きするしかありませんが、次のバージョンでconfigでBooleanのprefixが決められるようになるかもしれません。(2018/04/13時点)
Author And Source
この問題について(swagger-codegen-cliで生成したコードが好みでなかったときの対処法), 我々は、より多くの情報をここで見つけました https://qiita.com/shikazuki/items/bd2bf488194c295fec0b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .