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 protectedSentinelInputStream(InputStream in)Constructs new FilteredInputStream which reports InputStreams not closed properly.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()Closes underlying input stream.protected voidfinalize()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 finalizer. 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 IOExceptionCloses underlying input stream.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Overrides:
closein classFilterInputStream- Throws:
IOException
-
finalize
protected void finalize() throws ThrowableInvoked 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.
-
-