public class ClassCache
extends java.lang.Object
implements java.io.Serializable
| Modifier and Type | Class and Description |
|---|---|
static class |
ClassCache.Listener
For listening to the class traversal and populating the caches.
|
| Modifier and Type | Field and Description |
|---|---|
protected java.util.Set<java.lang.String> |
m_AbstractClasses
cache for abstract classes.
|
protected java.util.regex.Pattern |
m_AnonymousCheck
for checking whether an anonymous class.
|
protected java.util.Map<java.net.URL,java.util.Set<java.lang.String>> |
m_ClasspathPartCache
the classpath path part cache (classpath part <-> set with classnames).
|
protected java.util.logging.Logger |
m_Logger
the logger in use.
|
protected java.util.Map<java.lang.String,java.util.Set<java.lang.String>> |
m_NameCache
for caching all classes on the class path (package-name <-> Set with classnames).
|
static java.lang.String |
PATTERN_ANONYMOUS
the regexp pattern for identifying anonymous classes.
|
| Constructor and Description |
|---|
ClassCache()
Initializes the cache.
|
ClassCache(ClassTraversal traversal)
Initializes the cache.
|
| Modifier and Type | Method and Description |
|---|---|
java.util.Iterator<java.net.URL> |
classpathParts()
Returns all the stored classpath parts.
|
java.util.Iterator<java.net.URL> |
classpathParts(java.lang.String regexp)
Returns all the stored classpath parts that match the provided regular expression.
|
java.util.List<java.net.URL> |
classpathPartsForClass(java.lang.Class cls)
Returns the classpath parts that contain the specified class (eg to find duplicates).
|
java.util.List<java.net.URL> |
classpathPartsForClass(java.lang.String classname)
Returns the classpath parts that contain the specified class (eg to find duplicates).
|
java.util.Set<java.lang.String> |
getClassnames(java.lang.String pkgname)
Returns all the classes for the given package.
|
java.util.Set<java.lang.String> |
getClassnames(java.lang.String pkgname,
boolean excludeAbstract)
Returns all the classes for the given package.
|
java.util.Set<java.lang.String> |
getClassnames(java.net.URL part)
Returns all the classes for the given classpath part.
|
java.util.Set<java.lang.String> |
getClassnames(java.net.URL part,
boolean excludeAbstract)
Returns all the classes for the given classpath part.
|
java.util.logging.Logger |
getLogger()
Returns the logger in use.
|
protected void |
initialize(ClassTraversal traversal)
Initializes the cache.
|
boolean |
isAbstract(java.lang.String classname)
Returns whether the class has been flagged as abstract.
|
boolean |
isAnonymous(java.lang.String classname)
Returns whether the class is an anonymous one ("...$X" with X being a number).
|
boolean |
isEmpty()
Returns whether the cache is empty.
|
boolean |
isLoggingEnabled()
Returns whether logging is enabled.
|
static void |
main(java.lang.String[] args)
For testing only.
|
java.util.Iterator<java.lang.String> |
packages()
Returns all the stored packages.
|
java.util.Iterator<java.lang.String> |
packages(java.lang.String regexp)
Returns all the stored packages that match the provided regular expression.
|
boolean |
remove(java.lang.String classname)
Removes the classname from the cache.
|
void |
setAbstract(java.lang.String classname,
boolean value)
Flags or clears a class as being abstract.
|
public static final java.lang.String PATTERN_ANONYMOUS
protected transient java.util.logging.Logger m_Logger
protected java.util.Map<java.lang.String,java.util.Set<java.lang.String>> m_NameCache
protected java.util.Map<java.net.URL,java.util.Set<java.lang.String>> m_ClasspathPartCache
protected java.util.Set<java.lang.String> m_AbstractClasses
protected java.util.regex.Pattern m_AnonymousCheck
public ClassCache()
ClassPathTraversal class.public ClassCache(ClassTraversal traversal)
traversal - the traversal instance to use, can be nullprotected void initialize(ClassTraversal traversal)
public boolean isLoggingEnabled()
public java.util.logging.Logger getLogger()
public boolean remove(java.lang.String classname)
classname - the classname to removepublic void setAbstract(java.lang.String classname,
boolean value)
classname - the classvalue - whether to flag as abstract or clearpublic boolean isAbstract(java.lang.String classname)
classname - the classpublic boolean isAnonymous(java.lang.String classname)
classname - public java.util.Iterator<java.lang.String> packages()
public java.util.Iterator<java.lang.String> packages(java.lang.String regexp)
regexp - the regular expression that the package names must matchpublic java.util.Set<java.lang.String> getClassnames(java.lang.String pkgname)
pkgname - the package to get the classes forpublic java.util.Set<java.lang.String> getClassnames(java.lang.String pkgname,
boolean excludeAbstract)
pkgname - the package to get the classes forexcludeAbstract - whether to exclude abstract classespublic java.util.Iterator<java.net.URL> classpathParts()
public java.util.Iterator<java.net.URL> classpathParts(java.lang.String regexp)
regexp - the regular expression that the URLs must matchpublic java.util.List<java.net.URL> classpathPartsForClass(java.lang.Class cls)
cls - the class to look forpublic java.util.List<java.net.URL> classpathPartsForClass(java.lang.String classname)
classname - the class to look forpublic java.util.Set<java.lang.String> getClassnames(java.net.URL part)
part - the classpath part to get the classes forpublic java.util.Set<java.lang.String> getClassnames(java.net.URL part,
boolean excludeAbstract)
part - the classpath part to get the classes forexcludeAbstract - whether to exclude abstract classespublic boolean isEmpty()
public static void main(java.lang.String[] args)
args - ignoredCopyright © 2021 University of Waikato, Hamilton, NZ. All Rights Reserved.