Class Introspector


  • public class Introspector
    extends java.lang.Object
    The Introspector is a utility for developers to figure out which properties, events, and methods a JavaBean supports. Introspector class walks over the class/superclass chain of the target bean class. At each level it checks if there is a matching BeanInfo class which provides explicit information about the bean, and if so uses that explicit information. Otherwise it uses the low level reflection APIs to study the target class and uses design patterns to analyze its behaviour and then proceeds to continue the introspection with its baseclass. Introspector appends "BeanInfo" to the qualified name of the bean class, try to use the new class as the "BeanInfo" class. If the "BeanInfo" class exsits and returns non-null value when queried for explicit information, use the explicit informationIntrospector will extract a simple class name of the bean class by removing the package name from the qualified name of the bean class, append "BeanInfo" to it. And look for the simple class name in the packages defined in the "BeanInfo" search path (The default "BeanInfo" search path is sun.beans.infos). If it finds a "BeanInfo" class and the "BeanInfo" class returns non-null value when queried for explicit information, use the explicit information
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static int IGNORE_ALL_BEANINFO
      Constant values to indicate that the Introspector will ignore all BeanInfo class.
      static int IGNORE_IMMEDIATE_BEANINFO
      Constant values to indicate that the Introspector will ignore the BeanInfo class of the current bean class.
      static int USE_ALL_BEANINFO
      Constant values to indicate that the Introspector will use all BeanInfo class which have been found.
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static java.lang.String decapitalize​(java.lang.String name)
      Decapitalizes a given string according to the rule:
      static void flushCaches()
      Flushes all BeanInfo caches.
      static void flushFromCaches​(java.lang.Class<?> clazz)
      Flushes the BeanInfo caches of the specified bean class
      static BeanInfo getBeanInfo​(java.lang.Class<?> beanClass)
      Gets the BeanInfo object which contains the information of the properties, events and methods of the specified bean class.
      static BeanInfo getBeanInfo​(java.lang.Class<?> beanClass, int flags)
      Gets the BeanInfo object which contains the information of the properties, events and methods of the specified bean class.
      static BeanInfo getBeanInfo​(java.lang.Class<?> beanClass, java.lang.Class<?> stopClass)
      Gets the BeanInfo object which contains the information of the properties, events and methods of the specified bean class.
      static java.lang.String[] getBeanInfoSearchPath()
      Gets an array of search packages.
      static void setBeanInfoSearchPath​(java.lang.String[] path)
      Sets the search packages.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • IGNORE_ALL_BEANINFO

        public static final int IGNORE_ALL_BEANINFO
        Constant values to indicate that the Introspector will ignore all BeanInfo class.
        See Also:
        Constant Field Values
      • IGNORE_IMMEDIATE_BEANINFO

        public static final int IGNORE_IMMEDIATE_BEANINFO
        Constant values to indicate that the Introspector will ignore the BeanInfo class of the current bean class.
        See Also:
        Constant Field Values
      • USE_ALL_BEANINFO

        public static final int USE_ALL_BEANINFO
        Constant values to indicate that the Introspector will use all BeanInfo class which have been found. This is the default one.
        See Also:
        Constant Field Values
    • Method Detail

      • decapitalize

        public static java.lang.String decapitalize​(java.lang.String name)
        Decapitalizes a given string according to the rule:
        Parameters:
        name - - the String to decapitalize
        Returns:
        the decapitalized version of the String
      • flushCaches

        public static void flushCaches()
        Flushes all BeanInfo caches.
      • flushFromCaches

        public static void flushFromCaches​(java.lang.Class<?> clazz)
        Flushes the BeanInfo caches of the specified bean class
        Parameters:
        clazz - the specified bean class
      • getBeanInfo

        public static BeanInfo getBeanInfo​(java.lang.Class<?> beanClass)
                                    throws IntrospectionException
        Gets the BeanInfo object which contains the information of the properties, events and methods of the specified bean class. Introspector will cache the BeanInfo object. Subsequent calls to this method will be answered with the cached data.
        Parameters:
        beanClass - the specified bean class.
        Returns:
        the BeanInfo of the bean class.
        Throws:
        IntrospectionException
      • getBeanInfo

        public static BeanInfo getBeanInfo​(java.lang.Class<?> beanClass,
                                           java.lang.Class<?> stopClass)
                                    throws IntrospectionException
        Gets the BeanInfo object which contains the information of the properties, events and methods of the specified bean class. It will not introspect the "stopclass" and its super class. Introspector will cache the BeanInfo object. Subsequent calls to this method will be answered with the cached data.
        Parameters:
        beanClass - the specified beanClass.
        stopClass - the sopt class which should be super class of the bean class. May be null.
        Returns:
        the BeanInfo of the bean class.
        Throws:
        IntrospectionException
      • getBeanInfo

        public static BeanInfo getBeanInfo​(java.lang.Class<?> beanClass,
                                           int flags)
                                    throws IntrospectionException
        Gets the BeanInfo object which contains the information of the properties, events and methods of the specified bean class. flag==IGNORE_ALL_BEANINFO, the Introspector will ignore all BeanInfo class.flag==IGNORE_IMMEDIATE_BEANINFO, the Introspector will ignore the BeanInfo class of the current bean class.flag==USE_ALL_BEANINFO, the Introspector will use all BeanInfo class which have been found.Introspector will cache the BeanInfo object. Subsequent calls to this method will be answered with the cached data.
        Parameters:
        beanClass - the specified bean class.
        flags - the flag to control the usage of the explicit BeanInfo class.
        Returns:
        the BeanInfo of the bean class.
        Throws:
        IntrospectionException
      • getBeanInfoSearchPath

        public static java.lang.String[] getBeanInfoSearchPath()
        Gets an array of search packages.
        Returns:
        an array of search packages.
      • setBeanInfoSearchPath

        public static void setBeanInfoSearchPath​(java.lang.String[] path)
        Sets the search packages.
        Parameters:
        path - the new search packages to be set.