janino.net

org.codehaus.janino
Class Descriptor

java.lang.Object
  extended by org.codehaus.janino.Descriptor

public final class Descriptor
extends java.lang.Object

Helper class that defines useful methods for handling "field descriptors" (JVMS 4.3.2) and "method descriptors" (JVMS 4.3.3).

Typical descriptors are:


Field Summary
static java.lang.String BOOLEAN
          The field descriptor for the primitive type BOOLEAN.
static java.lang.String BYTE
          The field descriptor for the primitive type BYTE.
static java.lang.String CHAR
          The field descriptor for the primitive type CHAR.
static java.lang.String DOUBLE
          The field descriptor for the primitive type DOUBLE.
static java.lang.String FLOAT
          The field descriptor for the primitive type FLOAT.
static java.lang.String INT
          The field descriptor for the primitive type INT.
static java.lang.String JAVA_IO_SERIALIZABLE
          The field descriptor for the interface Serializable.
static java.lang.String JAVA_LANG_ASSERTIONERROR
          The field descriptor for the class AssertionError.
static java.lang.String JAVA_LANG_BOOLEAN
          The field descriptor for the class Boolean.
static java.lang.String JAVA_LANG_BYTE
          The field descriptor for the class Byte.
static java.lang.String JAVA_LANG_CHARACTER
          The field descriptor for the class Character.
static java.lang.String JAVA_LANG_CLASS
          The field descriptor for the class Class.
static java.lang.String JAVA_LANG_CLONEABLE
          The field descriptor for the interface Cloneable.
static java.lang.String JAVA_LANG_DOUBLE
          The field descriptor for the class Double.
static java.lang.String JAVA_LANG_ERROR
          The field descriptor for the class Error.
static java.lang.String JAVA_LANG_EXCEPTION
          The field descriptor for the class Exception.
static java.lang.String JAVA_LANG_FLOAT
          The field descriptor for the class Float.
static java.lang.String JAVA_LANG_INTEGER
          The field descriptor for the class Integer.
static java.lang.String JAVA_LANG_ITERABLE
          The field descriptor for the interface Iterable.
static java.lang.String JAVA_LANG_LONG
          The field descriptor for the class Long.
static java.lang.String JAVA_LANG_OBJECT
          The field descriptor for the class Object.
static java.lang.String JAVA_LANG_OVERRIDE
          The field descriptor for the annotation Override.
static java.lang.String JAVA_LANG_RUNTIMEEXCEPTION
          The field descriptor for the class RuntimeException.
static java.lang.String JAVA_LANG_SHORT
          The field descriptor for the class Short.
static java.lang.String JAVA_LANG_STRING
          The field descriptor for the class String.
static java.lang.String JAVA_LANG_STRINGBUILDER
          The field descriptor for the class StringBuilder.
static java.lang.String JAVA_LANG_THROWABLE
          The field descriptor for the class Throwable.
static java.lang.String JAVA_UTIL_ITERATOR
          The field descriptor for the interface Iterator.
static java.lang.String LONG
          The field descriptor for the primitive type LONG.
static java.lang.String SHORT
          The field descriptor for the primitive type SHORT.
static java.lang.String VOID
          The field descriptor for the type VOID.
 
Method Summary
static boolean areInSamePackage(java.lang.String d1, java.lang.String d2)
          Checks whether two reference types are declared in the same package.
static java.lang.String fromClassName(java.lang.String className)
          Converts a class name as defined by "Class.getName()" into a descriptor.
static java.lang.String fromInternalForm(java.lang.String internalForm)
          Convert a class name in the "internal form" as described in JVMS 4.2 into a descriptor.
static java.lang.String getComponentDescriptor(java.lang.String d)
           
static java.lang.String getPackageName(java.lang.String d)
          Returns the package name of a class or interface reference descriptor, or null if the class or interface is declared in the default package.
static boolean hasSize1(java.lang.String d)
           
static boolean hasSize2(java.lang.String d)
           
static boolean isArrayReference(java.lang.String d)
           
static boolean isClassOrInterfaceReference(java.lang.String d)
           
