org.aspectj.apache.bcel.classfile
Class Utility

java.lang.Object
  extended by org.aspectj.apache.bcel.classfile.Utility

public abstract class Utility
extends java.lang.Object

Utility functions that do not really belong to any class in particular.


Nested Class Summary
static class Utility.ResultHolder
           
 
Constructor Summary
Utility()
           
 
Method Summary
static java.lang.String accessToString(int access_flags)
          Convert bit field of flags into string such as 'static final'.
static java.lang.String accessToString(int access_flags, boolean for_class)
          Convert bit field of flags into string such as 'static final'.
static java.lang.String classOrInterface(int access_flags)
           
static java.lang.String codeToString(byte[] code, ConstantPool constant_pool, int index, int length)
          Disassemble a stream of byte codes and return the string representation.
static java.lang.String codeToString(byte[] code, ConstantPool constant_pool, int index, int length, boolean verbose)
          Disassemble a byte array of JVM byte codes starting from code line 'index' and return the disassembled string representation.
static java.lang.String codeToString(ByteSequence bytes, ConstantPool constant_pool)
           
static java.lang.String codeToString(ByteSequence bytes, ConstantPool constant_pool, boolean verbose)
          Disassemble a stream of byte codes and return the string representation.
static java.lang.String compactClassName(java.lang.String str)
          Shorten long class names, java/lang/String becomes String.
static java.lang.String compactClassName(java.lang.String str, boolean chopit)
          Shorten long class names, java/lang/String becomes java.lang.String, e.g..
static java.lang.String compactClassName(java.lang.String str, java.lang.String prefix, boolean chopit)
          Shorten long class name str, i.e., chop off the prefix, if the class name starts with this string and the flag chopit is true.
static java.lang.String convertString(java.lang.String label)
          Escape all occurences of newline chars '\n', quotes \", etc.
static java.lang.String fillup(java.lang.String str, int length, boolean left_justify, char fill)
          Fillup char with up to length characters with char `fill' and justify it left or right.
static java.lang.String format(int i, int length, boolean left_justify, char fill)
          Return a string for an integer justified left or right and filled up with 'fill' characters if necessary.
static java.util.Collection<RuntimeAnnos> getAnnotationAttributes(ConstantPool cp, java.util.List<AnnotationGen> annotations)
          Converts a list of AnnotationGen objects into a set of attributes that can be attached to the class file.
static Attribute[] getParameterAnnotationAttributes(ConstantPool cp, java.util.List<AnnotationGen>[] vec)
          Annotations against a class are stored in one of four attribute kinds: - RuntimeVisibleParameterAnnotations - RuntimeInvisibleParameterAnnotations
static java.lang.String methodSignatureToString(java.lang.String signature, java.lang.String name, java.lang.String access)
           
static java.lang.String methodSignatureToString(java.lang.String signature, java.lang.String name, java.lang.String access, boolean chopit)
           
static java.lang.String methodSignatureToString(java.lang.String signature, java.lang.String name, java.lang.String access, boolean chopit, LocalVariableTable vars)
          This method converts such a string into a Java type declaration like 'void main(String[])' and throws a 'ClassFormatException' when the parsed type is invalid.
static java.lang.String replace(java.lang.String str, java.lang.String old, java.lang.String new_)
          Replace all occurences of old in str with new.
static java.lang.String signatureToString(java.lang.String signature)
          Converts signature to string with all class names compacted.
static java.lang.String signatureToString(java.lang.String signature, boolean chopit)
           
static Utility.ResultHolder signatureToStringInternal(java.lang.String signature, boolean chopit)
          This method converts this string into a Java type declaration such as 'String[]' and throws a `ClassFormatException' when the parsed type is invalid.
static java.lang.String toHexString(byte[] bytes)
          Convert bytes into hexidecimal string
static java.lang.String toMethodSignature(Type returnType, Type[] argTypes)
          Convert type to Java method signature, e.g.
