Class ClassDataRepository


  • public class ClassDataRepository
    extends java.lang.Object
    A repository class that manages and provides access to classpath and class-related metadata.

    This class offers methods for retrieving class names, package names, and their respective locations within the classpath. It maintains mappings such as:

    • Class path to class names: Maps directories or JAR files to the set of fully qualified class names contained within.
    • Class name to class path: Maps each fully qualified class name to its defining class path entry (e.g., a JAR file or directory).
    • Package name to class names: Maps package names to the set of fully qualified class names belonging to them.

    Example Usage

    
     // Get the singleton instance
     ClassDataRepository repository = ClassDataRepository.INSTANCE;
    
     // Get all package names discovered in the classpath
     Set<String> packages = repository.getAllPackageNamesInClassPaths();
    
     // Get all class names under a specific package
     Set<String> classesInPackage = repository.getClassNamesInPackage("java.lang");
    
     // Find the classpath where a specific class is located
     String classPath = repository.findClassPath(String.class);
    
     // Get all class names found in a specific classpath entry
     Set<String> classNames = repository.getClassNamesInClassPath("/usr/lib/jvm/rt.jar", false);
    
     // Get code source location URL for a given class
     URL location = repository.getCodeSourceLocation(ArrayList.class);
     
    Since:
    1.0.0
    Author:
    Mercy
    See Also:
    ClassPathUtils
    • Method Detail

      • getAllPackageNamesInClassPaths

        @Nonnull
        public java.util.Set<java.lang.String> getAllPackageNamesInClassPaths()
        Get all package names in class paths
        Returns:
        all package names in class paths
      • findClassPath

        @Nullable
        public java.lang.String findClassPath​(java.lang.Class<?> type)
        Find class path under specified class name
        Parameters:
        type - class
        Returns:
        class path
      • findClassPath

        @Nullable
        public java.lang.String findClassPath​(java.lang.String className)
        Find class path under specified class name
        Parameters:
        className - class name
        Returns:
        class path
      • getClassNamesInClassPath

        @Nonnull
        public java.util.Set<java.lang.String> getClassNamesInClassPath​(java.lang.String classPath,
                                                                        boolean recursive)
        Gets class name Set under specified class path
        Parameters:
        classPath - class path
        recursive - is recursive on sub directories
        Returns:
        non-null Set
      • getClassNamesInPackage

        @Nonnull
        public java.util.Set<java.lang.String> getClassNamesInPackage​(java.lang.Package onePackage)
        Gets class name Set under specified package
        Parameters:
        onePackage - one package
        Returns:
        non-null Set
      • getClassNamesInPackage

        @Nonnull
        public java.util.Set<java.lang.String> getClassNamesInPackage​(java.lang.String packageName)
        Gets class name Set under specified package name
        Parameters:
        packageName - package name
        Returns:
        non-null Set
      • getClassPathToClassNamesMap

        @Nonnull
        public java.util.Map<java.lang.String,​java.util.Set<java.lang.String>> getClassPathToClassNamesMap()
        The map of all class names in class path , the class path for one JarFile or classes directory as key , the class names set as value
        Returns:
        Read-only
      • getAllClassNamesInClassPaths

        @Nonnull
        public java.util.Set<java.lang.String> getAllClassNamesInClassPaths()
        The set of all class names in class path
        Returns:
        Read-only
      • getCodeSourceLocation

        public java.net.URL getCodeSourceLocation​(java.lang.Class<?> type)
                                           throws java.lang.NullPointerException
        Get Class's code source location URL
        Parameters:
        type -
        Returns:
        If , return null.
        Throws:
        java.lang.NullPointerException - If type is null , NullPointerException will be thrown.