プレーンな JDK で実行されている WebServices の束があり、何かを行うためにすべてのパブリック メソッドをインターセプトする必要があります。一部のメソッドは @WebParam アノテーションを使用しています。WebService を ByteBuddy でサブクラス化すると、 @WebParam アノテーションがオーバーライド メソッドから削除され、サービスが期待どおりに機能しなくなります。
署名のサンプルはこちら
public Something fetch( @WebParam( name="Query" ) QueryCriteria query )
そして、これが私がByteBuddyを使用している方法です
new ByteBuddy( )
.subclass( implementationClass )
.method( isPublic( ).and( isDeclaredBy( implementationClass ) ) )
.intercept(
MethodDelegation.to( new WebServiceInterceptor( ) )
.andThen( SuperMethodCall.INSTANCE ) )
.annotateType( implementationClass.getAnnotations( ) )
.make( )
パラメーターに注釈を付ける方法があることは知っていますが、メソッドのパラメーターに関する特別な知識が必要です (一部のパラメーターのみに注釈が付けられるため)。私がやりたいことは、オーバーライドされたすべてのメソッドのすべてのパラメーターを含むスーパークラスとまったく同じ方法で、ByteBuddy にクラスに注釈を付けるように依頼することです。
subclass( implementationClass )
.annotateType( LIKE_SUPERCLASS )
.method( )
.intercept( ... )
.annotateMethod( LIKE_SUPER_INCLUDING_PARAMS )
何か案は?
BR、パシ