Package io.github.classgraph
Class Resource
- java.lang.Object
-
- io.github.classgraph.Resource
-
- All Implemented Interfaces:
Closeable
,AutoCloseable
,Comparable<Resource>
public abstract class Resource extends Object implements Closeable, 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.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected class
Resource.InputStreamResourceCloser
Class for closing the parentResource
when anInputStream
opened on the resource is closed.
-
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()
abstract void
close()
Close the underlying InputStream, or release/unmap the underlying ByteBuffer.int
compareTo(Resource o)
boolean
equals(Object obj)
abstract File
getClasspathElementFile()
abstract URL
getClasspathElementURL()
long
getLength()
abstract ModuleRef
getModuleRef()
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". Also drops version prefixes for multi-version jars, for example for a resource path of "META-INF/versions/11/com/xyz/resource.xml" while running on JDK 11+, returns "com/xyz/resource.xml".
-
getPathRelativeToClasspathElement
public abstract String getPathRelativeToClasspathElement()
- Returns:
- the full path of this classpath resource within the classpath element (see JarEntry::getRealPath). For example, will return the full path of "BOOT-INF/classes/com/xyz/resource.xml" or "META-INF/versions/11/com/xyz/resource.xml", not "com/xyz/resource.xml".
-
getURL
public abstract URL getURL()
- Returns:
- A URL representing the resource's location. May point to a temporary file that ClassGraph 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.
-
getClasspathElementURL
public abstract URL getClasspathElementURL()
- Returns:
- The URL of the classpath element that this class was found within.
-
getClasspathElementFile
public abstract File getClasspathElementFile()
- Returns:
- The
File
for the classpath element package root dir or jar that this was found within, or null if thisResource
was found in a module. (See alsogetModuleRef()
.)
-
getModuleRef
public abstract ModuleRef getModuleRef()
- Returns:
- The module in the module path that this
Resource
was found within, as aModuleRef
, or null if thisResource
was found in a directory or jar in the classpath. (See alsogetClasspathElementFile()
.)
-
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 abstract void close()
Close the underlying InputStream, or release/unmap the underlying ByteBuffer.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
-
-