Package io.github.fastclasspathscanner
Class Resource
- java.lang.Object
-
- io.github.fastclasspathscanner.Resource
-
- All Implemented Interfaces:
AutoCloseable
,Comparable<Resource>
public abstract class Resource extends Object implements AutoCloseable, Comparable<Resource>
A classpath or module path resource (i.e. file) that was found in a whitelisted/non-blacklisted package inside a classpath element or module.
-
-
Field Summary
Fields Modifier and Type Field Description protected ByteBuffer
byteBuffer
protected InputStream
inputStream
protected long
length
-
Constructor Summary
Constructors Constructor Description Resource()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected byte[]
byteBufferToByteArray()
protected InputStream
byteBufferToInputStream()
void
close()
Close the underlying InputStream, or release/unmap the underlying ByteBuffer.int
compareTo(Resource o)
boolean
equals(Object obj)
long
getLength()
abstract String
getPath()
abstract String
getPathRelativeToClasspathElement()
abstract URL
getURL()
int
hashCode()
protected byte[]
inputStreamToByteArray()
protected ByteBuffer
inputStreamToByteBuffer()
abstract byte[]
load()
Load a classpath resource and return its content as a byte array.abstract InputStream
open()
Open anInputStream
for a classpath resource.abstract ByteBuffer
read()
Open aByteBuffer
for a classpath resource.String
toString()
Return a string representation of the resource's location.protected abstract String
toStringImpl()
-
-
-
Field Detail
-
inputStream
protected InputStream inputStream
-
byteBuffer
protected ByteBuffer byteBuffer
-
length
protected long length
-
-
Method Detail
-
byteBufferToInputStream
protected InputStream byteBufferToInputStream()
-
inputStreamToByteBuffer
protected ByteBuffer inputStreamToByteBuffer() throws IOException
- Throws:
IOException
-
inputStreamToByteArray
protected byte[] inputStreamToByteArray() throws IOException
- Throws:
IOException
-
byteBufferToByteArray
protected byte[] byteBufferToByteArray()
-
getPath
public abstract String getPath()
- Returns:
- the path of this classpath resource relative to the package root within the classpath element. For example, for a resource path of "BOOT-INF/classes/com/xyz/resource.xml" and a package root of "BOOT-INF/classes/", returns "com/xyz/resource.xml".
-
getPathRelativeToClasspathElement
public abstract String getPathRelativeToClasspathElement()
- Returns:
- the path of this classpath resource within the classpath element. For example, for a resource path of "BOOT-INF/classes/com/xyz/resource.xml", returns "BOOT-INF/classes/com/xyz/resource.xml", even if the package root is "BOOT-INF/classes/".
-
getURL
public abstract URL getURL()
- Returns:
- A URL representing the resource's location. May point to a temporary file that FastClasspathScanner extracted an inner jar or directory to, or downloaded a remote jar to. You may or may not be able to fetch content from the URL.
- Throws:
IllegalArgumentException
- if aMalformedURLException
occurred while trying to construct the URL.
-
open
public abstract InputStream open() throws IOException
Open anInputStream
for a classpath resource. Make sure you callclose()
when you are finished with theInputStream
, so that theInputStream
is closed.- Returns:
- The opened
InputStream
. - Throws:
IOException
- If theInputStream
could not be opened.
-
read
public abstract ByteBuffer read() throws IOException
Open aByteBuffer
for a classpath resource. Make sure you callclose()
when you are finished with theByteBuffer
, so that theByteBuffer
is released or unmapped.- Returns:
- The allocated or mapped
ByteBuffer
for the resource file content. - Throws:
IOException
- If the resource could not be opened.
-
load
public abstract byte[] load() throws IOException
Load a classpath resource and return its content as a byte array. Automatically callsclose()
after loading the byte array and before returning it, so that the underlying InputStream is closed or the underlying ByteBuffer is released or unmapped.- Returns:
- The contents of the resource file.
- Throws:
IOException
- If the file contents could not be loaded in their entirety.
-
getLength
public long getLength()
- Returns:
- The length of the resource. This only reliably returns a valid value after calling
open()
,read()
, orload()
, and foropen()
, only if the underlying jarfile has length information for correspondingZipEntry
(some jarfiles may not have length information in their zip entries). Returns -1L if the length is unknown.
-
toStringImpl
protected abstract String toStringImpl()
-
toString
public String toString()
Return a string representation of the resource's location.
-
compareTo
public int compareTo(Resource o)
- Specified by:
compareTo
in interfaceComparable<Resource>
-
close
public void close()
Close the underlying InputStream, or release/unmap the underlying ByteBuffer.- Specified by:
close
in interfaceAutoCloseable
-
-