Class Repository


  • public abstract class Repository
    extends Object
    The repository maintains informations about class interdependencies, e.g., whether a class is a sub-class of another. Delegates actual class loading to SyntheticRepository with current class path by default.
    See Also:
    Repository, SyntheticRepository
    • Constructor Detail

      • Repository

        public Repository()
    • Method Detail

      • getRepository

        public static Repository getRepository()
        Returns:
        currently used repository instance
      • setRepository

        public static void setRepository​(Repository rep)
        Sets repository instance to be used for class loading
      • lookupClass

        public static JavaClass lookupClass​(String class_name)
                                     throws ClassNotFoundException
        Lookups class somewhere found on your CLASSPATH, or whereever the repository instance looks for it.
        Returns:
        class object for given fully qualified class name
        Throws:
        ClassNotFoundException - if the class could not be found or parsed correctly
      • lookupClass

        public static JavaClass lookupClass​(Class<?> clazz)
                                     throws ClassNotFoundException
        Tries to find class source using the internal repository instance.
        Returns:
        JavaClass object for given runtime class
        Throws:
        ClassNotFoundException - if the class could not be found or parsed correctly
        See Also:
        Class
      • lookupClassFile

        public static ClassPath.ClassFile lookupClassFile​(String class_name)
        Returns:
        class file object for given Java class by looking on the system class path; returns null if the class file can't be found
      • clearCache

        public static void clearCache()
        Clears the repository.
      • addClass

        public static JavaClass addClass​(JavaClass clazz)
        Adds clazz to repository if there isn't an equally named class already in there.
        Returns:
        old entry in repository
      • removeClass

        public static void removeClass​(String clazz)
        Removes class with given (fully qualified) name from repository.
      • removeClass

        public static void removeClass​(JavaClass clazz)
        Removes given class from repository.
      • getSuperClasses

        public static JavaClass[] getSuperClasses​(String class_name)
                                           throws ClassNotFoundException
        Returns:
        list of super classes of clazz in ascending order, i.e., Object is always the last element.
        Throws:
        ClassNotFoundException - if the named class or any of its superclasses can't be found
      • getInterfaces

        public static JavaClass[] getInterfaces​(JavaClass clazz)
                                         throws ClassNotFoundException
        Returns:
        all interfaces implemented by class and its super classes and the interfaces that those interfaces extend, and so on. (Some people call this a transitive hull).
        Throws:
        ClassNotFoundException - if any of the class's superclasses or superinterfaces can't be found
      • getInterfaces

        public static JavaClass[] getInterfaces​(String class_name)
                                         throws ClassNotFoundException
        Returns:
        all interfaces implemented by class and its super classes and the interfaces that extend those interfaces, and so on
        Throws:
        ClassNotFoundException - if the named class can't be found, or if any of its superclasses or superinterfaces can't be found
      • instanceOf

        public static boolean instanceOf​(JavaClass clazz,
                                         JavaClass super_class)
                                  throws ClassNotFoundException
        Equivalent to runtime "instanceof" operator.
        Returns:
        true, if clazz is an instance of super_class
        Throws:
        ClassNotFoundException - if any superclasses or superinterfaces of clazz can't be found
      • implementationOf

        public static boolean implementationOf​(String clazz,
                                               String inter)
                                        throws ClassNotFoundException
        Returns:
        true, if clazz is an implementation of interface inter
        Throws:
        ClassNotFoundException - if clazz, inter, or any superclasses or superinterfaces of clazz can't be found