Package org.jibx.binding.model
Class ClassWrapper
- java.lang.Object
-
- org.jibx.binding.model.ClassWrapper
-
- All Implemented Interfaces:
IClass
- Direct Known Subclasses:
ClassSourceWrapper
public class ClassWrapper extends java.lang.Object implements IClass
Wrapper for class information. This wraps the BCEL-based class handling implementation to support the interface defined for use with the binding model.- Author:
- Dennis M. Sosnoski
-
-
Field Summary
Fields Modifier and Type Field Description private ClassFile
m_class
private IClassItem[]
m_fields
private IClassLocator
m_locator
private IClassItem[]
m_methods
-
Constructor Summary
Constructors Constructor Description ClassWrapper(IClassLocator loc, ClassFile clas)
Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected IClassItem
buildItem(ClassItem item)
Build an item wrapper.IClassItem
getBestMethod(java.lang.String name, java.lang.String type, java.lang.String[] args)
Get information for best matching method.ClassFile
getClassFile()
Get class file information.IClassItem
getDirectField(java.lang.String name)
Get information for field.IClassItem
getField(java.lang.String name)
Get information for field.IClassItem[]
getFields()
Get all fields of class.IClassItem
getInitializerMethod(java.lang.String sig)
Get information for initializer.java.lang.String[]
getInstanceSigs()
Get signatures for all types of which instances of this type are instances.java.lang.String[]
getInterfaces()
Get names of all interfaces implemented directly by class.java.lang.String
getJavaDoc()
Get the JavaDoc comment for this class.IClassLocator
getLocator()
Get the locator which provided this class.IClassItem
getMethod(java.lang.String name, java.lang.String sig)
Get information for method without respect to potential trailing arguments or return value.IClassItem
getMethod(java.lang.String name, java.lang.String[] sigs)
Get information for method matching one of several possible signatures.IClassItem[]
getMethods()
Get all methods of class.java.lang.String
getName()
Get fully qualified class name.java.lang.String
getPackage()
Get package name.java.lang.String
getSignature()
Get signature for class as type.IClassItem
getStaticMethod(java.lang.String name, java.lang.String sig)
Get information for static method without respect to return value.IClass
getSuperClass()
Get superclass.boolean
isAbstract()
Check if class is abstract.boolean
isAccessible(IClassItem item)
Check accessible method.boolean
isAssignable(IClass other)
Check if a value of this type can be directly assigned to another type.boolean
isImplements(java.lang.String sig)
Check if class implements an interface.boolean
isInterface()
Check if class is an interface.boolean
isModifiable()
Check if class is modifiable.boolean
isSuperclass(java.lang.String name)
Check if another class is a superclass of this one.java.lang.Class
loadClass()
Load class in executable form.
-
-
-
Field Detail
-
m_locator
private final IClassLocator m_locator
-
m_class
private final ClassFile m_class
-
m_fields
private IClassItem[] m_fields
-
m_methods
private IClassItem[] m_methods
-
-
Constructor Detail
-
ClassWrapper
public ClassWrapper(IClassLocator loc, ClassFile clas)
Constructor.- Parameters:
loc
-clas
-
-
-
Method Detail
-
buildItem
protected IClassItem buildItem(ClassItem item)
Build an item wrapper. This method may be overridden by subclasses to return a specialized form of wrapper.- Parameters:
item
-- Returns:
- wrapper
-
getName
public java.lang.String getName()
Description copied from interface:IClass
Get fully qualified class name.
-
getSignature
public java.lang.String getSignature()
Description copied from interface:IClass
Get signature for class as type.- Specified by:
getSignature
in interfaceIClass
- Returns:
- signature for class used as type
-
getPackage
public java.lang.String getPackage()
Description copied from interface:IClass
Get package name.- Specified by:
getPackage
in interfaceIClass
- Returns:
- package name for class
-
getSuperClass
public IClass getSuperClass()
Description copied from interface:IClass
Get superclass.- Specified by:
getSuperClass
in interfaceIClass
- Returns:
- superclass information
-
getInterfaces
public java.lang.String[] getInterfaces()
Description copied from interface:IClass
Get names of all interfaces implemented directly by class.- Specified by:
getInterfaces
in interfaceIClass
- Returns:
- names of all interfaces implemented directly by class
(non-
null
, empty array if none)
-
getInstanceSigs
public java.lang.String[] getInstanceSigs()
Description copied from interface:IClass
Get signatures for all types of which instances of this type are instances.- Specified by:
getInstanceSigs
in interfaceIClass
- Returns:
- all signatures supported by instances
-
isImplements
public boolean isImplements(java.lang.String sig)
Description copied from interface:IClass
Check if class implements an interface.- Specified by:
isImplements
in interfaceIClass
- Parameters:
sig
- signature of interface to be checked- Returns:
true
if interface is implemented by class,false
if not
-
isAbstract
public boolean isAbstract()
Description copied from interface:IClass
Check if class is abstract.- Specified by:
isAbstract
in interfaceIClass
- Returns:
true
if class is abstract,false
if not
-
isInterface
public boolean isInterface()
Description copied from interface:IClass
Check if class is an interface.- Specified by:
isInterface
in interfaceIClass
- Returns:
true
if class is an interface,false
if not
-
isModifiable
public boolean isModifiable()
Description copied from interface:IClass
Check if class is modifiable.- Specified by:
isModifiable
in interfaceIClass
- Returns:
true
if class is modifiable,false
if not
-
isSuperclass
public boolean isSuperclass(java.lang.String name)
Description copied from interface:IClass
Check if another class is a superclass of this one.- Specified by:
isSuperclass
in interfaceIClass
- Parameters:
name
- potential superclass to be checked- Returns:
true
if named class is a superclass of this one,false
if not
-
getDirectField
public IClassItem getDirectField(java.lang.String name)
Description copied from interface:IClass
Get information for field. This only checks for fields that are actually members of the class (not superclasses). TODO: make this work with both static and member fields- Specified by:
getDirectField
in interfaceIClass
- Parameters:
name
- field name- Returns:
- field information, or
null
if field not found
-
getField
public IClassItem getField(java.lang.String name)
Description copied from interface:IClass
Get information for field. If the field is not found directly, superclasses are checked for inherited fields matching the supplied name. TODO: make this work with both static and member fields
-
getMethod
public IClassItem getMethod(java.lang.String name, java.lang.String sig)
Description copied from interface:IClass
Get information for method without respect to potential trailing arguments or return value. If the method is not found directly, superclasses are checked for inherited methods matching the supplied name. This compares the supplied partial signature against the actual method signature, and considers it a match if the actual sigature starts with the supplied signature. TODO: make this work with both static and member methods
-
getMethod
public IClassItem getMethod(java.lang.String name, java.lang.String[] sigs)
Description copied from interface:IClass
Get information for method matching one of several possible signatures. If a match is not found directly, superclasses are checked for inherited methods matching the supplied name and signatures. The signature variations are checked in the order supplied. TODO: make this work with both static and member methods
-
getInitializerMethod
public IClassItem getInitializerMethod(java.lang.String sig)
Description copied from interface:IClass
Get information for initializer. Only the class itself is checked for an initializer matching the argument list signature.- Specified by:
getInitializerMethod
in interfaceIClass
- Parameters:
sig
- encoded argument list signature- Returns:
- method information, or
null
if method not found
-
getStaticMethod
public IClassItem getStaticMethod(java.lang.String name, java.lang.String sig)
Description copied from interface:IClass
Get information for static method without respect to return value. Only the class itself is checked for a method matching the supplied name and argument list signature.- Specified by:
getStaticMethod
in interfaceIClass
- Parameters:
name
- method namesig
- encoded argument list signature- Returns:
- method information, or
null
if method not found
-
isAccessible
public boolean isAccessible(IClassItem item)
Description copied from interface:IClass
Check accessible method. Check if a field or method in another class is accessible from within this class.- Specified by:
isAccessible
in interfaceIClass
- Parameters:
item
- field or method information- Returns:
true
if accessible,false
if not
-
isAssignable
public boolean isAssignable(IClass other)
Description copied from interface:IClass
Check if a value of this type can be directly assigned to another type. This is basically the equivalent of the instanceof operator.- Specified by:
isAssignable
in interfaceIClass
- Parameters:
other
- type to be assigned to- Returns:
true
if assignable,false
if not
-
getBestMethod
public IClassItem getBestMethod(java.lang.String name, java.lang.String type, java.lang.String[] args)
Description copied from interface:IClass
Get information for best matching method. This tries to find a method which matches the specified name, return type, and argument types. If an exact match is not found it looks for a method with a return type that is extended or implemented by the specified type and arguments that are extended or implemented by the specified types. If no match is found for this class superclasses are checked. TODO: make this work with both static and member methods- Specified by:
getBestMethod
in interfaceIClass
- Parameters:
name
- method nametype
- return value type name (null
if indeterminant)args
- argument value type names (null
if indeterminant)- Returns:
- method information, or
null
if method not found
-
getClassFile
public ClassFile getClassFile()
Description copied from interface:IClass
Get class file information. TODO: eliminate this sucker- Specified by:
getClassFile
in interfaceIClass
- Returns:
- class file information
-
loadClass
public java.lang.Class loadClass()
Description copied from interface:IClass
Load class in executable form.
-
getFields
public IClassItem[] getFields()
Description copied from interface:IClass
Get all fields of class.
-
getMethods
public IClassItem[] getMethods()
Description copied from interface:IClass
Get all methods of class.- Specified by:
getMethods
in interfaceIClass
- Returns:
- methods
-
getJavaDoc
public java.lang.String getJavaDoc()
Description copied from interface:IClass
Get the JavaDoc comment for this class.- Specified by:
getJavaDoc
in interfaceIClass
- Returns:
- comment text, or
null
if none or no source available
-
getLocator
public IClassLocator getLocator()
Description copied from interface:IClass
Get the locator which provided this class.- Specified by:
getLocator
in interfaceIClass
- Returns:
- locator
-
-