Class ClassItem

java.lang.Object
org.jibx.binding.classes.ClassItem

public class ClassItem extends 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 Details

    • SIGNATURE_ATTRIBUTE_TAG

      private static final byte SIGNATURE_ATTRIBUTE_TAG
      Tag value for signature attribute.
      See Also:
    • s_primitiveMap

      private static HashMap s_primitiveMap
      Map for primitive type signature variants.
    • s_typeMap

      private static HashMap s_typeMap
      Map from type name to BCEL type.
    • s_signatureParamsMap

      private static HashMap s_signatureParamsMap
      Map from method signature to array of argument types.
    • s_signatureTypeMap

      private static HashMap s_signatureTypeMap
      Map from method signature to return type.
    • m_classFile

      private ClassFile m_classFile
      Owning class information.
    • m_name

      private String m_name
      Item name.
    • m_signature

      private String m_signature
      Encoded signature.
    • m_typeName

      private String m_typeName
      Fully qualified class name of item type.
    • m_argTypes

      private String[] m_argTypes
      Argument types for method.
    • m_parmNames

      private String[] m_parmNames
      Parameter names for method (null if not yet found).
    • m_item

      private FieldOrMethod m_item
      Wrapped existing item.
  • Constructor Details

    • ClassItem

      public ClassItem(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 name
      cf - owning class information
      item - field or method information
  • Method Details

    • getClassFile

      public ClassFile getClassFile()
      Get owning class information.
      Returns:
      owning class information
    • getName

      public String getName()
      Get item name.
      Returns:
      item name
    • getFullName

      public String getFullName()
      Get fully-qualified class and method name.
      Returns:
      fully-qualified class and method name
    • getTypeName

      public 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 String getArgumentType(int index)
      Get argument type as fully qualified class name.
      Parameters:
      index - argument number
      Returns:
      argument type name
    • getParameterName

      public String getParameterName(int index)
      Get method parameter name.
      Parameters:
      index - parameter index
      Returns:
      parameter name
    • getArgumentTypes

      public 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 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 String[] getExceptions()
      Get names of exceptions thrown by method.
      Returns:
      array of exceptions thrown by method, or null if a field
    • getGenericsSignature

      public String getGenericsSignature()
      Get the generics signature information for item.
      Returns:
      generics signature (null if none)
    • isPrimitive

      public static boolean isPrimitive(String type)
      Check if type is a primitive.
      Parameters:
      type -
      Returns:
      true if a primitive, false if not
    • getPrimitiveSignature

      public static String getPrimitiveSignature(String type)
      Get the signature for a primitive.
      Parameters:
      type -
      Returns:
      signature for a primitive type
    • getParametersFromSignature

      public static String[] getParametersFromSignature(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 String getTypeFromSignature(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(String name)
      Create type from name.
      Parameters:
      name - fully qualified type name
      Returns:
      corresponding type
    • findVirtualMethod

      public static ClassItem findVirtualMethod(String name, 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(String name, 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 String[] getSignatureVariants(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(String from, 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