JAX-RS Analyzerを試してみた

このエントリはJava EE Advent Clanedar2016の6日目の記事です。
昨日は tyru さんの Java の Web アプリで色んなコードを共通化したい - Humanity でした。

【前提条件】

[環境]

【概要】

個人的にはJava EE内ではJAX-RS推しなので今年もJAX-RSネタです。

こちらの記事を見た時に「ほほぅ、JAX-RS Analyzerとな」と思ったので、
試しに簡単なコードで実行して見ました。

【サンプルコードについて】

サンプルコードは去年の使いまわしです。
https://github.com/gloryof/JaxrsJson

JAX-RS部分の動作部分については説明しないので去年のアドベントカレンダーを参照してください。

JAX-RS Analyzer】

GitHub - sdaschner/jaxrs-analyzer: Creates REST documentation for JAX-RS projects

JAX-RS AnalyzerはJAX-RSのクラスを解析してドキュメントを作成してくれるライブラリです。
JAX-RSのクラスにドキュメント用のアノテーションを追加する必要がないらしいのこと。

ということで、前回のソースを全く改変せずにどこまで解析されるかを試してみました。

[環境設定]

JAX-RS Analyzerはmaven-pluginでやる方法とjavaコマンドから実行する方法があります。
今回はmaven-pluginで実行する方法にします。

pom.xmlに下記の設定を追加します。
コミット内容はこちらです。

    <plugin>
        <groupId>com.sebastian-daschner</groupId>
        <artifactId>jaxrs-analyzer-maven-plugin</artifactId>
        <version>0.10</version>
        <executions>
            <execution>
                <goals>
                    <goal>analyze-jaxrs</goal>
                </goals>
                <configuration>
                    <backend>swagger</backend>
                </configuration>
            </execution>
        </executions>
    </plugin>

backendはswagger、asciidoc、plaintextの3つから設定します。

[実行]

あとはMavenからbuildを実行するだけです。

buildを実行するとtargetディレクトリの下にjaxrs-analyzerといディレクトリが作成されます。
その下にswaggerの場合はJSONが、asciidocの場合はadocが、plaintextの場合はtxtが置かれます。

[実行結果]

それぞれbackendを変えて実行したものをこちらに置いてあります。
Swaggerは生成されたJSONSwagger Editor通してあげるとUI形式で見られます。

結果を見るとURL、メソッド、パラメータ、レスポンスと最低限必要なものは備えられているのがわかると思います。

【感想】

お手軽にドキュメントが作れました。
とはいってもお手軽だけど、まだ必要な情報が足りないなぁといったところです。

まだ、0.10というバージョンなので今後は機能が拡張されていくと思います。

https://github.com/sdaschner/jaxrs-analyzer/issues/13
Javadocの内容を解析してdescriptionのところに追加する機能が欲しいとか、

https://github.com/sdaschner/jaxrs-analyzer/issues/45
Bean Validationの内容を解析して追加して欲しいなど

良さそうな機能が追加されるっぽいです。

JAX-RS推しとしては気になるライブラリです。