Byte Buddy 0.7.7 から 1.0.2 に移行する際に、テスト スイートでいくつかの問題が発生しています。
簡単な例を次に示します。
public class ReproBug {
@Test
public void test() {
ByteBuddyAgent.install();
new AgentBuilder.Default().type(nameStartsWith("test"))
.transform(new AgentBuilder.Transformer() {
@Override
public Builder<?> transform(Builder<?> builder, TypeDescription typeDescription) {
return builder.method(isDeclaredBy(typeDescription)).intercept(to(new Object() {
@RuntimeType
public void intercept(@SuperCall Callable<?> zuper, @Origin Method method) {
System.out.println("intercepting " + method.getName());
}
}));
}
}).installOnByteBuddyAgent();
MyClass.staticMethod();
}
}
のコードMyClass:
class MyClass {
public static void staticMethod() {
System.out.println("in staticMethod");
}
}
Byte Buddy 0.7.7 ではエラーは報告されませんが、1.0.2 では のようなエラーが発生しCannot resolve type description for test.MyClass$auxiliary$dUGbkatoます。
完全なログ (AgentBuilder.Listener から): http://pastebin.com/ytsQR5bi
メソッドが傍受されることに注意してください。
callただし、一部のテストでは、補助クラスのメソッドをインターセプトするため、インターセプトの量が 2 倍になります。