- All Implemented Interfaces:
AsyncResource
,Resource
,AutoCloseable
A Resource
implementation that identifies resources by a URI of the form resource:path/to/resource
and looks up data in a native image.
A typical usage is:
NativeResource resource = new NativeResource(URI.create("resource:path/to/resource"));
...
When running a native image, this is actually equivalent to:
ClasspathResource resource = new ClasspathResource(URI.create("resource:/path/to/resource"));
...
Note that native resources can only be created when running a native image (see ApplicationRuntime.IMAGE_NATIVE
).
- Since:
- 1.0
- Author:
- Jeremy Kuhn
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class io.inverno.mod.base.resource.AbstractAsyncResource
AbstractAsyncResource.EndOfFileException
-
Field Summary
Fields inherited from class io.inverno.mod.base.resource.AbstractAsyncResource
DEFAULT_READ_BUFFER_CAPACITY
Fields inherited from class io.inverno.mod.base.resource.AbstractResource
IS_WINDOWS_PATH
-
Constructor Summary
ConstructorDescriptionNativeResource
(URI uri) Creates a native resource with the specified URI.NativeResource
(URI uri, MediaTypeService mediaTypeService) Creates a native resource with the specified URI and media type service.NativeResource
(URI uri, Class<?> clazz) Creates a native resource with the specified URI that looks up data from the module layer that contains the module of which the specified class is a member.NativeResource
(URI uri, Class<?> clazz, MediaTypeService mediaTypeService) Creates a native resource with the specified URI and media type service that looks up data from the specified class.NativeResource
(URI uri, ClassLoader classLoader) Creates a native resource with the specified URI that looks up data from the specified class loader.NativeResource
(URI uri, ClassLoader classLoader, MediaTypeService mediaTypeService) Creates a native resource with the specified URI and media type service that looks up data from the specified class loader. -
Method Summary
Modifier and TypeMethodDescriptionstatic URI
Checks that the specified URI is a module resource URI.void
close()
boolean
delete()
Deletes the resource.exists()
Determines whether the resource exists.Returns the resource file name.getURI()
Returns the resource URI.isFile()
Determines whether this resource represents a file.Returns the resource last modified time stamp.Opens a readable byte channel to the resource.openWritableByteChannel
(boolean append, boolean createParents) Opens a writable byte channel to the resource that will append or not content to an existing resource and create or not missing parent directories.Resolves the specified URI against the resource URI as defined byPath.resolve(Path)
.size()
Returns the resource content size.Methods inherited from class io.inverno.mod.base.resource.AbstractAsyncResource
getExecutor, read, setExecutor, setReadBufferCapacity, write
Methods inherited from class io.inverno.mod.base.resource.AbstractResource
getMediaType, getMediaTypeService, pathToSanitizedString, setMediaTypeService
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface io.inverno.mod.base.resource.Resource
getMediaType, openWritableByteChannel, openWritableByteChannel, resolve, write, write
-
Field Details
-
SCHEME_RESOURCE
The module resource scheme- See Also:
-
-
Constructor Details
-
NativeResource
Creates a native resource with the specified URI.
- Parameters:
uri
- the resource URI- Throws:
IllegalArgumentException
- if the specified URI does not designate a native resourceIllegalStateException
- if runtime environment is not native
-
NativeResource
public NativeResource(URI uri, Class<?> clazz) throws IllegalArgumentException, IllegalStateException Creates a native resource with the specified URI that looks up data from the module layer that contains the module of which the specified class is a member.
- Parameters:
uri
- the resource URIclazz
- a class- Throws:
IllegalArgumentException
- if the specified URI does not designate a native resourceIllegalStateException
- if runtime environment is not native- See Also:
-
NativeResource
public NativeResource(URI uri, ClassLoader classLoader) throws IllegalArgumentException, IllegalStateException Creates a native resource with the specified URI that looks up data from the specified class loader.
- Parameters:
uri
- the resource URIclassLoader
- a class loader- Throws:
IllegalArgumentException
- if the specified URI does not designate a native resourceIllegalStateException
- if runtime environment is not native- See Also:
-
NativeResource
public NativeResource(URI uri, MediaTypeService mediaTypeService) throws IllegalArgumentException, IllegalStateException Creates a native resource with the specified URI and media type service.
- Parameters:
uri
- the resource URImediaTypeService
- the media type service- Throws:
IllegalArgumentException
- if the specified URI does not designate a native resourceIllegalStateException
- if runtime environment is not native
-
NativeResource
public NativeResource(URI uri, Class<?> clazz, MediaTypeService mediaTypeService) throws IllegalArgumentException, IllegalStateException Creates a native resource with the specified URI and media type service that looks up data from the specified class.
- Parameters:
uri
- the resource URIclazz
- a classmediaTypeService
- a media type service- Throws:
IllegalArgumentException
- if the specified URI does not designate a native resourceIllegalStateException
- if runtime environment is not native
-
NativeResource
public NativeResource(URI uri, ClassLoader classLoader, MediaTypeService mediaTypeService) throws IllegalArgumentException, IllegalStateException Creates a native resource with the specified URI and media type service that looks up data from the specified class loader.
- Parameters:
uri
- the resource URIclassLoader
- a class loadermediaTypeService
- a media type service- Throws:
IllegalArgumentException
- if the specified URI does not designate a native resourceIllegalStateException
- if runtime environment is not native
-
-
Method Details
-
checkUri
Checks that the specified URI is a module resource URI.
- Parameters:
uri
- the uri to check- Returns:
- the uri if it is a module resource URI
- Throws:
IllegalArgumentException
- if the specified URI does not designate a module resourceIllegalStateException
- if runtime environment is not native
-
getURI
Description copied from interface:Resource
Returns the resource URI.
- Returns:
- the resource URI
-
getFilename
Description copied from interface:Resource
Returns the resource file name.
- Returns:
- the resource file name
- Throws:
ResourceException
- if there was an error resolving the resource file name
-
isFile
Description copied from interface:Resource
Determines whether this resource represents a file.
A file resource is a resource that can be accessed through a
FileChannel
.- Returns:
- an optional returning true if the resource is a file, false otherwise or an empty optional if it couldn't be determined
- Throws:
ResourceException
- if there was an error determining whether the resource is a file
-
exists
Description copied from interface:Resource
Determines whether the resource exists.
- Returns:
- an optional returning true if the resource exists, false otherwise or an empty optional if existence couldn't be determined
- Throws:
ResourceException
- if there was an error determining resource existence
-
lastModified
Description copied from interface:Resource
Returns the resource last modified time stamp.
- Returns:
- an optional returning the resource last modified time stamp or an empty optional if it couldn't be determined
- Throws:
ResourceException
- if there was an error resolving resource last modified time stamp
-
size
Description copied from interface:Resource
Returns the resource content size.
- Returns:
- an optional returning the resource content size or an empty optional if it couldn't be determined
- Throws:
ResourceException
- if there was an error resolving resource content size
-
openReadableByteChannel
Description copied from interface:Resource
Opens a readable byte channel to the resource.
The caller is responsible for closing the channel to prevent resource leak.
- Returns:
- an optional returning a readable byte channel or an empty optional if the resource is not readable
- Throws:
ResourceException
- if there was an error opening the readable byte channel
-
openWritableByteChannel
public Optional<WritableByteChannel> openWritableByteChannel(boolean append, boolean createParents) throws ResourceException Description copied from interface:Resource
Opens a writable byte channel to the resource that will append or not content to an existing resource and create or not missing parent directories.
The caller is responsible for closing the channel to prevent resource leak.
- Parameters:
append
- true to append content to an existing resourcecreateParents
- true to create missing parent directories- Returns:
- an optional returning a writable byte channel or an empty optional if the resource is not writable
- Throws:
ResourceException
- if there was an error opening the writable byte channel
-
delete
Description copied from interface:Resource
Deletes the resource.
- Returns:
- true if the resource had been deleted, false otherwise
- Throws:
ResourceException
- if there was an error deleting to the resource
-
resolve
Description copied from interface:Resource
Resolves the specified URI against the resource URI as defined by
Path.resolve(Path)
.- Parameters:
path
- the path to resolve- Returns:
- a new resource resulting from the resolution of the specified path against the resource
- Throws:
ResourceException
- if there was an error resolving the resource
-
close
public void close()
-