Package io.microsphere.lang
Class ClassDataRepository
- java.lang.Object
-
- io.microsphere.lang.ClassDataRepository
-
@Immutable 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
-
-
Field Summary
Fields Modifier and Type Field Description static ClassDataRepositoryINSTANCESingleton instance ofClassDataRepository
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.StringfindClassPath(java.lang.Class<?> type)Find class path under specified class namejava.lang.StringfindClassPath(java.lang.String className)Find class path under specified class namejava.util.Set<java.lang.String>getAllClassNamesInClassPaths()The set of all class names inclass pathjava.util.Set<java.lang.String>getAllPackageNamesInClassPaths()Get all package names inclass pathsjava.util.Set<java.lang.String>getClassNamesInClassPath(java.lang.String classPath, boolean recursive)Gets class nameSetunder specified class pathjava.util.Set<java.lang.String>getClassNamesInPackage(java.lang.Package onePackage)Gets class nameSetunder specified packagejava.util.Set<java.lang.String>getClassNamesInPackage(java.lang.String packageName)Gets class nameSetunder specified package namejava.util.Map<java.lang.String,java.util.Set<java.lang.String>>getClassPathToClassNamesMap()The map of all class names inclass path, the class path for oneJarFileor classes directory as key , the class names set as valuejava.net.URLgetCodeSourceLocation(java.lang.Class<?> type)GetClass's code source location URL
-
-
-
Field Detail
-
INSTANCE
public static final ClassDataRepository INSTANCE
Singleton instance ofClassDataRepository
-
-
Method Detail
-
getAllPackageNamesInClassPaths
@Nonnull @Immutable public java.util.Set<java.lang.String> getAllPackageNamesInClassPaths()
Get all package names inclass 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 @Immutable public java.util.Set<java.lang.String> getClassNamesInClassPath(java.lang.String classPath, boolean recursive)
Gets class nameSetunder specified class path- Parameters:
classPath- class pathrecursive- is recursive on sub directories- Returns:
- non-null
Set
-
getClassNamesInPackage
@Nonnull @Immutable public java.util.Set<java.lang.String> getClassNamesInPackage(java.lang.Package onePackage)
Gets class nameSetunder specified package- Parameters:
onePackage- one package- Returns:
- non-null
Set
-
getClassNamesInPackage
@Nonnull @Immutable public java.util.Set<java.lang.String> getClassNamesInPackage(java.lang.String packageName)
Gets class nameSetunder specified package name- Parameters:
packageName- package name- Returns:
- non-null
Set
-
getClassPathToClassNamesMap
@Nonnull @Immutable public java.util.Map<java.lang.String,java.util.Set<java.lang.String>> getClassPathToClassNamesMap()
The map of all class names inclass path, the class path for oneJarFileor classes directory as key , the class names set as value- Returns:
- Read-only
-
getAllClassNamesInClassPaths
@Nonnull @Immutable public java.util.Set<java.lang.String> getAllClassNamesInClassPaths()
The set of all class names inclass path- Returns:
- Read-only
-
getCodeSourceLocation
public java.net.URL getCodeSourceLocation(java.lang.Class<?> type) throws java.lang.NullPointerExceptionGetClass's code source location URL- Parameters:
type-- Returns:
- If , return
null. - Throws:
java.lang.NullPointerException- Iftypeisnull,NullPointerExceptionwill be thrown.
-
-