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 ClassDataRepository
INSTANCE
Singleton instance ofClassDataRepository
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.String
findClassPath(java.lang.Class<?> type)
Find class path under specified class namejava.lang.String
findClassPath(java.lang.String className)
Find class path under specified class namejava.util.Set<java.lang.String>
getAllClassNamesInClassPaths()
The set of all class names inclass path
java.util.Set<java.lang.String>
getAllPackageNamesInClassPaths()
Get all package names inclass paths
java.util.Set<java.lang.String>
getClassNamesInClassPath(java.lang.String classPath, boolean recursive)
Gets class nameSet
under specified class pathjava.util.Set<java.lang.String>
getClassNamesInPackage(java.lang.Package onePackage)
Gets class nameSet
under specified packagejava.util.Set<java.lang.String>
getClassNamesInPackage(java.lang.String packageName)
Gets class nameSet
under 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 oneJarFile
or classes directory as key , the class names set as valuejava.net.URL
getCodeSourceLocation(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 nameSet
under 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 nameSet
under 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 nameSet
under 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 oneJarFile
or 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.NullPointerException
GetClass
's code source location URL- Parameters:
type
-- Returns:
- If , return
null
. - Throws:
java.lang.NullPointerException
- Iftype
isnull
,NullPointerException
will be thrown.
-
-