169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigalpackage sample.reflect;
269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigalimport javassist.tools.reflect.*;
469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigalpublic class VerboseMetaobj extends Metaobject {
669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    public VerboseMetaobj(Object self, Object[] args) {
769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        super(self, args);
869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        System.out.println("** constructed: " + self.getClass().getName());
969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    }
1069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
1169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    public Object trapFieldRead(String name) {
1269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        System.out.println("** field read: " + name);
1369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        return super.trapFieldRead(name);
1469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    }
1569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
1669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    public void trapFieldWrite(String name, Object value) {
1769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        System.out.println("** field write: " + name);
1869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        super.trapFieldWrite(name, value);
1969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    }
2069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
2169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    public Object trapMethodcall(int identifier, Object[] args)
2269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal            throws Throwable {
2369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        System.out.println("** trap: " + getMethodName(identifier) + "() in "
2469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal                + getClassMetaobject().getName());
2569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        return super.trapMethodcall(identifier, args);
2669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    }
2769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal}
28