static byte typeOfMethodSignature(java.lang.String signature)
          Return type of method signature as a byte value as defined in Constants
static byte typeOfSignature(char c)
           
static byte typeOfSignature(java.lang.String signature)
          Return type of signature as a byte value as defined in Constants
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Utility

public Utility()
Method Detail

accessToString

public static final java.lang.String accessToString(int access_flags)
Convert bit field of flags into string such as 'static final'.

Parameters:
access_flags - Access flags
Returns:
String representation of flags

accessToString

public static final java.lang.String accessToString(int access_flags,
                                                    boolean for_class)
Convert bit field of flags into string such as 'static final'. Special case: Classes compiled with new compilers and with the 'ACC_SUPER' flag would be said to be "synchronized". This is because SUN used the same value for the flags 'ACC_SUPER' and 'ACC_SYNCHRONIZED'.

Parameters:
access_flags - Access flags
for_class - access flags are for class qualifiers ?
Returns:
String representation of flags

classOrInterface

public static final java.lang.String classOrInterface(int access_flags)
Returns:
"class" or "interface", depending on the ACC_INTERFACE flag

codeToString

public static final java.lang.String codeToString(byte[] code,
                                                  ConstantPool constant_pool,
                                                  int index,
                                                  int length,
                                                  boolean verbose)
Disassemble a byte array of JVM byte codes starting from code line 'index' and return the disassembled string representation. Decode only 'num' opcodes (including their operands), use -1 if you want to decompile everything.

Parameters:
code - byte code array
constant_pool - Array of constants
index - offset in `code' array (number of opcodes, not bytes!)
length - number of opcodes to decompile, -1 for all
verbose - be verbose, e.g. print constant pool index
Returns:
String representation of byte codes

codeToString

public static final java.lang.String codeToString(byte[] code,
                                                  ConstantPool constant_pool,
                                                  int index,
                                                  int length)
Disassemble a stream of byte codes and return the string representation.


codeToString

public static final java.lang.String codeToString(ByteSequence bytes,
                                                  ConstantPool constant_pool)
                                           throws java.io.IOException
Throws:
java.io.IOException

compactClassName

public static final java.lang.String compactClassName(java.lang.String str)
Shorten long class names, java/lang/String becomes String.

Parameters:
str - The long class name
Returns:
Compacted class name

compactClassName

public static final java.lang.String compactClassName(java.lang.String str,
                                                      java.lang.String prefix,
                                                      boolean chopit)
Shorten long class name str, i.e., chop off the prefix, if the class name starts with this string and the flag chopit is true. Slashes / are converted to dots ..

Parameters:
str - The long class name
prefix - The prefix the get rid off
chopit - Flag that determines whether chopping is executed or not
Returns:
Compacted class name

compactClassName

public static final java.lang.String compactClassName(java.lang.String str,
                                                      boolean chopit)
Shorten long class names, java/lang/String becomes java.lang.String, e.g.. If chopit is true the prefix java.lang is also removed.

Parameters:
str - The long class name
chopit - Flag that determines whether chopping is executed or not
Returns:
Compacted class name

methodSignatureToString

public static final java.lang.String methodSignatureToString(java.lang.String signature,
                                                             java.lang.String name,
                                                             java.lang.String access)

methodSignatureToString

public static final java.lang.String methodSignatureToString(java.lang.String signature,
                                                             java.lang.String name,
                                                             java.lang.String access,
                                                             boolean chopit)

methodSignatureToString

public static final java.lang.String methodSignatureToString(java.lang.String signature,
                                                             java.lang.String name,
                                                             java.lang.String access,
                                                             boolean chopit,
                                                             LocalVariableTable vars)
                                                      throws ClassFormatException
This method converts such a string into a Java type declaration like 'void main(String[])' and throws a 'ClassFormatException' when the parsed type is invalid.

Throws:
ClassFormatException

replace

public static final java.lang.String replace(java.lang.String str,
                                             java.lang.String old,
                                             java.lang.String new_)
Replace all occurences of old in str with new.

Parameters:
str - String to permute
old - String to be replaced
new - Replacement string
Returns:
new String object

signatureToString

public static final java.lang.String signatureToString(java.lang.String signature)
Converts signature to string with all class names compacted.

Parameters:
signature - to convert
Returns:
Human readable signature

signatureToString

public static final java.lang.String signatureToString(java.lang.String signature,
                                                       boolean chopit)

signatureToStringInternal

public static final Utility.ResultHolder signatureToStringInternal(java.lang.String signature,
                                                                   boolean chopit)
This method converts this string into a Java type declaration such as 'String[]' and throws a `ClassFormatException' when the parsed type is invalid.


