2017-02-12 4 views
2

Я пытаюсь сделать параллельный тест для com.microsoft.azure.eventprocessorhost.PartitionContext, который имеет многопараметрический конструктор, защищенный пакетом, в подписанной банке.Стратегия перехвата подписанных классов

Я хотел бы проигнорировать этот конструктор (или передать его nulls) и переопределить один метод для увеличения счетчика. Класс не является окончательным, и ни один из них не является конструктором или рассматриваемым методом.

Подкласс, который непосредственно приводит к исключению безопасности из-за подписания. Я посмотрел на различные примеры и играл с локальной версией ByteBuddyTutorialExamplesTest, но не помог.

На данный момент я рассматриваю возможность отказа от перехвата сайта вызова этого класса. Тем не менее, было бы удобно иметь поддельную версию цели (PartitionContext).

Не хватает ли каких-либо трюков, или чего я пытаюсь сделать не возможным?

ответ

2

Byte Buddy предлагает ClassLoadingStrategy, который вводит класс в загрузчик классов и который может использовать заданный ProtectionDomain. Однако домен должен быть предоставлен явно.

Чтобы применить эту стратегию, метод load перегружен со вторым аргументом:

builder.make().load(sealedClass.getClassLoader(), 
    ClassLoadingStrategy.Default.INJECTION.with(sealedClass.getProtectionDomain())) 
Смежные вопросы