API の設計に swagger-inflector を使用しています。ドキュメントで指定されているように x-swagger-router-controller と x-swagger-router-model を使用しようとしていますが、指定どおりに機能しません。
私がドキュメントを読んだ方法では、これらのベンダー拡張機能は、存在しない場合はクラスを作成し、「operationId」という名前のメソッドを作成することになっています。ただし、指定どおりに動作しません。(このベンダー拡張機能を処理すると思われるコードを見たところ、拡張機能を処理する必要があるように見えますが、期待どおりにクラスが作成されていません。x-swagger-router-model は目的のクラスを生成します。名前ですが、目的のパッケージではありません)。
inflector.yaml ファイルを使用して modelPackage と controllerPackage を指定すると、これらのパッケージにクラスが作成されますが、生成されたクラスに使用されるパッケージをより細かく制御する必要があります。私は何か間違ったことをしていますか、それともこれは壊れていますか?
次に例を示します。
definitions:
SomeObject:
type: object
x-swagger-router-model: com.example.api.dto.SomeObjectDTO
...
paths:
/mypath:
x-swagger-router-controller: com.example.api.controller.subpkg1.MyController
get:
...
上記の例から
com/example/api/dto に作成された SomeObjectDTO という名前のモデル クラスを取得できません。inflector.yaml で modelPackage が指定されていない場合、デフォルト パッケージ (io/swagger/...) に作成された SomeObject という名前のモデル クラスを取得します。いずれの場合も生成されるモデル クラス名は SomeObject.java です。
com/example/api/controller/subpkg1 で作成された MyController という名前のコントローラー クラスを取得できません。inflector.yaml で controllerPackage が指定されていない場合、デフォルト パッケージ (io/swagger/...) に作成された "MyPathController" という名前のコントローラー クラスを取得します。いずれの場合も生成されるコントローラ クラスは MyPathController.java です。
これはバグであるか、本当に明らかな何かが欠けているようです。ここに何かポインタはありますか?