Files
corejava/corejava第10版/v2ch08/bytecodeAnnotations/EntryLoggingAgent.java
T
2019-05-22 19:31:49 +08:00

26 lines
764 B
Java

package bytecodeAnnotations;
import java.lang.instrument.*;
import org.objectweb.asm.*;
/**
* @version 1.10 2016-05-10
* @author Cay Horstmann
*/
public class EntryLoggingAgent
{
public static void premain(final String arg, Instrumentation instr)
{
instr.addTransformer((loader, className, cl, pd, data) ->
{
if (!className.replace("/", ".").equals(arg)) return null;
ClassReader reader = new ClassReader(data);
ClassWriter writer = new ClassWriter(
ClassWriter.COMPUTE_MAXS | ClassWriter.COMPUTE_FRAMES);
EntryLogger el = new EntryLogger(writer, className);
reader.accept(el, ClassReader.EXPAND_FRAMES);
return writer.toByteArray();
});
}
}