社内se × プログラマ × ビッグデータ

プログラミングなどITに興味があります。

WireMock で IllegalArgumentException(request + " does not have a getUri or getHttpURI method")

WireMock は簡単にREST API のモックが作れるのでとても便利です。
その WireMock を実装中に、表題のエラーに出くわしました。

IllegalArgumentException(request + " does not have a getUri or getHttpURI method")

WireMock のソースファイルを見てみると、どうも JettyUtils 内でスローされている様子。
https://github.com/tomakehurst/wiremock/blob/master/src/main/java/com/github/tomakehurst/wiremock/jetty9/JettyUtils.java

getUri あるいは getHttpURI のメソッドを探したが見つからなくて、例外が発生しているように見えます。
Exception で catch していますが、恐らくは NoSuchMethodException 辺りがスローされているのではと思います。

それらのメソッドは、org.eclipse.jetty.server.Request から探そうとしているようなのですが。
Request って名前のクラスって色んなところで使われていると思うんですよね。
実際、自分が扱っていたモジュール内を探してみても、4つか5つくらいの Request クラスが見つかりました。

これは、Request クラスがコンフリクトしているような気がしたので、依存ライブラリのロード順を変えてみたり、exclusion してみたところ、エラーを回避することができました。

1モジュールが大きくなってくると、依存ライブラリの数も多くなってきて、整合性が取りづらくなってきます。
モジュールの役割を明確にし、あまり大きくなり過ぎないように気をつけたいです。
あと、クラス名付ける時は分かり易いのがもちろんいいですが、なるべくユニークな名前にしておいた方が、コンフリクトに悩む機会は減るかもしれません。
とは言え、いつもコンフリクトに悩まされるのは、ほとんど内製ではない依存ライブラリからなんですけどね。。