static boolean isPrimitive(java.lang.String d)
           
static boolean isPrimitiveNumeric(java.lang.String d)
           
static boolean isReference(java.lang.String d)
           
static short size(java.lang.String d)
           
static java.lang.String toClassName(java.lang.String d)
          Converts a field descriptor into a class name as defined by Class.getName().
static java.lang.String toInternalForm(java.lang.String d)
          Converts a descriptor into the "internal form" as defined by JVMS 4.2.
static java.lang.String toString(java.lang.String d)
          Pretty-prints the given descriptor.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

VOID

public static final java.lang.String VOID
The field descriptor for the type VOID.

See Also:
Constant Field Values

BYTE

public static final java.lang.String BYTE
The field descriptor for the primitive type BYTE.

See Also:
Constant Field Values

CHAR

public static final java.lang.String CHAR
The field descriptor for the primitive type CHAR.

See Also:
Constant Field Values

DOUBLE

public static final java.lang.String DOUBLE
The field descriptor for the primitive type DOUBLE.

See Also:
Constant Field Values

FLOAT

public static final java.lang.String FLOAT
The field descriptor for the primitive type FLOAT.

See Also:
Constant Field Values

INT

public static final java.lang.String INT
The field descriptor for the primitive type INT.

See Also:
Constant Field Values

LONG

public static final java.lang.String LONG
The field descriptor for the primitive type LONG.

See Also:
Constant Field Values

SHORT

public static final java.lang.String SHORT
The field descriptor for the primitive type SHORT.

See Also:
Constant Field Values

BOOLEAN

public static final java.lang.String BOOLEAN
The field descriptor for the primitive type BOOLEAN.

See Also:
Constant Field Values

JAVA_LANG_OVERRIDE

public static final java.lang.String JAVA_LANG_OVERRIDE
The field descriptor for the annotation Override.

See Also:
Constant Field Values

JAVA_LANG_ASSERTIONERROR

public static final java.lang.String JAVA_LANG_ASSERTIONERROR
The field descriptor for the class AssertionError.

See Also:
Constant Field Values

JAVA_LANG_BOOLEAN

public static final java.lang.String JAVA_LANG_BOOLEAN
The field descriptor for the class Boolean.

See Also:
Constant Field Values

JAVA_LANG_BYTE

public static final java.lang.String JAVA_LANG_BYTE
The field descriptor for the class Byte.

See Also:
Constant Field Values

JAVA_LANG_CHARACTER

public static final java.lang.String JAVA_LANG_CHARACTER
The field descriptor for the class Character.

See Also:
Constant Field Values

JAVA_LANG_CLASS

public static final java.lang.String JAVA_LANG_CLASS
The field descriptor for the class Class.

See Also:
Constant Field Values

JAVA_LANG_DOUBLE

public static final java.lang.String JAVA_LANG_DOUBLE
The field descriptor for the class Double.

See Also:
Constant Field Values

JAVA_LANG_EXCEPTION

public static final java.lang.String JAVA_LANG_EXCEPTION
The field descriptor for the class Exception.

See Also:
Constant Field Values

JAVA_LANG_ERROR

public static final java.lang.String JAVA_LANG_ERROR
The field descriptor for the class Error.

See Also:
Constant Field Values

JAVA_LANG_FLOAT

public static final java.lang.String JAVA_LANG_FLOAT
The field descriptor for the class Float.

See Also:
Constant Field Values

JAVA_LANG_INTEGER

public static final java.lang.String JAVA_LANG_INTEGER
The field descriptor for the class Integer.

See Also:
Constant Field Values

JAVA_LANG_LONG

public static final java.lang.String JAVA_LANG_LONG
The field descriptor for the class Long.

See Also:
Constant Field Values

JAVA_LANG_OBJECT

public static final java.lang.String JAVA_LANG_OBJECT
The field descriptor for the class Object.

See Also:
Constant Field Values

JAVA_LANG_RUNTIMEEXCEPTION

