優れたws-lite ライブラリを使用して、パートナーの SOAP バックエンドに対して小さなクライアントを実装しました
残念ながら、ライブラリにはログ記録のサポートが含まれていませんが、機能構成を使用して委任する方法について説明しているこのブログを見つけました。
ここで、元の SoapClient クラスにすべての種類の send メソッドのログを追加したいと思います。Groovy メタプログラミングの黒魔術でそれが可能であると確信していますが、その方法の例を見つけられず、動的メタプログラミングに関してはまだ初心者です。私が望むのは、元のメソッドに委譲する前に、ロギングとエラー処理を呼び出す同じシグネチャを持つメソッドを追加することです。
また、API が進化したときに将来的にオーバーロードされる可能性のあるバージョンに適応する必要がないように、これを 1 か所にまとめて DRY に保ちたいと考えています。
SOAPClient には、次のような send メソッドがあります。
public SOAPResponse send(java.util.Map requestParams, groovy.lang.Closure content)
public SOAPResponse send(java.util.Map requestParams, java.lang.String content)
public SOAPResponse send(java.util.Map requestParams, wslite.soap.SOAPVersion soapVersion, java.lang.String content)
これで、クラスを拡張し、メソッドをオーバーライドして、自分の人生を続けることができました。しかし、これを達成するためのGroovier(および将来の証拠)の方法を知りたいです。