拦截签名班级的策略

时间:2017-02-12 03:52:55

标签: byte-buddy

我正在尝试对com.microsoft.azure.eventprocessorhost.PartitionContext进行并发测试,它在签名的jar中有一个多参数包保护的构造函数。

我想基本上忽略该构造函数(或传递null)并覆盖一个方法来递增计数器。该类不是最终的,也不是构造函数或方法。

由于签名而直接导致安全性异常的子类化。我查看了各种示例,并使用了本地版本的ByteBuddyTutorialExamplesTest,但无效。

目前,我正在考虑放弃,而是拦截该课程的呼叫网站。也就是说,拥有一个虚假版本的目标(PartitionContext)会很方便。

我是否缺少任何技巧,或者我正在努力实现的目标是不可能的?

1 个答案:

答案 0 :(得分:2)

Byte Buddy提供了一个ClassLoadingStrategy,它将类注入到类加载器中,并且可以使用给定的ProtectionDomain。但是,该域确实需要明确提供。

要应用此策略,load方法会重载第二个参数:

builder.make().load(sealedClass.getClassLoader(), 
  ClassLoadingStrategy.Default.INJECTION.with(sealedClass.getProtectionDomain()))