public static final java.lang.String JAVA_LANG_RUNTIMEEXCEPTION
The field descriptor for the class RuntimeException.

See Also:
Constant Field Values

JAVA_LANG_SHORT

public static final java.lang.String JAVA_LANG_SHORT
The field descriptor for the class Short.

See Also:
Constant Field Values

JAVA_LANG_STRING

public static final java.lang.String JAVA_LANG_STRING
The field descriptor for the class String.

See Also:
Constant Field Values

JAVA_LANG_STRINGBUILDER

public static final java.lang.String JAVA_LANG_STRINGBUILDER
The field descriptor for the class StringBuilder.

See Also:
Constant Field Values

JAVA_LANG_THROWABLE

public static final java.lang.String JAVA_LANG_THROWABLE
The field descriptor for the class Throwable.

See Also:
Constant Field Values

JAVA_IO_SERIALIZABLE

public static final java.lang.String JAVA_IO_SERIALIZABLE
The field descriptor for the interface Serializable.

See Also:
Constant Field Values

JAVA_LANG_CLONEABLE

public static final java.lang.String JAVA_LANG_CLONEABLE
The field descriptor for the interface Cloneable.

See Also:
Constant Field Values

JAVA_LANG_ITERABLE

public static final java.lang.String JAVA_LANG_ITERABLE
The field descriptor for the interface Iterable.

See Also:
Constant Field Values

JAVA_UTIL_ITERATOR

public static final java.lang.String JAVA_UTIL_ITERATOR
The field descriptor for the interface Iterator.

See Also:
Constant Field Values
Method Detail

isReference

public static boolean isReference(java.lang.String d)
Returns:
Whether this Descriptor describes a reference (i.e. non-primitive) type

isClassOrInterfaceReference

public static boolean isClassOrInterfaceReference(java.lang.String d)
Returns:
Whether this Descriptor describes a class or an interface (and not an array or a primitive type)

isArrayReference

public static boolean isArrayReference(java.lang.String d)
Returns:
Whether this Descriptor describes an array type

getComponentDescriptor

public static java.lang.String getComponentDescriptor(java.lang.String d)
Returns:
The descriptor of the component of the array type d
Throws:
JaninoRuntimeException - d does not describe an array type

size

public static short size(java.lang.String d)
Returns:
The number of slots (1 or two) that a value of the type described by d occupies on the operand stack or in the local variable array, or 0 iff d describes the type VOID

hasSize1

public static boolean hasSize1(java.lang.String d)
Returns:
true iff d describes a primitive type except LONG and DOUBLE, or a reference type

hasSize2

public static boolean hasSize2(java.lang.String d)
Returns:
true iff d LONG or DOUBLE

toString

public static java.lang.String toString(java.lang.String d)
Pretty-prints the given descriptor.

Parameters:
d - A valid field or method descriptor

fromClassName

public static java.lang.String fromClassName(java.lang.String className)
Converts a class name as defined by "Class.getName()" into a descriptor.


fromInternalForm

public static java.lang.String fromInternalForm(java.lang.String internalForm)
Convert a class name in the "internal form" as described in JVMS 4.2 into a descriptor.

Also implement the encoding of array types as described in JVMS 4.4.1.


toClassName

public static java.lang.String toClassName(java.lang.String d)
Converts a field descriptor into a class name as defined by Class.getName().


toInternalForm

public static java.lang.String toInternalForm(java.lang.String d)
Converts a descriptor into the "internal form" as defined by JVMS 4.2.


isPrimitive

public static boolean isPrimitive(java.lang.String d)
Returns:
Whether d describes a primitive type or VOID

isPrimitiveNumeric

public static boolean isPrimitiveNumeric(java.lang.String d)
Returns:
Whether d describes a primitive type except BOOLEAN and VOID

getPackageName

public static java.lang.String getPackageName(java.lang.String d)
Returns the package name of a class or interface reference descriptor, or null if the class or interface is declared in the default package.


areInSamePackage

public static boolean areInSamePackage(java.lang.String d1,
                                       java.lang.String d2)
Checks whether two reference types are declared in the same package.


janino.net