org.apache.ivy.plugins.repository

## Interface Resource

All Known Subinterfaces:
  LocalizableResource

All Known Implementing Classes:
  BasicResource, BuiltFileResource, FileResource, JarResource, LazyResource, SFTPResource, SshResource, URLResource, VfsResource, VsftpResource

    public interface Resource

Represents a resource in an Ivy `Repository`. The resource interface allows one to obtain the following information about a resource:

- resource name/identifier in repository syntax
- date the resource was last modified.
- size of the resource in bytes.
- if the resource is available.

#### Implementation Notes

In implementing the interface you need to ensure the following behaviors:

- All of the methods specified in the interface fail by returning an empty value ( `false`, `0`, `""`). In other words, the specified interface methods should not throw RuntimeExceptions.
- Failure conditions should be logged using the `Message.verbose(java.lang.String)` method.
- Failure of one of the interface's specified methods results in all other interface specified methods returning an empty value (`false`, `0`, `""`).

### Method Summary

Methods
`Resource` `clone(java.lang.String cloneName)` Clones this resource with a new resource with a different name
`boolean` `exists()` Determine if the resource is available.
`long` `getContentLength()` Get the resource size
`long` `getLastModified()` Get the date the resource was last modified
`java.lang.String` `getName()` Get the name of the resource.
`boolean` `isLocal()` Is this resource local to this host, i.e. is it on the file system?
`java.io.InputStream` `openStream()` Opens a stream on this resource

### Method Detail

#### getName

    java.lang.String getName()

Get the name of the resource.

Returns:
  the repositorie's assigned resource name/identifier.

#### getLastModified

    long getLastModified()

Get the date the resource was last modified

Returns:
  A `long` value representing the time the file was last modified, measured in milliseconds since the epoch (00:00:00 GMT, January 1, 1970), or `0L` if the file does not exist or if an I/O error occurs.

#### getContentLength

    long getContentLength()

Get the resource size

Returns:
  a `long` value representing the size of the resource in bytes.

#### exists

    boolean exists()

Determine if the resource is available. Note that this method only checks for availability, not for actual existence.

Returns:
  `boolean` value indicating if the resource is available.

#### isLocal

    boolean isLocal()

Is this resource local to this host, i.e. is it on the file system?

Returns:
  `boolean` value indicating if the resource is local.

#### clone

    Resource clone(java.lang.String cloneName)

Clones this resource with a new resource with a different name

Parameters:
  `cloneName` - the name of the clone
Returns:
  the cloned resource

#### openStream

    java.io.InputStream openStream()
                                   throws java.io.IOException

Opens a stream on this resource

Returns:
  the opened input stream
Throws:
  `java.io.IOException`