Package com.sun.enterprise.loader
Class ASURLClassLoader.SentinelInputStream
- java.lang.Object
-
- java.io.InputStream
-
- java.io.FilterInputStream
-
- com.sun.enterprise.loader.ASURLClassLoader.SentinelInputStream
-
- All Implemented Interfaces:
Closeable
,AutoCloseable
- Enclosing class:
- ASURLClassLoader
protected final class ASURLClassLoader.SentinelInputStream extends FilterInputStream
Wraps all InputStreams returned by this class loader to report when a finalizer is run before the stream has been closed. This helps to identify where locked files could arise.- Author:
- vtsyganok, tjquinn
-
-
Field Summary
-
Fields inherited from class java.io.FilterInputStream
in
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
SentinelInputStream(InputStream in)
Constructs new FilteredInputStream which reports InputStreams not closed properly.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close()
Closes underlying input stream.void
registerStopEvent()
Callback invoked by Garbage Collector.-
Methods inherited from class java.io.FilterInputStream
available, mark, markSupported, read, read, read, reset, skip
-
Methods inherited from class java.io.InputStream
nullInputStream, readAllBytes, readNBytes, readNBytes, transferTo
-
-
-
-
Constructor Detail
-
SentinelInputStream
protected SentinelInputStream(InputStream in)
Constructs new FilteredInputStream which reports InputStreams not closed properly. When the garbage collector runs the cleaner. If the stream is still open this class will report a stack trace showing where the stream was opened.- Parameters:
in
- - InputStream to be wrapped
-
-
Method Detail
-
close
public void close() throws IOException
Closes underlying input stream.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Overrides:
close
in classFilterInputStream
- Throws:
IOException
-
registerStopEvent
public final void registerStopEvent()
Callback invoked by Garbage Collector. If underlying InputStream was not closed properly, the stack trace of the constructor will be logged! 'closed' is 'volatile', but it's a race condition to check it and how this code relates to _close() is unclear.
-
-