Package org.apache.tapestry5.ioc.internal.util

# Class AbstractResource

java.lang.Object
org.apache.tapestry5.commons.internal.util.LockSupport
org.apache.tapestry5.ioc.internal.util.AbstractResource

All Implemented Interfaces:
  `Resource`

Direct Known Subclasses:
  `ClasspathResource`, `ContextResource`

public abstract class AbstractResource extends LockSupport implements Resource
Abstract implementation of `Resource`. Subclasses must implement the abstract methods `Resource.toURL()` and `newResource(String)` as well as toString(), hashCode() and equals().

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `AbstractResource(String path)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `exists()`
  Simple check for whether `Resource.toURL()` returns null or not.
  `final Resource`
  `forFile(String relativePath)`
  Returns a Resource based on a relative path, relative to the folder containing the resource.
  `final Resource`
  `forLocale(Locale locale)`
  Returns a localized version of the resource.
  `final String`
  `getFile()`
  Returns the file portion of the Resource path, everything that follows the final forward slash.
  `final String`
  `getFolder()`
  Returns the portion of the path up to the last forward slash; this is the directory or folder portion of the Resource.
  `final String`
  `getPath()`
  Return the path (the combination of folder and file).
  `boolean`
  `isVirtual()`
  Returns true if the resource is virtual, meaning this is no underlying file.
  `protected abstract Resource`
  `newResource(String path)`
  Factory method provided by subclasses.
  `InputStream`
  `openStream()`
  Obtains the URL for the Resource and opens the stream, wrapped by a BufferedInputStream.
  `protected void`
  `validateURL(URL url)`
  Validates that the URL is correct; at this time, a correct URL is one of: null a non-file: URL a file: URL where the case of the file matches the corresponding path element See TAP5-1007
  `final Resource`
  `withExtension(String extension)`
  Returns a new Resource with the extension changed (or, if the resource does not have an extension, the extension is added).

  ### Methods inherited from class org.apache.tapestry5.commons.internal.util.LockSupport

  `acquireReadLock, downgradeWriteLockToReadLock, releaseReadLock, releaseWriteLock, takeWriteLock, upgradeReadLockToWriteLock`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

  ### Methods inherited from interface org.apache.tapestry5.commons.Resource

  `toURL`

- ## Constructor Details

  - ### AbstractResource

    protected AbstractResource(String path)

- ## Method Details

  - ### getPath

    public final String getPath()
    Description copied from interface: `Resource`
    Return the path (the combination of folder and file). Starting in 5.4, certain "virtual resources", may return an arbitrary value here.
    Specified by:
      `getPath` in interface `Resource`

  - ### getFile

    public final String getFile()
    Description copied from interface: `Resource`
    Returns the file portion of the Resource path, everything that follows the final forward slash. Starting in 5.4, certain kinds of "virtual resources" may return null here.
    Specified by:
      `getFile` in interface `Resource`

  - ### getFolder

    public final String getFolder()
    Description copied from interface: `Resource`
    Returns the portion of the path up to the last forward slash; this is the directory or folder portion of the Resource.
    Specified by:
      `getFolder` in interface `Resource`

  - ### forFile

    public final Resource forFile(String relativePath)
    Description copied from interface: `Resource`
    Returns a Resource based on a relative path, relative to the folder containing the resource. Understands the "." (current folder) and ".." (parent folder) conventions, and treats multiple sequential slashes as a single slash. Virtual resources (resources fabricated at runtime) return themselves.
    Specified by:
      `forFile` in interface `Resource`

  - ### forLocale

    public final Resource forLocale(Locale locale)
    Description copied from interface: `Resource`
    Returns a localized version of the resource. May return null if no such resource exists. Starting in release 5.3.4, the result of this method is cached internally.
    Specified by:
      `forLocale` in interface `Resource`

  - ### withExtension

    public final Resource withExtension(String extension)
    Description copied from interface: `Resource`
    Returns a new Resource with the extension changed (or, if the resource does not have an extension, the extension is added). The new Resource may not exist (that is, `Resource.toURL()` may return null.
    Specified by:
      `withExtension` in interface `Resource`
    Parameters:
      `extension` - to apply to the resource, such as "html" or "properties"
    Returns:
      the new resource

  - ### exists

    public boolean exists()
    Simple check for whether `Resource.toURL()` returns null or not.
    Specified by:
      `exists` in interface `Resource`
    Returns:
      true if the resource exists, false if it does not

  - ### openStream

    public InputStream openStream() throws IOException
    Obtains the URL for the Resource and opens the stream, wrapped by a BufferedInputStream.
    Specified by:
      `openStream` in interface `Resource`
    Returns:
      an open, buffered stream to the content, if available
    Throws:
      `IOException`

  - ### newResource

    protected abstract Resource newResource(String path)
    Factory method provided by subclasses.

  - ### validateURL

    protected void validateURL(URL url)
    Validates that the URL is correct; at this time, a correct URL is one of:
    - null
    - a non-file: URL
    - a file: URL where the case of the file matches the corresponding path element
    See TAP5-1007
    Parameters:
      `url` - to validate
    Since:
      5.4

  - ### isVirtual

    public boolean isVirtual()
    Description copied from interface: `Resource`
    Returns true if the resource is virtual, meaning this is no underlying file. Many operations are unsupported on virtual resources, including `Resource.toURL()`, `Resource.forLocale(java.util.Locale)`, `Resource.withExtension(String)`, `Resource.getFile()`, `Resource.getFolder()`, `Resource.getPath()`}; these operations will throw an `UnsupportedOperationException`.
    Specified by:
      `isVirtual` in interface `Resource`