2017-02-12 34 views
2

我正在嘗試爲com.microsoft.azure.eventprocessorhost.PartitionContext進行併發測試,它在簽名的jar中包含多參數包保護的構造函數。攔截已簽名類的策略

我想基本上忽略該構造函數(或傳遞它爲空)並重寫一個方法來增加計數器。該類不是最終的,也不是構造函數或方法。

由於簽名而直接導致安全異常的子類化。我查看了各種示例,並使用了本地版本的ByteBuddyTutorialExamplesTest,但無濟於事。

目前,我正在考慮放棄,而是攔截呼叫網站,該類。也就是說,擁有假目標版本(PartitionContext)會很方便。

我是否缺少任何技巧,或者我正在努力完成的事情是不可能的?

回答

2

Byte Buddy提供了一個ClassLoadingStrategy,它將一個類注入到一個類加載器中,並可以使用給定的ProtectionDomain。但是,域名需要明確提供。

要應用這種策略,load方法被重載用第二個參數:

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