40 lines
1.2 KiB
Java
40 lines
1.2 KiB
Java
import java.lang.instrument.*;
|
|
import java.io.*;
|
|
import java.security.*;
|
|
import org.apache.bcel.classfile.*;
|
|
import org.apache.bcel.generic.*;
|
|
|
|
/**
|
|
* @version 1.00 2004-08-17
|
|
* @author Cay Horstmann
|
|
*/
|
|
public class EntryLoggingAgent
|
|
{
|
|
public static void premain(final String arg, Instrumentation instr)
|
|
{
|
|
instr.addTransformer(new ClassFileTransformer()
|
|
{
|
|
public byte[] transform(ClassLoader loader, String className, Class<?> cl,
|
|
ProtectionDomain pd, byte[] data)
|
|
{
|
|
if (!className.equals(arg)) return null;
|
|
try
|
|
{
|
|
ClassParser parser = new ClassParser(new ByteArrayInputStream(data), className
|
|
+ ".java");
|
|
JavaClass jc = parser.parse();
|
|
ClassGen cg = new ClassGen(jc);
|
|
EntryLogger el = new EntryLogger(cg);
|
|
el.convert();
|
|
return cg.getJavaClass().getBytes();
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
e.printStackTrace();
|
|
return null;
|
|
}
|
|
}
|
|
});
|
|
}
|
|
}
|