blob: 6677a3f3ab257e166c86304cf360250311208078 [file] [log] [blame]
package com.android.class2greylist;
import org.apache.bcel.classfile.DescendingVisitor;
import org.apache.bcel.classfile.EmptyVisitor;
import org.apache.bcel.classfile.Field;
import org.apache.bcel.classfile.FieldOrMethod;
import org.apache.bcel.classfile.JavaClass;
import org.apache.bcel.classfile.Method;
/**
* A class file visitor that simply prints to stdout the signature of every member within the class.
*/
public class MemberDumpingVisitor extends EmptyVisitor {
private final Status mStatus;
private final DescendingVisitor mDescendingVisitor;
/**
* Creates a visitor for a class.
*
* @param clazz Class to visit
*/
public MemberDumpingVisitor(JavaClass clazz, Status status) {
mStatus = status;
mDescendingVisitor = new DescendingVisitor(clazz, this);
}
public void visit() {
mDescendingVisitor.visit();
}
@Override
public void visitMethod(Method method) {
visitMember(method, "L%s;->%s%s");
}
@Override
public void visitField(Field field) {
visitMember(field, "L%s;->%s:%s");
}
private void visitMember(FieldOrMethod member, String signatureFormatString) {
AnnotationContext context = new AnnotationContext(mStatus, member,
(JavaClass) mDescendingVisitor.predecessor(), signatureFormatString);
System.out.println(context.getMemberDescriptor());
}
}