Package aQute.libg.classdump
Class ClassDumper
- java.lang.Object
-
- aQute.libg.classdump.ClassDumper
-
public class ClassDumper extends java.lang.Object
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static classClassDumper.Assoc
-
Field Summary
Fields Modifier and Type Field Description (package private) static intACC_ABSTRACT(package private) static intACC_FINAL(package private) static intACC_INTERFACE(package private) static intACC_PUBLICACC_PUBLIC 0x0001 Declared public; may be accessed from outside its package.(package private) static intACC_SUPER(package private) static java.lang.StringHEX_COLUMN(package private) java.io.InputStreamin(package private) static java.lang.StringNUM_COLUMN(package private) java.lang.Stringpath(package private) java.lang.Object[]pool(package private) java.io.PrintStreamps(package private) static java.lang.StringSTR_COLUMN
-
Constructor Summary
Constructors Constructor Description ClassDumper(java.lang.String path)ClassDumper(java.lang.String path, java.io.InputStream in)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private voiddoAnnotation(java.io.DataInputStream in, java.lang.String indent)private voiddoAnnotations(java.io.DataInputStream in, java.lang.String indent)private voiddoAttribute(java.io.DataInputStream in, java.lang.String indent)Process a single attribute, if not recognized, skip it.private voiddoAttributes(java.io.DataInputStream in, java.lang.String indent)Called for each attribute in the class, field, or method.private voiddoCode(java.io.DataInputStream in, java.lang.String indent)Code_attribute { u2 attribute_name_index; u4 attribute_length; u2 max_stack; u2 max_locals; u4 code_length; u1 code[code_length]; u2 exception_table_length; { u2 start_pc; u2 end_pc; u2 handler_pc; u2 catch_type; } exception_table[exception_table_length]; u2 attributes_count; attribute_info attributes[attributes_count]; }private voiddoElementValue(java.io.DataInputStream in, java.lang.String indent)(package private) voiddoEnclosingMethod(java.io.DataInputStream in, java.lang.String indent)EnclosingMethod_attribute { u2 attribute_name_index; u4 attribute_length; u2 class_index u2 method_index; }private voiddoExceptions(java.io.DataInputStream in, java.lang.String indent)Exceptions_attribute { u2 attribute_name_index; u4 attribute_length; u2 number_of_exceptions; u2 exception_index_table[number_of_exceptions]; }(package private) voiddoInnerClasses(java.io.DataInputStream in, java.lang.String indent)InnerClasses_attribute { u2 attribute_name_index; u4 attribute_length; u2 number_of_classes; { u2 inner_class_info_index; u2 outer_class_info_index; u2 inner_name_index; u2 inner_class_access_flags; } classes[number_of_classes]; }(package private) voiddoLineNumberTable(java.io.DataInputStream in, java.lang.String indent)LineNumberTable_attribute { u2 attribute_name_index; u4 attribute_length; u2 line_number_table_length; { u2 start_pc; u2 line_number; } line_number_table[line_number_table_length]; }(package private) voiddoLocalVariableTable(java.io.DataInputStream in, java.lang.String indent)LocalVariableTable_attribute { u2 attribute_name_index; u4 attribute_length; u2 local_variable_table_length; { u2 start_pc; u2 length; u2 name_index; u2 descriptor_index; u2 index; } local_variable_table[local_variable_table_length]; }(package private) voiddoSignature(java.io.DataInputStream in, java.lang.String indent)Signature_attribute { u2 attribute_name_index; u4 attribute_length; u2 signature_index; }private voiddoSourceFile(java.io.DataInputStream in, java.lang.String indent)voiddump(java.io.PrintStream ps)static voidmain(java.lang.String[] args)(package private) voidparseClassFile(java.io.DataInputStream in)(package private) voidprintAccess(int mod)(package private) voidprintClassAccess(int mod)protected voidprintHex(byte[] code)We must find Class.forName references ...
-
-
-
Field Detail
-
ACC_PUBLIC
static final int ACC_PUBLIC
ACC_PUBLIC 0x0001 Declared public; may be accessed from outside its package. ACC_FINAL 0x0010 Declared final; no subclasses allowed. ACC_SUPER 0x0020 Treat superclass methods specially when invoked by the invokespecial instruction. ACC_INTERFACE 0x0200 Is an interface, not a class. ACC_ABSTRACT 0x0400 Declared abstract; may not be instantiated.
- See Also:
- Constant Field Values
-
ACC_FINAL
static final int ACC_FINAL
- See Also:
- Constant Field Values
-
ACC_SUPER
static final int ACC_SUPER
- See Also:
- Constant Field Values
-
ACC_INTERFACE
static final int ACC_INTERFACE
- See Also:
- Constant Field Values
-
ACC_ABSTRACT
static final int ACC_ABSTRACT
- See Also:
- Constant Field Values
-
path
final java.lang.String path
-
NUM_COLUMN
static final java.lang.String NUM_COLUMN
- See Also:
- Constant Field Values
-
HEX_COLUMN
static final java.lang.String HEX_COLUMN
- See Also:
- Constant Field Values
-
STR_COLUMN
static final java.lang.String STR_COLUMN
- See Also:
- Constant Field Values
-
ps
java.io.PrintStream ps
-
pool
java.lang.Object[] pool
-
in
java.io.InputStream in
-
-
Method Detail
-
dump
public void dump(java.io.PrintStream ps) throws java.lang.Exception- Throws:
java.lang.Exception
-
parseClassFile
void parseClassFile(java.io.DataInputStream in) throws java.io.IOException- Throws:
java.io.IOException
-
doAttributes
private void doAttributes(java.io.DataInputStream in, java.lang.String indent) throws java.io.IOExceptionCalled for each attribute in the class, field, or method.- Parameters:
in- The stream- Throws:
java.io.IOException
-
doAttribute
private void doAttribute(java.io.DataInputStream in, java.lang.String indent) throws java.io.IOExceptionProcess a single attribute, if not recognized, skip it.- Parameters:
in- the data stream- Throws:
java.io.IOException
-
doSignature
void doSignature(java.io.DataInputStream in, java.lang.String indent) throws java.io.IOExceptionSignature_attribute { u2 attribute_name_index; u4 attribute_length; u2 signature_index; }- Parameters:
in-indent-- Throws:
java.io.IOException
-
doEnclosingMethod
void doEnclosingMethod(java.io.DataInputStream in, java.lang.String indent) throws java.io.IOExceptionEnclosingMethod_attribute { u2 attribute_name_index; u4 attribute_length; u2 class_index u2 method_index; }- Throws:
java.io.IOException
-
doExceptions
private void doExceptions(java.io.DataInputStream in, java.lang.String indent) throws java.io.IOExceptionExceptions_attribute { u2 attribute_name_index; u4 attribute_length; u2 number_of_exceptions; u2 exception_index_table[number_of_exceptions]; }- Parameters:
in-indent-- Throws:
java.io.IOException
-
doCode
private void doCode(java.io.DataInputStream in, java.lang.String indent) throws java.io.IOExceptionCode_attribute { u2 attribute_name_index; u4 attribute_length; u2 max_stack; u2 max_locals; u4 code_length; u1 code[code_length]; u2 exception_table_length; { u2 start_pc; u2 end_pc; u2 handler_pc; u2 catch_type; } exception_table[exception_table_length]; u2 attributes_count; attribute_info attributes[attributes_count]; }- Throws:
java.io.IOException
-
printHex
protected void printHex(byte[] code)
We must find Class.forName references ...- Parameters:
code-
-
doSourceFile
private void doSourceFile(java.io.DataInputStream in, java.lang.String indent) throws java.io.IOException- Throws:
java.io.IOException
-
doAnnotations
private void doAnnotations(java.io.DataInputStream in, java.lang.String indent) throws java.io.IOException- Throws:
java.io.IOException
-
doAnnotation
private void doAnnotation(java.io.DataInputStream in, java.lang.String indent) throws java.io.IOException- Throws:
java.io.IOException
-
doElementValue
private void doElementValue(java.io.DataInputStream in, java.lang.String indent) throws java.io.IOException- Throws:
java.io.IOException
-
doLineNumberTable
void doLineNumberTable(java.io.DataInputStream in, java.lang.String indent) throws java.io.IOExceptionLineNumberTable_attribute { u2 attribute_name_index; u4 attribute_length; u2 line_number_table_length; { u2 start_pc; u2 line_number; } line_number_table[line_number_table_length]; }- Throws:
java.io.IOException
-
doLocalVariableTable
void doLocalVariableTable(java.io.DataInputStream in, java.lang.String indent) throws java.io.IOExceptionLocalVariableTable_attribute { u2 attribute_name_index; u4 attribute_length; u2 local_variable_table_length; { u2 start_pc; u2 length; u2 name_index; u2 descriptor_index; u2 index; } local_variable_table[local_variable_table_length]; }- Throws:
java.io.IOException
-
doInnerClasses
void doInnerClasses(java.io.DataInputStream in, java.lang.String indent) throws java.io.IOExceptionInnerClasses_attribute { u2 attribute_name_index; u4 attribute_length; u2 number_of_classes; { u2 inner_class_info_index; u2 outer_class_info_index; u2 inner_name_index; u2 inner_class_access_flags; } classes[number_of_classes]; }- Throws:
java.io.IOException
-
printClassAccess
void printClassAccess(int mod)
-
printAccess
void printAccess(int mod)
-
main
public static void main(java.lang.String[] args) throws java.lang.Exception- Throws:
java.lang.Exception
-
-