3

プレーンな 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、パシ

4

1 に答える 1