org.jibx.binding.classes
Class ClassItem

java.lang.Object
  extended by 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.

Version:
1.0
Author:
Dennis M. Sosnoski

Field Summary
private static java.lang.String[] EMPTY_STRING_ARRAY
          Empty array of strings.
private  java.lang.String[] m_argTypes
          Argument types for method.
private  ClassFile m_classFile
          Owning class information.
private  org.apache.bcel.classfile.FieldOrMethod m_item
          Wrapped existing item.
private  java.lang.String m_name
          Item name.
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.
 
Constructor Summary
ClassItem(java.lang.String name, ClassFile cf, org.apache.bcel.classfile.FieldOrMethod item)
          Constructor.
 
Method Summary
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 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 name 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 org.apache.bcel.generic.Type typeFromName(java.lang.String name)
          Create type from name.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

EMPTY_STRING_ARRAY

private static final java.lang.String[] EMPTY_STRING_ARRAY
Empty array of strings.


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_item

private org.apache.bcel.classfile.FieldOrMethod m_item
Wrapped existing item.

Constructor Detail

ClassItem

public ClassItem(java.lang.String name,
                 ClassFile cf,
                 org.apache.bcel.classfile.FieldOrMethod item)
Constructor. Builds a wrapper for an item based on an existing field or method.

Parameters:
name - field or method name
cf - owning class information
item - 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

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.

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)
                    throws JiBXException
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
Throws:
JiBXException - if cannot be accessed

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 name is a primitive.

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.

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 org.apache.bcel.generic.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 name
sigs - 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 name
sigs - 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 type
to - fully qualified class name of assignment type
Returns:
true if assignable, false if not
Throws:
JiBXException - if configuration error


Project Web Site