Package org.jboss.byteman.rule.type
Class Type
java.lang.Object
org.jboss.byteman.rule.type.Type
models the type of a rule binding or expression
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate Type
private Type
static final Type
private Type
static final Type
static final Type
static final Type
static final Type
private Class
static final Type
static final Type
static final Type
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
private int
static final Type
static final Type
static final Type
static final Type
static final Type
static final Type
private int
static final Type
static final Type
private String
static final Type
static final Type
static final Type
private String
static final Type
static final Type
static final Type
-
Constructor Summary
ConstructorsModifierConstructorDescriptioncreate a type with a given name and no associated classcreate a type with a given name and optionally an associated classprotected
protected
-
Method Summary
Modifier and TypeMethodDescriptionboolean
attempt to establish an alias from an package unqualified named object type to a package qualified named object type whose unqualified name equals this type's namecreate an array type from this base typecreate an array type from this base typestatic Type
return the primitive type whose boxed equivalent is associated with a given classstatic Type
return the primitive type for a boxed type or vice versastatic Type
builtinType
(Class clazz) return the builtin type associated with a given classstatic Type
dereference
(Type target) dereference an object type to the fully qualified named type to which it is aliased where such an alias has been found to exist or return the supplied type if no alias exists or the type is a non-objecttype or was originally specified using a fully qualified type name.static String
fixArrayType
(String baseType, int dimension) retrieve the base type for an array type or null if this is not an array typeget the internal name for this type used by the class loader.getInternalName
(boolean forDescriptor, boolean slashSeparate) get the internal name for this type used by the class loader.getName()
get the possibly unqualified name with which this type was createdint
return the number of stack words occupied by instances of this typeget the package component of the name associated with this type or the empty String if it has no package or is was defiend with an unqualified name or is a builtin typeget the class associated with this type if it has one or a special undefined class if the type is not defined or null if there is no associated classstatic String
internalName
(Class<?> clazz) static String
internalName
(Class<?> clazz, boolean forField) boolean
isArray()
return true if this is an array typeboolean
isAssignableFrom
(Type type) check whether this type can be assigned with values of the supplied type including the case where numeric conversion from known or unknown numeric types but excluding any other cases where this type is undefined n.b.boolean
return true if this is a boolean typeboolean
check if this type is a known type.boolean
return true if this is a floating type of whatever size, including the unknown primitive numeric typeboolean
return true if this is an integral type of whatever size, including the unknown primitive numeric typeboolean
return true if this is a numeric type, including the unknown primitive numeric typeboolean
isObject()
return true if this is an object type, including unbound types mentioned in rulesboolean
return true if this is a primitive value typeboolean
isString()
return true if this is the string typeboolean
return true if this is a type mentioned in a rule but not yet bound to a specific classboolean
test if this type is an unknown type.boolean
isValue()
return true if this is a value type, which includes the boxed versions of primitive typesboolean
isVoid()
return true if this is the void typeprivate static String
packagePart
(String className) static int
paramSlotIdx
(int access, String desc, int paramIdx) identify the local var slot used to store a method parameter identified by parameter indexstatic String
parseFieldDescriptor
(String descriptor) parseMethodDescriptor
(String descriptor, boolean includeReturnType) static String
parseMethodReturnType
(String descriptor) static Type
compute the type to which a binary arithmetic operator should promote its operands before combination based on the two operand types which is also the type to be used for the result of the operationvoid
resolve
(ClassLoader loader) toString()
-
Field Details
-
typeName
-
clazz
-
packageName
-
flags
private int flags -
nBytes
private int nBytes -
aliasFor
-
baseType
-
arrayType
-
F_BOOLEAN
public static final int F_BOOLEAN- See Also:
-
F_INTEGRAL
public static final int F_INTEGRAL- See Also:
-
F_FLOATING
public static final int F_FLOATING- See Also:
-
F_OBJECT
public static final int F_OBJECT- See Also:
-
F_VOID
public static final int F_VOID- See Also:
-
F_ARRAY
public static final int F_ARRAY- See Also:
-
F_NUMERIC
public static final int F_NUMERIC- See Also:
-
F_VALUE
public static final int F_VALUE- See Also:
-
F_UNKNOWN
public static final int F_UNKNOWN- See Also:
-
F_PRIMITIVE
public static final int F_PRIMITIVE- See Also:
-
F_STRING
public static final int F_STRING- See Also:
-
Z
-
B
-
S
-
C
-
I
-
J
-
F
-
D
-
N
-
BOOLEAN
-
BYTE
-
SHORT
-
CHARACTER
-
INTEGER
-
LONG
-
FLOAT
-
DOUBLE
-
STRING
-
VOID
-
NUMBER
-
OBJECT
-
UNDEFINED
-
builtinTypes
-
primitiveTypes
-
boxedTypes
-
internalNames
-
-
Constructor Details
-
Type
create a type with a given name and optionally an associated class- Parameters:
typeName
- the name of the type which may or may not be fully qualifiedclazz
- the class associated with this name if it is know otherwise null
-
Type
create a type with a given name and no associated class- Parameters:
typeName
- the name of the type which may or may not be fully qualified
-
Type
-
Type
-
-
Method Details
-
arrayType
create an array type from this base type- Returns:
- an array type
-
arrayType
create an array type from this base type- Parameters:
clazz
- the class for the array type derived from the class of base type or null if the base type is undefined- Returns:
- an array type
-
getBaseType
retrieve the base type for an array type or null if this is not an array type- Returns:
- an array type
-
getName
get the possibly unqualified name with which this type was created- Returns:
- the type name
-
getInternalName
get the internal name for this type used by the class loader. this is only valid for defined types, defined array types or primitive types- Returns:
- the type name
-
getInternalName
get the internal name for this type used by the class loader. this is only valid for defined types, defined array types or primitive types- Parameters:
forDescriptor
- true if we need the name to appear in a decriptor false if notslashSeparate
- true if the package separator should be slash false if it should be dot- Returns:
- the type name
-
getTargetClass
get the class associated with this type if it has one or a special undefined class if the type is not defined or null if there is no associated class- Returns:
- the associated class
-
getPackageName
get the package component of the name associated with this type or the empty String if it has no package or is was defiend with an unqualified name or is a builtin type- Returns:
- the package component or an empty string
-
dereference
dereference an object type to the fully qualified named type to which it is aliased where such an alias has been found to exist or return the supplied type if no alias exists or the type is a non-objecttype or was originally specified using a fully qualified type name.- Parameters:
target
- the type to be dereferenced- Returns:
- the alias where it exists or the supplied type where there is no alias or null if a null value is supplied
-
resolve
-
aliasTo
attempt to establish an alias from an package unqualified named object type to a package qualified named object type whose unqualified name equals this type's name- Parameters:
target
- the package qualified named type for which this type should become an alias- Returns:
- true if the alias link can be established or already exsits or false if an alias to a different target already exists or this type or the target are not object types
-
isAssignableFrom
check whether this type can be assigned with values of the supplied type including the case where numeric conversion from known or unknown numeric types but excluding any other cases where this type is undefined n.b. the caller must dereference the recipient and argument types before calling this method- Parameters:
type
- the type poviding RHS values- Returns:
- true if it is known that the assignment is valid, false if it is not known to be valid or is known not to be valid
-
isUndefined
public boolean isUndefined()test if this type is an unknown type. a type may be unknown either because it is one of the pseudo types used as type variables or because it represents an object type mentioned in a rule but not yet bound to a specific class- Returns:
- true if the type is unknown otherwise false
-
isDefined
public boolean isDefined()check if this type is a known type. this is just teh oppositeof isUndefined- Returns:
- false if the type is unknown otherwise true
-
isUnbound
public boolean isUnbound()return true if this is a type mentioned in a rule but not yet bound to a specific class- Returns:
- true if the type is not yet bound to a specific class
-
isPrimitive
public boolean isPrimitive()return true if this is a primitive value type- Returns:
- true if this is a primitive value type
-
isValue
public boolean isValue()return true if this is a value type, which includes the boxed versions of primitive types- Returns:
- true if this is a value type
-
isVoid
public boolean isVoid()return true if this is the void type- Returns:
- true if this is void type
-
isString
public boolean isString()return true if this is the string type- Returns:
- true if this is string type
-
isNumeric
public boolean isNumeric()return true if this is a numeric type, including the unknown primitive numeric type- Returns:
- true if this is a numeric type
-
isIntegral
public boolean isIntegral()return true if this is an integral type of whatever size, including the unknown primitive numeric type- Returns:
- true if this is an integral type
-
isFloating
public boolean isFloating()return true if this is a floating type of whatever size, including the unknown primitive numeric type- Returns:
- true if this is a floating type
-
isBoolean
public boolean isBoolean()return true if this is a boolean type- Returns:
- true if this is a boolean type
-
isObject
public boolean isObject()return true if this is an object type, including unbound types mentioned in rules- Returns:
- true if this is an object type
-
isArray
public boolean isArray()return true if this is an array type- Returns:
- true if this is an array type
-
getNBytes
public int getNBytes()return the number of stack words occupied by instances of this type- Returns:
- true if this is an array type
-
builtinType
return the builtin type associated with a given class- Parameters:
clazz
- the class for the builtin type- Returns:
- the corresponding builtin type
-
boxType
return the primitive type whose boxed equivalent is associated with a given class- Parameters:
clazz
- the class for the primitivebuiltin type- Returns:
- the corresponding primitive type
-
boxType
return the primitive type for a boxed type or vice versa- Parameters:
type
- the boxed type- Returns:
- the corresponding primitive type
-
promote
compute the type to which a binary arithmetic operator should promote its operands before combination based on the two operand types which is also the type to be used for the result of the operation- Parameters:
type1
- the type of the left operand which must be numeric but may be undefinedtype2
- the type of the right operand which must be numeric but may be undefined- Returns:
- the corresponding promotion/result type which may be undefined numeric
- Throws:
TypeException
- if types are undefined or promotion is invalid
-
packagePart
-
parseMethodDescriptor
-
parseFieldDescriptor
-
parseMethodReturnType
-
paramSlotIdx
identify the local var slot used to store a method parameter identified by parameter index- Parameters:
access
- the access flags for the method including whether or not it is staticdesc
- the intrenal form descriptor for the maethodparamIdx
- the index of the parameter in the parameter lost starting with 0 for this or 1 for actual parameters- Returns:
- the corresponding local var slot or -1 if there is no such parameter
-
fixArrayType
-
internalName
-
internalName
-
toString
-