Package org.jibx.binding.classes
Class ClassItem
- java.lang.Object
-
- org.jibx.binding.classes.ClassItem
-
public class ClassItem extends java.lang.Object
Wrapper for field or method information. Provides the information needed for access to either existing or added methods in existing classes.- Author:
- Dennis M. Sosnoski
-
-
Field Summary
Fields Modifier and Type Field Description private java.lang.String[]
m_argTypes
Argument types for method.private ClassFile
m_classFile
Owning class information.private FieldOrMethod
m_item
Wrapped existing item.private java.lang.String
m_name
Item name.private java.lang.String[]
m_parmNames
Parameter names for method (null
if not yet found).private java.lang.String
m_signature
Encoded signature.private java.lang.String
m_typeName
Fully qualified class name of item type.private static java.util.HashMap
s_primitiveMap
Map for primitive type signature variants.private static java.util.HashMap
s_signatureParamsMap
Map from method signature to array of argument types.private static java.util.HashMap
s_signatureTypeMap
Map from method signature to return type.private static java.util.HashMap
s_typeMap
Map from type name to BCEL type.private static byte
SIGNATURE_ATTRIBUTE_TAG
Tag value for signature attribute.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static ClassItem
findStaticMethod(java.lang.String name, java.lang.String[] sigs)
Get static method by fully qualified name.static ClassItem
findVirtualMethod(java.lang.String name, java.lang.String[] sigs)
Get virtual method by fully qualified name.int
getAccessFlags()
Get access flags.int
getArgumentCount()
Get number of arguments for method.java.lang.String
getArgumentType(int index)
Get argument type as fully qualified class name.java.lang.String[]
getArgumentTypes()
Get argument types as array of fully qualified class names.ClassFile
getClassFile()
Get owning class information.java.lang.String[]
getExceptions()
Get names of exceptions thrown by method.java.lang.String
getFullName()
Get fully-qualified class and method name.java.lang.String
getGenericsSignature()
Get the generics signature information for item.java.lang.String
getName()
Get item name.java.lang.String
getParameterName(int index)
Get method parameter name.static java.lang.String[]
getParametersFromSignature(java.lang.String sig)
Get parameter type names from method signature.static java.lang.String
getPrimitiveSignature(java.lang.String type)
Get the signature for a primitive.java.lang.String
getSignature()
Get method signature.static java.lang.String[]
getSignatureVariants(java.lang.String name)
Get all variant signatures for a fully qualified class name.static java.lang.String
getTypeFromSignature(java.lang.String sig)
Get return type names from method signature.java.lang.String
getTypeName()
Get item type as fully qualified class name.static boolean
isAssignable(java.lang.String from, java.lang.String to)
Check if a value of one type can be directly assigned to another type.boolean
isInitializer()
Check if item is an initializer.boolean
isMethod()
Check if item is a method.static boolean
isPrimitive(java.lang.String type)
Check if type is a primitive.boolean
isStatic()
Check if item is a static.void
makeAccessible(ClassFile src)
Make accessible item.void
setAccessFlags(int flags)
Set access flags.static Type
typeFromName(java.lang.String name)
Create type from name.
-
-
-
Field Detail
-
SIGNATURE_ATTRIBUTE_TAG
private static final byte SIGNATURE_ATTRIBUTE_TAG
Tag value for signature attribute.- See Also:
- Constant Field Values
-
s_primitiveMap
private static java.util.HashMap s_primitiveMap
Map for primitive type signature variants.
-
s_typeMap
private static java.util.HashMap s_typeMap
Map from type name to BCEL type.
-
s_signatureParamsMap
private static java.util.HashMap s_signatureParamsMap
Map from method signature to array of argument types.
-
s_signatureTypeMap
private static java.util.HashMap s_signatureTypeMap
Map from method signature to return type.
-
m_classFile
private ClassFile m_classFile
Owning class information.
-
m_name
private java.lang.String m_name
Item name.
-
m_signature
private java.lang.String m_signature
Encoded signature.
-
m_typeName
private java.lang.String m_typeName
Fully qualified class name of item type.
-
m_argTypes
private java.lang.String[] m_argTypes
Argument types for method.
-
m_parmNames
private java.lang.String[] m_parmNames
Parameter names for method (null
if not yet found).
-
m_item
private FieldOrMethod m_item
Wrapped existing item.
-
-
Constructor Detail
-
ClassItem
public ClassItem(java.lang.String name, ClassFile cf, FieldOrMethod item)
Constructor. Builds a wrapper for an item based on an existing field or method.- Parameters:
name
- field or method namecf
- owning class informationitem
- field or method information
-
-
Method Detail
-
getClassFile
public ClassFile getClassFile()
Get owning class information.- Returns:
- owning class information
-
getName
public java.lang.String getName()
Get item name.- Returns:
- item name
-
getFullName
public java.lang.String getFullName()
Get fully-qualified class and method name.- Returns:
- fully-qualified class and method name
-
getTypeName
public java.lang.String getTypeName()
Get item type as fully qualified class name.- Returns:
- item type name
-
getArgumentCount
public int getArgumentCount()
Get number of arguments for method.- Returns:
- argument count for method, or zero if not a method
-
getArgumentType
public java.lang.String getArgumentType(int index)
Get argument type as fully qualified class name.- Parameters:
index
- argument number- Returns:
- argument type name
-
getParameterName
public java.lang.String getParameterName(int index)
Get method parameter name.- Parameters:
index
- parameter index- Returns:
- parameter name
-
getArgumentTypes
public java.lang.String[] getArgumentTypes()
Get argument types as array of fully qualified class names.- Returns:
- array of argument types
-
getAccessFlags
public int getAccessFlags()
Get access flags.- Returns:
- flags for access type of field or method
-
setAccessFlags
public void setAccessFlags(int flags)
Set access flags.- Parameters:
flags
- access flags for field or method
-
makeAccessible
public void makeAccessible(ClassFile src)
Make accessible item. Check if this field or method is accessible from another class, and if not decreases the access restrictions to make it accessible.- Parameters:
src
- class file for required access
-
isStatic
public boolean isStatic()
Check if item is a static.- Returns:
true
if a static,false
if member
-
getSignature
public java.lang.String getSignature()
Get method signature.- Returns:
- encoded method signature
-
isMethod
public boolean isMethod()
Check if item is a method.- Returns:
true
if a method,false
if a field
-
isInitializer
public boolean isInitializer()
Check if item is an initializer.- Returns:
true
if an initializer,false
if a field or normal method
-
getExceptions
public java.lang.String[] getExceptions()
Get names of exceptions thrown by method.- Returns:
- array of exceptions thrown by method, or
null
if a field
-
getGenericsSignature
public java.lang.String getGenericsSignature()
Get the generics signature information for item.- Returns:
- generics signature (
null
if none)
-
isPrimitive
public static boolean isPrimitive(java.lang.String type)
Check if type is a primitive.- Parameters:
type
-- Returns:
true
if a primitive,false
if not
-
getPrimitiveSignature
public static java.lang.String getPrimitiveSignature(java.lang.String type)
Get the signature for a primitive.- Parameters:
type
-- Returns:
- signature for a primitive type
-
getParametersFromSignature
public static java.lang.String[] getParametersFromSignature(java.lang.String sig)
Get parameter type names from method signature.- Parameters:
sig
- method signature to be decoded- Returns:
- array of argument type names
-
getTypeFromSignature
public static java.lang.String getTypeFromSignature(java.lang.String sig)
Get return type names from method signature.- Parameters:
sig
- method signature to be decoded- Returns:
- return type name
-
typeFromName
public static Type typeFromName(java.lang.String name)
Create type from name.- Parameters:
name
- fully qualified type name- Returns:
- corresponding type
-
findVirtualMethod
public static ClassItem findVirtualMethod(java.lang.String name, java.lang.String[] sigs) throws JiBXException
Get virtual method by fully qualified name. This splits the class name from the method name, finds the class, and then tries to find a matching method name in that class or a superclass.- Parameters:
name
- fully qualified class and method namesigs
- possible method signatures- Returns:
- information for the method, or
null
if not found - Throws:
JiBXException
- if configuration error
-
findStaticMethod
public static ClassItem findStaticMethod(java.lang.String name, java.lang.String[] sigs) throws JiBXException
Get static method by fully qualified name. This splits the class name from the method name, finds the class, and then tries to find a matching method name in that class.- Parameters:
name
- fully qualified class and method namesigs
- possible method signatures- Returns:
- information for the method, or
null
if not found - Throws:
JiBXException
- if configuration error
-
getSignatureVariants
public static java.lang.String[] getSignatureVariants(java.lang.String name) throws JiBXException
Get all variant signatures for a fully qualified class name. The returned array gives all signatures (for interfaces or classes) which instances of the class can match.- Parameters:
name
- fully qualified class name- Returns:
- possible signature variations for instances of the class
- Throws:
JiBXException
- if configuration error
-
isAssignable
public static boolean isAssignable(java.lang.String from, java.lang.String to) throws JiBXException
Check if a value of one type can be directly assigned to another type. This is basically the equivalent of the instanceof operator, but with application to primitive types as well as object types.- Parameters:
from
- fully qualified class name of initial typeto
- fully qualified class name of assignment type- Returns:
true
if assignable,false
if not- Throws:
JiBXException
- if configuration error
-
-