edu.umd.cs.findbugs.visitclass
Class PreorderVisitor

java.lang.Object
  extended by edu.umd.cs.findbugs.visitclass.BetterVisitor
      extended by edu.umd.cs.findbugs.visitclass.PreorderVisitor
All Implemented Interfaces:
Constants2, org.apache.bcel.classfile.Visitor, org.apache.bcel.Constants
Direct Known Subclasses:
AnnotationVisitor, DismantleBytecode, DontCatchIllegalMonitorStateException, DroppedException, FindBugsSummaryStats, Naming, SerializableIdiom

public abstract class PreorderVisitor
extends BetterVisitor
implements Constants2

Interface to make the use of a visitor pattern programming style possible. I.e. a class that implements this interface can traverse the contents of a Java class just by calling the `accept' method which all classes have.

Implemented by wish of Boris Bokowski.

If don't like it, blame him. If you do like it thank me 8-)

Version:
970819
Author:
M. Dahm

Field Summary
private  java.lang.String className
           
private  org.apache.bcel.classfile.ConstantPool constantPool
           
private  java.lang.String dottedClassName
           
private  java.lang.String dottedFieldSig
           
private  java.lang.String dottedMethodSig
           
private  java.lang.String dottedSuperclassName
           
private  boolean fieldIsStatic
           
private  java.lang.String fieldName
           
private  java.lang.String fieldSig
           
private  java.lang.String fullyQualifiedFieldName
           
private  java.lang.String fullyQualifiedMethodName
           
private  org.apache.bcel.classfile.Method method
           
private  java.lang.String methodName
           
private  java.lang.String methodSig
           
private  java.lang.String packageName
           
private  java.lang.String sourceFile
           
private  java.lang.String superclassName
           
private  org.apache.bcel.classfile.JavaClass thisClass
           
private  boolean visitingField
           
private  boolean visitingMethod
           
 
Fields inherited from interface org.apache.bcel.Constants
AALOAD, AASTORE, ACC_ABSTRACT, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_TRANSIENT, ACC_VOLATILE, ACCESS_NAMES, ACONST_NULL, ALOAD, ALOAD_0, ALOAD_1, ALOAD_2, ALOAD_3, ANEWARRAY, ANEWARRAY_QUICK, ARETURN, ARRAYLENGTH, ASTORE, ASTORE_0, ASTORE_1, ASTORE_2, ASTORE_3, ATHROW, ATTR_CODE, ATTR_CONSTANT_VALUE, ATTR_DEPRECATED, ATTR_EXCEPTIONS, ATTR_INNER_CLASSES, ATTR_LINE_NUMBER_TABLE, ATTR_LOCAL_VARIABLE_TABLE, ATTR_PMG, ATTR_SIGNATURE, ATTR_SOURCE_FILE, ATTR_STACK_MAP, ATTR_SYNTHETIC, ATTR_UNKNOWN, ATTRIBUTE_NAMES, BALOAD, BASTORE, BIPUSH, BREAKPOINT, CALOAD, CASTORE, CHECKCAST, CHECKCAST_QUICK, CLASS_TYPE_NAMES, CONSTANT_Class, CONSTANT_Double, CONSTANT_Fieldref, CONSTANT_Float, CONSTANT_Integer, CONSTANT_InterfaceMethodref, CONSTANT_Long, CONSTANT_Methodref, CONSTANT_NameAndType, CONSTANT_NAMES, CONSTANT_String, CONSTANT_Utf8, CONSTRUCTOR_NAME, CONSUME_STACK, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DLOAD_0, DLOAD_1, DLOAD_2, DLOAD_3, DMUL, DNEG, DREM, DRETURN, DSTORE, DSTORE_0, DSTORE_1, DSTORE_2, DSTORE_3, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAD_0, FLOAD_1, FLOAD_2, FLOAD_3, FMUL, FNEG, FREM, FRETURN, FSTORE, FSTORE_0, FSTORE_1, FSTORE_2, FSTORE_3, FSUB, GETFIELD, GETFIELD_QUICK, GETFIELD_QUICK_W, GETFIELD2_QUICK, GETSTATIC, GETSTATIC_QUICK, GETSTATIC2_QUICK, GOTO, GOTO_W, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IINC, ILLEGAL_OPCODE, ILLEGAL_TYPE, ILOAD, ILOAD_0, ILOAD_1, ILOAD_2, ILOAD_3, IMPDEP1, IMPDEP2, IMUL, INEG, INSTANCEOF, INSTANCEOF_QUICK, INT2BYTE, INT2CHAR, INT2SHORT, INTERFACES_IMPLEMENTED_BY_ARRAYS, INVOKEINTERFACE, INVOKEINTERFACE_QUICK, INVOKENONVIRTUAL, INVOKENONVIRTUAL_QUICK, INVOKESPECIAL, INVOKESTATIC, INVOKESTATIC_QUICK, INVOKESUPER_QUICK, INVOKEVIRTUAL, INVOKEVIRTUAL_QUICK, INVOKEVIRTUAL_QUICK_W, INVOKEVIRTUALOBJECT_QUICK, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISTORE_0, ISTORE_1, ISTORE_2, ISTORE_3, ISUB, ITEM_Bogus, ITEM_Double, ITEM_Float, ITEM_InitObject, ITEM_Integer, ITEM_Long, ITEM_NAMES, ITEM_NewObject, ITEM_Null, ITEM_Object, IUSHR, IXOR, JSR, JSR_W, KNOWN_ATTRIBUTES, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDC_QUICK, LDC_W, LDC_W_QUICK, LDC2_W, LDC2_W_QUICK, LDIV, LLOAD, LLOAD_0, LLOAD_1, LLOAD_2, LLOAD_3, LMUL, LNEG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSTORE_0, LSTORE_1, LSTORE_2, LSTORE_3, LSUB, LUSHR, LXOR, MAJOR, MAJOR_1_1, MAJOR_1_2, MAJOR_1_3, MAX_ACC_FLAG, MAX_BYTE, MAX_CODE_SIZE, MAX_CP_ENTRIES, MAX_SHORT, MINOR, MINOR_1_1, MINOR_1_2, MINOR_1_3, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, MULTIANEWARRAY_QUICK, NEW, NEW_QUICK, NEWARRAY, NO_OF_OPERANDS, NOP, OPCODE_NAMES, POP, POP2, PRODUCE_STACK, PUSH, PUTFIELD, PUTFIELD_QUICK, PUTFIELD_QUICK_W, PUTFIELD2_QUICK, PUTSTATIC, PUTSTATIC_QUICK, PUTSTATIC2_QUICK, RESERVED, RET, RETURN, SALOAD, SASTORE, SHORT_TYPE_NAMES, SIPUSH, STATIC_INITIALIZER_NAME, SWAP, SWITCH, T_ADDRESS, T_ARRAY, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_OBJECT, T_REFERENCE, T_SHORT, T_UNKNOWN, T_VOID, TABLESWITCH, TYPE_NAMES, TYPE_OF_OPERANDS, UNDEFINED, UNPREDICTABLE, WIDE
 
Constructor Summary
PreorderVisitor()
           
 
Method Summary
protected  int asUnsignedByte(byte b)
           
private  void doVisitField(org.apache.bcel.classfile.Field field)
           
private  void doVisitMethod(org.apache.bcel.classfile.Method method)
           
 java.lang.String getClassName()
          Get the slash-formatted class name for the current or most recently visited class
 org.apache.bcel.classfile.ConstantPool getConstantPool()
          Get the constant pool for the current or most recently visited class
 java.lang.String getDottedClassName()
          Get the dotted class name for the current or most recently visited class
 java.lang.String getDottedFieldSig()
          If currently visiting a field, get the field's dot-formatted signature
 java.lang.String getDottedMethodSig()
          If currently visiting a method, get the method's dotted method signature
 java.lang.String getDottedSuperclassName()
          Get the dotted superclass name for the current or most recently visited class
 boolean getFieldIsStatic()
          If currently visiting a field, return whether or not the field is static
 java.lang.String getFieldName()
          If currently visiting a field, get the field's name
 java.lang.String getFieldSig()
          If currently visiting a field, get the field's slash-formatted signature
 java.lang.String getFullyQualifiedFieldName()
          If currently visiting a field, get the field's fully qualified name
 java.lang.String getFullyQualifiedMethodName()
          If currently visiting a method, get the method's fully qualified name
 org.apache.bcel.classfile.Method getMethod()
          If currently visiting a method, get the method's Method object
 java.lang.String getMethodName()
          If currently visiting a method, get the method's name
 java.lang.String getMethodSig()
          If currently visiting a method, get the method's slash-formatted signature
 java.lang.String getPackageName()
          Get the (slash-formatted?) package name for the current or most recently visited class
 java.lang.String getSourceFile()
          Get the source file name for the current or most recently visited class
protected  java.lang.String getStringFromIndex(int i)
           
 java.lang.String getSuperclassName()
          Get the slash-formatted superclass name for the current or most recently visited class
 org.apache.bcel.classfile.JavaClass getThisClass()
          Get the JavaClass object for the current or most recently visited class
 void visitAfter(org.apache.bcel.classfile.JavaClass obj)
           
 void visitCode(org.apache.bcel.classfile.Code obj)
           
 void visitConstantPool(org.apache.bcel.classfile.ConstantPool obj)
           
 boolean visitingField()
          is the visitor currently visiting a field?
 boolean visitingMethod()
          is the visitor currently visiting a method?
 void visitInnerClasses(org.apache.bcel.classfile.InnerClasses obj)
           
 void visitJavaClass(org.apache.bcel.classfile.JavaClass obj)
           
 void visitLineNumberTable(org.apache.bcel.classfile.LineNumberTable obj)
           
 void visitLocalVariableTable(org.apache.bcel.classfile.LocalVariableTable obj)
           
 
Methods inherited from class edu.umd.cs.findbugs.visitclass.BetterVisitor
report, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visitCodeException, visitConstantClass, visitConstantDouble, visitConstantFieldref, visitConstantFloat, visitConstantInteger, visitConstantInterfaceMethodref, visitConstantLong, visitConstantMethodref, visitConstantNameAndType, visitConstantString, visitConstantUtf8, visitConstantValue, visitDeprecated, visitExceptionTable, visitField, visitInnerClass, visitLineNumber, visitLocalVariable, visitMethod, visitSignature, visitSourceFile, visitStackMap, visitStackMapEntry, visitSynthetic, visitUnknown
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

constantPool

private org.apache.bcel.classfile.ConstantPool constantPool

thisClass

private org.apache.bcel.classfile.JavaClass thisClass

className

private java.lang.String className

dottedClassName

private java.lang.String dottedClassName

packageName

private java.lang.String packageName

sourceFile

private java.lang.String sourceFile

superclassName

private java.lang.String superclassName

dottedSuperclassName

private java.lang.String dottedSuperclassName

visitingMethod

private boolean visitingMethod

methodSig

private java.lang.String methodSig

dottedMethodSig

private java.lang.String dottedMethodSig

method

private org.apache.bcel.classfile.Method method

methodName

private java.lang.String methodName

fullyQualifiedMethodName

private java.lang.String fullyQualifiedMethodName

visitingField

private boolean visitingField

fullyQualifiedFieldName

private java.lang.String fullyQualifiedFieldName

fieldName

private java.lang.String fieldName

fieldSig

private java.lang.String fieldSig

dottedFieldSig

private java.lang.String dottedFieldSig

fieldIsStatic

private boolean fieldIsStatic
Constructor Detail

PreorderVisitor

public PreorderVisitor()
Method Detail

getStringFromIndex

protected java.lang.String getStringFromIndex(int i)

asUnsignedByte

protected int asUnsignedByte(byte b)

visitCode

public void visitCode(org.apache.bcel.classfile.Code obj)
Specified by:
visitCode in interface org.apache.bcel.classfile.Visitor
Overrides:
visitCode in class BetterVisitor

visitConstantPool

public void visitConstantPool(org.apache.bcel.classfile.ConstantPool obj)
Specified by:
visitConstantPool in interface org.apache.bcel.classfile.Visitor
Overrides:
visitConstantPool in class BetterVisitor

doVisitField

private void doVisitField(org.apache.bcel.classfile.Field field)

doVisitMethod

private void doVisitMethod(org.apache.bcel.classfile.Method method)

visitInnerClasses

public void visitInnerClasses(org.apache.bcel.classfile.InnerClasses obj)
Specified by:
visitInnerClasses in interface org.apache.bcel.classfile.Visitor
Overrides:
visitInnerClasses in class BetterVisitor

visitAfter

public void visitAfter(org.apache.bcel.classfile.JavaClass obj)

visitJavaClass

public void visitJavaClass(org.apache.bcel.classfile.JavaClass obj)
Specified by:
visitJavaClass in interface org.apache.bcel.classfile.Visitor
Overrides:
visitJavaClass in class BetterVisitor

visitLineNumberTable

public void visitLineNumberTable(org.apache.bcel.classfile.LineNumberTable obj)
Specified by:
visitLineNumberTable in interface org.apache.bcel.classfile.Visitor
Overrides:
visitLineNumberTable in class BetterVisitor

visitLocalVariableTable

public void visitLocalVariableTable(org.apache.bcel.classfile.LocalVariableTable obj)
Specified by:
visitLocalVariableTable in interface org.apache.bcel.classfile.Visitor
Overrides:
visitLocalVariableTable in class BetterVisitor

getConstantPool

public org.apache.bcel.classfile.ConstantPool getConstantPool()
Get the constant pool for the current or most recently visited class


getClassName

public java.lang.String getClassName()
Get the slash-formatted class name for the current or most recently visited class


getDottedClassName

public java.lang.String getDottedClassName()
Get the dotted class name for the current or most recently visited class


getPackageName

public java.lang.String getPackageName()
Get the (slash-formatted?) package name for the current or most recently visited class


getSourceFile

public java.lang.String getSourceFile()
Get the source file name for the current or most recently visited class


getSuperclassName

public java.lang.String getSuperclassName()
Get the slash-formatted superclass name for the current or most recently visited class


getDottedSuperclassName

public java.lang.String getDottedSuperclassName()
Get the dotted superclass name for the current or most recently visited class


getThisClass

public org.apache.bcel.classfile.JavaClass getThisClass()
Get the JavaClass object for the current or most recently visited class


getFullyQualifiedMethodName

public java.lang.String getFullyQualifiedMethodName()
If currently visiting a method, get the method's fully qualified name


visitingMethod

public boolean visitingMethod()
is the visitor currently visiting a method?


visitingField

public boolean visitingField()
is the visitor currently visiting a field?


getMethod

public org.apache.bcel.classfile.Method getMethod()
If currently visiting a method, get the method's Method object


getMethodName

public java.lang.String getMethodName()
If currently visiting a method, get the method's name


getMethodSig

public java.lang.String getMethodSig()
If currently visiting a method, get the method's slash-formatted signature


getDottedMethodSig

public java.lang.String getDottedMethodSig()
If currently visiting a method, get the method's dotted method signature


getFieldName

public java.lang.String getFieldName()
If currently visiting a field, get the field's name


getFieldSig

public java.lang.String getFieldSig()
If currently visiting a field, get the field's slash-formatted signature


getFieldIsStatic

public boolean getFieldIsStatic()
If currently visiting a field, return whether or not the field is static


getFullyQualifiedFieldName

public java.lang.String getFullyQualifiedFieldName()
If currently visiting a field, get the field's fully qualified name


getDottedFieldSig

public java.lang.String getDottedFieldSig()
If currently visiting a field, get the field's dot-formatted signature