Package aQute.bnd.osgi
Class ActivelyClosingClassLoader
- java.lang.Object
-
- java.lang.ClassLoader
-
- java.security.SecureClassLoader
-
- java.net.URLClassLoader
-
- aQute.bnd.osgi.ActivelyClosingClassLoader
-
- All Implemented Interfaces:
java.io.Closeable
,java.lang.AutoCloseable
- Direct Known Subclasses:
Processor.CL
class ActivelyClosingClassLoader extends java.net.URLClassLoader implements java.io.Closeable
This class loader can load classes from JAR files.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) class
ActivelyClosingClassLoader.Wrapper
-
Field Summary
Fields Modifier and Type Field Description (package private) java.util.concurrent.atomic.AtomicBoolean
open
(package private) Processor
processor
(package private) java.util.concurrent.ScheduledFuture<?>
schedule
(package private) java.util.concurrent.atomic.AtomicReference<java.util.Map<java.io.File,ActivelyClosingClassLoader.Wrapper>>
wrappers
-
Constructor Summary
Constructors Constructor Description ActivelyClosingClassLoader(Processor processor, java.lang.ClassLoader parent)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) void
add(java.io.File file)
(package private) void
autopurge(long freshPeriod)
void
close()
private java.net.URL
createURL(java.lang.String name, byte[] data)
private java.util.stream.Stream<byte[]>
dataStream(java.lang.String name)
protected java.lang.Class<?>
findClass(java.lang.String name)
java.net.URL
findResource(java.lang.String name)
java.util.Enumeration<java.net.URL>
findResources(java.lang.String name)
(package private) java.util.List<java.io.File>
getFiles()
java.lang.Class<?>
loadClass(java.lang.String name)
(package private) void
purge(long purgeTime)
This method will close any open files that have not been accessed since purgeTime-
Methods inherited from class java.net.URLClassLoader
addURL, definePackage, getPermissions, getResourceAsStream, getURLs, newInstance, newInstance
-
Methods inherited from class java.lang.ClassLoader
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findClass, findLibrary, findLoadedClass, findResource, findSystemClass, getClassLoadingLock, getDefinedPackage, getDefinedPackages, getName, getPackage, getPackages, getParent, getPlatformClassLoader, getResource, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, getUnnamedModule, isRegisteredAsParallelCapable, loadClass, registerAsParallelCapable, resolveClass, resources, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
-
-
-
-
Field Detail
-
wrappers
final java.util.concurrent.atomic.AtomicReference<java.util.Map<java.io.File,ActivelyClosingClassLoader.Wrapper>> wrappers
-
open
final java.util.concurrent.atomic.AtomicBoolean open
-
processor
final Processor processor
-
schedule
java.util.concurrent.ScheduledFuture<?> schedule
-
-
Constructor Detail
-
ActivelyClosingClassLoader
ActivelyClosingClassLoader(Processor processor, java.lang.ClassLoader parent)
-
-
Method Detail
-
add
void add(java.io.File file)
-
findClass
protected java.lang.Class<?> findClass(java.lang.String name) throws java.lang.ClassNotFoundException
- Overrides:
findClass
in classjava.net.URLClassLoader
- Throws:
java.lang.ClassNotFoundException
-
findResource
public java.net.URL findResource(java.lang.String name)
- Overrides:
findResource
in classjava.net.URLClassLoader
-
dataStream
private java.util.stream.Stream<byte[]> dataStream(java.lang.String name)
-
createURL
private java.net.URL createURL(java.lang.String name, byte[] data)
-
findResources
public java.util.Enumeration<java.net.URL> findResources(java.lang.String name)
- Overrides:
findResources
in classjava.net.URLClassLoader
-
purge
void purge(long purgeTime)
This method will close any open files that have not been accessed since purgeTime- Parameters:
purgeTime
- the absolute cutoff time
-
close
public void close()
- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.io.Closeable
- Overrides:
close
in classjava.net.URLClassLoader
-
getFiles
java.util.List<java.io.File> getFiles()
-
loadClass
public java.lang.Class<?> loadClass(java.lang.String name) throws java.lang.ClassNotFoundException
- Overrides:
loadClass
in classjava.lang.ClassLoader
- Throws:
java.lang.ClassNotFoundException
-
autopurge
void autopurge(long freshPeriod)
-
-