typeOfMethodSignature

public static final byte typeOfMethodSignature(java.lang.String signature)
                                        throws ClassFormatException
Return type of method signature as a byte value as defined in Constants

Parameters:
signature - in format described above
Returns:
type of method signature
Throws:
ClassFormatException
See Also:
Constants

toHexString

public static final java.lang.String toHexString(byte[] bytes)
Convert bytes into hexidecimal string

Returns:
bytes as hexidecimal string, e.g. 00 FA 12 ...

format

public static final java.lang.String format(int i,
                                            int length,
                                            boolean left_justify,
                                            char fill)
Return a string for an integer justified left or right and filled up with 'fill' characters if necessary.

Parameters:
i - integer to format
length - length of desired string
left_justify - format left or right
fill - fill character
Returns:
formatted int

fillup

public static final java.lang.String fillup(java.lang.String str,
                                            int length,
                                            boolean left_justify,
                                            char fill)
Fillup char with up to length characters with char `fill' and justify it left or right.

Parameters:
str - string to format
length - length of desired string
left_justify - format left or right
fill - fill character
Returns:
formatted string

convertString

public static final java.lang.String convertString(java.lang.String label)
Escape all occurences of newline chars '\n', quotes \", etc.


getAnnotationAttributes

public static java.util.Collection<RuntimeAnnos> getAnnotationAttributes(ConstantPool cp,
                                                                         java.util.List<AnnotationGen> annotations)
Converts a list of AnnotationGen objects into a set of attributes that can be attached to the class file.

Parameters:
cp - The constant pool gen where we can create the necessary name refs
annotations - A list of AnnotationGen objects

getParameterAnnotationAttributes

public static Attribute[] getParameterAnnotationAttributes(ConstantPool cp,
                                                           java.util.List<AnnotationGen>[] vec)
Annotations against a class are stored in one of four attribute kinds: - RuntimeVisibleParameterAnnotations - RuntimeInvisibleParameterAnnotations


typeOfSignature

public static final byte typeOfSignature(java.lang.String signature)
                                  throws ClassFormatException
Return type of signature as a byte value as defined in Constants

Parameters:
signature - in format described above
Returns:
type of signature
Throws:
ClassFormatException
See Also:
Constants

typeOfSignature

public static final byte typeOfSignature(char c)
                                  throws ClassFormatException
Throws:
ClassFormatException

codeToString

public static final java.lang.String codeToString(ByteSequence bytes,
                                                  ConstantPool constant_pool,
                                                  boolean verbose)
                                           throws java.io.IOException
Disassemble a stream of byte codes and return the string representation.

Parameters:
bytes - stream of bytes
constant_pool - Array of constants
verbose - be verbose, e.g. print constant pool index
Returns:
String representation of byte code
Throws:
java.io.IOException

toMethodSignature

public static java.lang.String toMethodSignature(Type returnType,
                                                 Type[] argTypes)
Convert type to Java method signature, e.g. int[] f(java.lang.String x) becomes (Ljava/lang/String;)[I

Parameters:
returnType - what the method returns
argTypes - what are the argument types
Returns:
method signature for given type(s).