blob: 89c8bd7a98ba8a7bd9f864a1253e3da95b984cd3 [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 AnnotatedMemberContext(mStatus,
(JavaClass) mDescendingVisitor.predecessor(), member,
signatureFormatString);
System.out.println(context.getMemberDescriptor());
}
}