WebResourceSet (Apache Tomcat 9.0.111 API Documentation)
Description: declaration: package: org.apache.catalina, interface: WebResourceSet

# Interface WebResourceSet

All Superinterfaces:
  `Lifecycle`

All Known Implementing Classes:
  `AbstractArchiveResourceSet, AbstractFileResourceSet, AbstractResourceSet, AbstractSingleArchiveResourceSet, DirResourceSet, EmptyResourceSet, FileResourceSet, JarResourceSet, JarWarResourceSet, WarResourceSet`

public interface WebResourceSet extends Lifecycle
Represents a set of resources that are part of a web application. Examples include a directory structure, a resources JAR and a WAR file.

- ## Nested Class Summary

  ### Nested classes/interfaces inherited from interface Lifecycle

  `Lifecycle.SingleUse`

- ## Field Summary

  ### Fields inherited from interface Lifecycle

  `AFTER_DESTROY_EVENT, AFTER_INIT_EVENT, AFTER_START_EVENT, AFTER_STOP_EVENT, BEFORE_DESTROY_EVENT, BEFORE_INIT_EVENT, BEFORE_START_EVENT, BEFORE_STOP_EVENT, CONFIGURE_START_EVENT, CONFIGURE_STOP_EVENT, PERIODIC_EVENT, START_EVENT, STOP_EVENT`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `gc()`
  Implementations may cache some information to improve performance.
  `boolean`
  `getAllowLinking()`
  Determine if this `ResourceSet` allows the use of symbolic links.
  `URL`
  `getBaseUrl()`
  Obtain the base URL for this set of resources.
  `boolean`
  `getClassLoaderOnly()`
  Should resources returned by this resource set only be included in any results when the lookup is explicitly looking for class loader resources. i.e. should these resources be excluded from look ups that are explicitly looking for static (non-class loader) resources.
  `WebResource`
  `getResource(String path)`
  Obtain the object that represents the resource at the given path.
  `boolean`
  `getStaticOnly()`
  Should resources returned by this resource set only be included in any results when the lookup is explicitly looking for static (non-class loader) resources. i.e. should these resources be excluded from look ups that are explicitly looking for class loader resources.
  `boolean`
  `isReadOnly()`
  Obtains the current value of the read-only setting for this set of resources.
  `String[]`
  `list(String path)`
  Obtain the list of the names of all of the files and directories located in the specified directory.
  `Set<String>`
  `listWebAppPaths(String path)`
  Obtain the Set of the web applications pathnames of all of the files and directories located in the specified directory.
  `boolean`
  `mkdir(String path)`
  Create a new directory at the given path.
  `void`
  `setAllowLinking(boolean allowLinking)`
  Configure if this `ResourceSet` allows the use of symbolic links.
  `void`
  `setClassLoaderOnly(boolean classLoaderOnly)`
  `void`
  `setReadOnly(boolean readOnly)`
  Configures whether or not this set of resources is read-only.
  `void`
  `setRoot(WebResourceRoot root)`
  `void`
  `setStaticOnly(boolean staticOnly)`
  `boolean`
  `write(String path, InputStream is, boolean overwrite)`
  Create a new resource at the requested path using the provided InputStream.

  ### Methods inherited from interface Lifecycle

  `addLifecycleListener, destroy, findLifecycleListeners, getState, getStateName, init, removeLifecycleListener, start, stop`

- ## Method Details

  - ### getResource

    WebResource getResource(String path)
    Obtain the object that represents the resource at the given path. Note the resource at that path may not exist.
    Parameters:
      `path` - The path for the resource of interest relative to the root of the web application. It must start with '/'.
    Returns:
      The object that represents the resource at the given path

  - ### list

    String[] list(String path)
    Obtain the list of the names of all of the files and directories located in the specified directory.
    Parameters:
      `path` - The path for the resource of interest relative to the root of the web application. It must start with '/'.
    Returns:
      The list of resources. If path does not refer to a directory then a zero length array will be returned.

  - ### listWebAppPaths

    Set<String> listWebAppPaths(String path)
    Obtain the Set of the web applications pathnames of all of the files and directories located in the specified directory. Paths representing directories will end with a "/" character.
    Parameters:
      `path` - The path for the resource of interest relative to the root of the web application. It must start with '/'.
    Returns:
      The Set of resources. If path does not refer to a directory then an empty set will be returned.

  - ### mkdir

    boolean mkdir(String path)
    Create a new directory at the given path.
    Parameters:
      `path` - The path for the new resource to create relative to the root of the web application. It must start with '/'.
    Returns:
      `true` if the directory was created, otherwise `false`

  - ### write

    boolean write(String path, InputStream is, boolean overwrite)
    Create a new resource at the requested path using the provided InputStream.
    Parameters:
      `path` - The path to be used for the new Resource. It is relative to the root of the web application and must start with '/'.
      `is` - The InputStream that will provide the content for the new Resource.
      `overwrite` - If `true` and the resource already exists it will be overwritten. If `false` and the resource already exists the write will fail.
    Returns:
      `true` if and only if the new Resource is written

  - ### setRoot

    void setRoot(WebResourceRoot root)

  - ### getClassLoaderOnly

    boolean getClassLoaderOnly()
    Should resources returned by this resource set only be included in any results when the lookup is explicitly looking for class loader resources. i.e. should these resources be excluded from look ups that are explicitly looking for static (non-class loader) resources.
    Returns:
      `true` if these resources should only be used for class loader resource lookups, otherwise `false`

  - ### setClassLoaderOnly

    void setClassLoaderOnly(boolean classLoaderOnly)

  - ### getStaticOnly

    boolean getStaticOnly()
    Should resources returned by this resource set only be included in any results when the lookup is explicitly looking for static (non-class loader) resources. i.e. should these resources be excluded from look ups that are explicitly looking for class loader resources.
    Returns:
      `true` if these resources should only be used for static (non-class loader) resource lookups, otherwise `false`

  - ### setStaticOnly

    void setStaticOnly(boolean staticOnly)

  - ### getBaseUrl

    URL getBaseUrl()
    Obtain the base URL for this set of resources. One of the uses of this is to grant read permissions to the resources when running under a security manager.
    Returns:
      The base URL for this set of resources

  - ### setReadOnly

    void setReadOnly(boolean readOnly)
    Configures whether or not this set of resources is read-only.
    Parameters:
      `readOnly` - `true` if this set of resources should be configured to be read-only
    Throws:
      `IllegalArgumentException` - if an attempt is made to configure a `WebResourceSet` that is hard-coded to be read-only as writable

  - ### isReadOnly

    boolean isReadOnly()
    Obtains the current value of the read-only setting for this set of resources.
    Returns:
      `true` if this set of resources is configured to be read-only, otherwise `false`

  - ### gc

    void gc()
    Implementations may cache some information to improve performance. This method triggers the clean-up of those resources.

  - ### setAllowLinking

    void setAllowLinking(boolean allowLinking)
    Configure if this `ResourceSet` allows the use of symbolic links.
    Parameters:
      `allowLinking` - `true` if symbolic links are allowed.

  - ### getAllowLinking

    boolean getAllowLinking()
    Determine if this `ResourceSet` allows the use of symbolic links. If `setAllowLinking(boolean)` has not been called for this instance, the value of `WebResourceRoot.getAllowLinking()` is returned.
    Returns:
      `true` if symbolic links are allowed