前回は、Swagger APIのパース部分でつまづいて終わったのですが、続きをやってみました
Parser
前回記事通り、現状のSwagger製のJava Parserだと、Azure の REST API SPECが正しくパースされないので、結局Java Parserをアドホックに修正して自分の希望通りにパースできるようにしてみました。あまり厳密な解釈にこだわる必要もないので。
Diagram
詳細は後述しますが、ComputeのAPIをモデル化した情報をDiagramエディタにD&Dして、手動レイアウトしたものが以下です。
VirtualMachineから関連するオブジェクトが手に取るように分かります。これで内部構造の理解も捗るんじゃないかと思います。
仕組み
前回も少し書きましたが必要な環境は以下です。
- Eclipse 4.6 Modeling edition
- Eclipse Modeling Framework(EMF)
- Swagger Parser
- API の スキーマ
EclipseにはJava IDEとかとは別に、Modeling Editionがありますので、これを使います。EMFやDiagram Editorなどのプラグインが予め組み込まれています。
やっていることは簡単で、APIをパースするとSwaggerのAPIモデルが作られます。クラスやプロパティ、関連などが機械可読可能な状態になりますので、それをEMFのEcoreモデルでモデリングするだけです。EMFのEcoreモデルはメタモデル(MOF)の実装です。簡単にいってしまえば、Swagger API JSON -> Ecoreモデル(*.ecoreファイル)の変換をしているに過ぎません。
ecoreモデルが出来た後は、Diagram Editorを開いてD&Dしつつ、見える形に整えるだけです。
というわけで、当初も目論見が達成できたので満足です。