Package org.jboss.modules

# Interface ResourceLoader

All Superinterfaces:
  `AutoCloseable`

All Known Subinterfaces:
  `IterableResourceLoader`

All Known Implementing Classes:
  `AbstractResourceLoader`, `NativeLibraryResourceLoader`

public interface ResourceLoader extends AutoCloseable
A loader for resources from a specific resource root within a module.

Author:
  David M. Lloyd, Richard Opalka

## Method Summary

Modifier and Type
Method
Description
`default void`
`close()`
Closes this resource, relinquishing any underlying resources.
`default ResourceLoader`
`createSubloader(String relativePath, String rootName)`
Create a loader which loads resources under a relative subdirectory relative to this loader.
`ClassSpec`
`getClassSpec(String fileName)`
Get the class specification for the given class name.
`String`
`getLibrary(String name)`
Get the absolute physical filesystem path for a library with the given name.
`default URI`
`getLocation()`
Get the base location of the resources in this loader (if any).
`PackageSpec`
`getPackageSpec(String name)`
Get the package specification for the given directory name.
`Collection<String>`
`getPaths()`
Get the collection of resource paths.
`Resource`
`getResource(String name)`
Get a resource with the given name.
`default String`
`getRootName()`
Deprecated.

## Method Details

### getRootName

@Deprecated default String getRootName()
Deprecated.
Get the name of the root represented by this resource loader.

Returns:
  the name of the root

### getClassSpec

ClassSpec getClassSpec(String fileName) throws IOException
Get the class specification for the given class name. If no matching class is found, `null` is returned.

Parameters:
  `fileName` - the fileName of the class, e.g. for the class `org.jboss.modules.ResourceLoader` the fileName will be `org/jboss/modules/ResourceLoader.class`
Returns:
  the class specification, or `null` if the named class is not found
Throws:
  `IOException` - if an I/O error occurs

### getPackageSpec

PackageSpec getPackageSpec(String name) throws IOException
Get the package specification for the given directory name. Always returns a package specification; this method cannot be used to test for the existence of a package. A package spec should always be acquired from the same resource loader which provided the class specification. The directory name will always be specified using "`/`" separators.

Parameters:
  `name` - the directory name
Returns:
  the package specification
Throws:
  `IOException` - if an I/O error occurs

### getResource

Resource getResource(String name)
Get a resource with the given name. If no such resource is available, `null` is returned. The resource name will always be specified using "`/`" separators for the directory segments.

Parameters:
  `name` - the resource name
Returns:
  the resource, or `null` if it is not available

### getLibrary

String getLibrary(String name)
Get the absolute physical filesystem path for a library with the given name. The resultant path should be path-separated using "`/`" characters.

Parameters:
  `name` - the name
Returns:
  the path or `null` if the library is not present

### getPaths

Collection<String> getPaths()
Get the collection of resource paths. Called one time only when the resource loader is initialized. The paths should use "`/`" characters to separate the path segments.

Returns:
  the resource paths

### close

default void close()
Closes this resource, relinquishing any underlying resources. This method is invoked automatically on objects managed by the `try`-with-resources statement.

Specified by:
  `close` in interface `AutoCloseable`

### getLocation

default URI getLocation()
Get the base location of the resources in this loader (if any). If the location is not known, or the resource loader does not support locations, or the resource loader does not support this method, `null` is returned.

Returns:
  the base location of the resources in this loader, or `null` if not available

### createSubloader

default ResourceLoader createSubloader(String relativePath, String rootName)
Create a loader which loads resources under a relative subdirectory relative to this loader. If the resource loader does not support subloaders, `null` is returned.

Parameters:
  `relativePath` - the relative path
  `rootName` - the name of the subloader's root
Returns:
  the resource loader, or `null` if subloaders are not supported