SshRepository
Date: 2014-12-13

org.apache.ivy.plugins.repository.ssh

## Class SshRepository

- java.lang.Object
- - org.apache.ivy.plugins.repository.AbstractRepository
  - - org.apache.ivy.plugins.repository.ssh.AbstractSshBasedRepository
    - - org.apache.ivy.plugins.repository.ssh.SshRepository

- All Implemented Interfaces:
    Repository

      public class SshRepository
      extends AbstractSshBasedRepository

  Ivy Repository based on SSH

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `SshRepository()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `get(java.lang.String source, java.io.File destination)` Fetch a resource from the repository.
    `java.lang.String` | `getCreateDirCommand()`
    `java.lang.String` | `getExistCommand()`
    `java.lang.String` | `getListCommand()`
    `protected java.lang.String` | `getRepositoryScheme()` return ssh as scheme use the Resolver type name here?
    `Resource` | `getResource(java.lang.String source)` create a new resource with lazy initializing
    `java.util.List` | `list(java.lang.String parent)` Return a listing of resources names
    `java.io.InputStream` | `openStream(SshResource resource)` Not really streaming...need to implement a proper streaming approach?
    `void` | `put(java.io.File source, java.lang.String destination, boolean overwrite)`
    `SshResource` | `resolveResource(java.lang.String source)` Fetch the needed file information for a given file (size, last modification time) and report it back in a SshResource
    `void` | `setCreateDirCommand(java.lang.String createDirCommand)`
    `void` | `setExistCommand(java.lang.String existCommand)`
    `void` | `setFileSeparator(char fileSeparator)` The file separator is the separator to use on the target system On a unix system it is '/', but I don't know, how this is solved on different ssh implementations.
    `void` | `setListCommand(java.lang.String cmd)` sets the list command to use for a directory listing listing must be only the filename and each filename on a separate line
    `void` | `setPublishPermissions(java.lang.String permissions)` A four digit string (e.g., 0644, see "man chmod", "man open") specifying the permissions of the published files.

    - ### Methods inherited from class org.apache.ivy.plugins.repository.ssh.AbstractSshBasedRepository

      `getHost, getKeyFile, getKeyFilePassword, getPassFile, getPort, getSession, getUser, getUserPassword, isAllowedAgentUse, releaseSession, setAllowedAgentUse, setHost, setKeyFile, setKeyFilePassword, setPassFile, setPort, setUser, setUserPassword`

    - ### Methods inherited from class org.apache.ivy.plugins.repository.AbstractRepository

      `addTransferListener, fireTransferCompleted, fireTransferCompleted, fireTransferError, fireTransferError, fireTransferEvent, fireTransferInitiated, fireTransferProgress, fireTransferStarted, fireTransferStarted, getFileSeparator, getName, hasTransferListener, put, removeTransferListener, setName, standardize, toString`

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

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

- - ### Constructor Detail

    - #### SshRepository

          public SshRepository()

  - ### Method Detail

    - #### getResource

          public Resource getResource(java.lang.String source)

      create a new resource with lazy initializing
      Parameters:
        `source` - A string identifying the resource.
      Returns:
        The resource associated with the resource identifier.

    - #### resolveResource

          public SshResource resolveResource(java.lang.String source)

      Fetch the needed file information for a given file (size, last modification time) and report it back in a SshResource
      Parameters:
        `source` - ssh uri for the file to get info for
      Returns:
        SshResource filled with the needed informations
      See Also:
        `Repository.getResource(java.lang.String)`

    - #### list

          public java.util.List list(java.lang.String parent)
                              throws java.io.IOException

      Description copied from interface: `Repository`
      Return a listing of resources names
      Parameters:
        `parent` - The parent directory from which to generate the listing.
      Returns:
        A listing of the parent directory's file content, as a List of String.
      Throws:
        `java.io.IOException` - On listing failure.

    - #### put

          public void put(java.io.File source,
                 java.lang.String destination,
                 boolean overwrite)
                   throws java.io.IOException

      Overrides:
        `put` in class `AbstractRepository`
      Throws:
        `java.io.IOException`

    - #### get

          public void get(java.lang.String source,
                 java.io.File destination)
                   throws java.io.IOException

      Description copied from interface: `Repository`
      Fetch a resource from the repository.
      Parameters:
        `source` - A string identifying the resource to be fetched.
        `destination` - Where to place the fetched resource.
      Throws:
        `java.io.IOException` - On retrieval failure.

    - #### setListCommand

          public void setListCommand(java.lang.String cmd)

      sets the list command to use for a directory listing listing must be only the filename and each filename on a separate line
      Parameters:
        `cmd` - to use. default is "ls -1"

    - #### getListCommand

          public java.lang.String getListCommand()

      Returns:
        the list command to use

    - #### getCreateDirCommand

          public java.lang.String getCreateDirCommand()

      Returns:
        the createDirCommand

    - #### setCreateDirCommand

          public void setCreateDirCommand(java.lang.String createDirCommand)

      Parameters:
        `createDirCommand` - the createDirCommand to set

    - #### getExistCommand

          public java.lang.String getExistCommand()

      Returns:
        the existCommand

    - #### setExistCommand

          public void setExistCommand(java.lang.String existCommand)

      Parameters:
        `existCommand` - the existCommand to set

    - #### setFileSeparator

          public void setFileSeparator(char fileSeparator)

      The file separator is the separator to use on the target system On a unix system it is '/', but I don't know, how this is solved on different ssh implementations. Using the default might be fine
      Parameters:
        `fileSeparator` - The fileSeparator to use. default '/'

    - #### setPublishPermissions

          public void setPublishPermissions(java.lang.String permissions)

      A four digit string (e.g., 0644, see "man chmod", "man open") specifying the permissions of the published files.

    - #### getRepositoryScheme

          protected java.lang.String getRepositoryScheme()

      return ssh as scheme use the Resolver type name here? would be nice if it would be static, so we could use SshResolver.getTypeName()
      Specified by:
        `getRepositoryScheme` in class `AbstractSshBasedRepository`

    - #### openStream

          public java.io.InputStream openStream(SshResource resource)
                                         throws java.io.IOException

      Not really streaming...need to implement a proper streaming approach?
      Parameters:
        `resource` - to stream
      Returns:
        InputStream of the resource data
      Throws:
        `java.io.IOException`