Есть ли способ использовать байтовый компаньон для реализации преобразования ClassFileTransformer #?
На данный момент моя реализация использует javassist, но я хочу заменить его на bute buddy, поскольку он имеет улучшенную поддержку обобщений.
Пока моя реализация выглядит так:
public byte[] transform(ClassLoader loader, String className, Class<?> classBeingRedefined,
ProtectionDomain protectionDomain, byte[] classfileBuffer)
{
if (className.startsWith("my.package."))
{
try {
final CtClass ctClass = classPool.makeClass(new ByteArrayInputStream(classfileBuffer));
/* class manipulation */
return ctClass.toBytecode();
// remove class from class pool if it hasn't been modified
ctClass.detach();
} catch(final Exception ex) {
logger.error("failed to analyse/transform class {}", className, ex);
}
}
return classfileBuffer;
}
Возможно ли что-то подобное с приятелем байтов? Существуют ли способы подачи байта собеседнику с помощью байтового кода, указанного в параметре classfileBuffer?
Реализация ClassFileTransformer сконфигурирована в Weaver Spring Load Time Weaver. Так что у меня уже есть «инфраструктура». Поэтому я бы не стал устанавливать другой агент для байтового партнера для решения этой проблемы.