Package fr.gouv.vitam.common.storage.swift

# Class Swift

java.lang.Object
fr.gouv.vitam.common.storage.cas.container.api.ContentAddressableStorageAbstract
fr.gouv.vitam.common.storage.swift.Swift

All Implemented Interfaces:
  `VitamAutoCloseable`, `ContentAddressableStorage`, `AutoCloseable`

public class Swift extends ContentAddressableStorageAbstract
Swift abstract implementation Manage with all common swift methods

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final String`
  `X_NEWEST`
  `static final String`
  `X_OBJECT_MANIFEST`
  `static final String`
  `X_OBJECT_META_DIGEST`
  `static final String`
  `X_OBJECT_META_DIGEST_TYPE`

  ### Fields inherited from class fr.gouv.vitam.common.storage.cas.container.api.ContentAddressableStorageAbstract

  `LISTING_MAX_RESULTS`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Swift(Supplier<org.openstack4j.api.OSClient> osClient, StorageConfiguration configuration)`
  Constructor
  `Swift(Supplier<org.openstack4j.api.OSClient> osClient, StorageConfiguration configuration, Long swiftLimit)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `checkObjectDigestAndStoreDigest(String containerName, String objectName, String objectDigest, DigestType digestType, long size)`
  Checks objet digest invalid input: '&' update persist its digest in object metadata
  `void`
  `close()`
  `void`
  `createContainer(String containerName)`
  Abstract method to get authenticated openstack client, allow to switch between Keystone V2 and Keystone V3
  `void`
  `deleteObject(String containerName, String objectName)`
  Deletes a object representing the data at location containerName/objectName
  `ContainerInformation`
  `getContainerInformation(String containerName)`
  Get container information like capacity
  `ObjectContent`
  `getObject(String containerName, String objectName)`
  Retrieves an object representing the data at location containerName/objectName
  `String`
  `getObjectDigest(String containerName, String objectName, DigestType digestType, boolean noCache)`
  compute Object Digest using a defined algorithm
  `MetadatasObject`
  `getObjectMetadata(String containerName, String objectId, boolean noCache)`
  get metadata of the object
  `Supplier<org.openstack4j.api.OSClient>`
  `getOsClient()`
  `boolean`
  `isExistingContainer(String containerName)`
  Determines if a container exists
  `boolean`
  `isExistingObject(String containerName, String objectName)`
  Determines if an object exists
  `void`
  `listContainer(String containerName, ObjectListingListener objectListingListener)`
  List container objects
  `void`
  `writeObject(String containerName, String objectName, InputStream inputStream, DigestType digestType, long size)`
  Adds an object representing the data at location containerName/objectName

  ### Methods inherited from class fr.gouv.vitam.common.storage.cas.container.api.ContentAddressableStorageAbstract

  `cacheExistsContainer, computeObjectDigest, computeObjectDigestAndSize, disableContainerCaching, getConfiguration, isExistingContainerInCache`

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

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

  ### Methods inherited from interface fr.gouv.vitam.common.storage.cas.container.api.ContentAddressableStorage

  `checkAccessRequestStatuses, checkObjectAvailability, createAccessRequest, putObject, removeAccessRequest`

- ## Field Details

  - ### X_OBJECT_META_DIGEST

    public static final String X_OBJECT_META_DIGEST
    See Also:
      - Constant Field Values

  - ### X_OBJECT_META_DIGEST_TYPE

    public static final String X_OBJECT_META_DIGEST_TYPE
    See Also:
      - Constant Field Values

  - ### X_OBJECT_MANIFEST

    public static final String X_OBJECT_MANIFEST
    See Also:
      - Constant Field Values

  - ### X_NEWEST

    public static final String X_NEWEST
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### Swift

    public Swift(Supplier<org.openstack4j.api.OSClient> osClient, StorageConfiguration configuration)
    Constructor
    Parameters:
      `osClient` - the given type of osClient can be OSClientV2, OSClientV3
      `configuration` - StorageConfiguration

  - ### Swift

    public Swift(Supplier<org.openstack4j.api.OSClient> osClient, StorageConfiguration configuration, Long swiftLimit)

- ## Method Details

  - ### createContainer

    public void createContainer(String containerName) throws ContentAddressableStorageServerException
    Abstract method to get authenticated openstack client, allow to switch between Keystone V2 and Keystone V3
    Parameters:
      `containerName` - name of container to create
    Throws:
      `ContentAddressableStorageServerException` - Thrown when internal server error happens

  - ### isExistingContainer

    public boolean isExistingContainer(String containerName)
    Description copied from interface: `ContentAddressableStorage`
    Determines if a container exists
    Parameters:
      `containerName` - name of container
    Returns:
      boolean type

  - ### writeObject

    public void writeObject(String containerName, String objectName, InputStream inputStream, DigestType digestType, long size) throws ContentAddressableStorageException
    Description copied from interface: `ContentAddressableStorage`
    Adds an object representing the data at location containerName/objectName
    Parameters:
      `containerName` - container to place the object.
      `objectName` - fully qualified object name relative to the container.
      `inputStream` - the data
      `digestType` - parameter to compute an hash.
      `size` - size off the input stream
    Throws:
      `ContentAddressableStorageException` - Thrown when put action failed due some other failure

  - ### checkObjectDigestAndStoreDigest

    public void checkObjectDigestAndStoreDigest(String containerName, String objectName, String objectDigest, DigestType digestType, long size) throws ContentAddressableStorageException
    Description copied from interface: `ContentAddressableStorage`
    Checks objet digest invalid input: '&' update persist its digest in object metadata
    Parameters:
      `containerName` - container to place the object.
      `objectName` - fully qualified object name relative to the container.
      `objectDigest` - object digest value
      `digestType` - object digest type
      `size` - size off the input stream
    Throws:
      `ContentAddressableStorageException`

  - ### getObjectDigest

    public String getObjectDigest(String containerName, String objectName, DigestType digestType, boolean noCache) throws ContentAddressableStorageException
    Description copied from interface: `ContentAddressableStorage`
    compute Object Digest using a defined algorithm
    Parameters:
      `containerName` - container where this exists.
      `objectName` - fully qualified name relative to the container.
      `digestType` - Digest algo
      `noCache` - forces full digest computation
    Returns:
      the digest object as String
    Throws:
      `ContentAddressableStorageException` - Thrown when put action failed due some other failure

  - ### getObject

    public ObjectContent getObject(String containerName, String objectName) throws ContentAddressableStorageException
    Description copied from interface: `ContentAddressableStorage`
    Retrieves an object representing the data at location containerName/objectName

    Parameters:
      `containerName` - container where this exists.
      `objectName` - fully qualified name relative to the container.
    Returns:
      the object you intended to receive
    Throws:
      `ContentAddressableStorageException` - Thrown when get action failed due some other failure

  - ### deleteObject

    public void deleteObject(String containerName, String objectName) throws ContentAddressableStorageException
    Description copied from interface: `ContentAddressableStorage`
    Deletes a object representing the data at location containerName/objectName
    Parameters:
      `containerName` - container where this exists.
      `objectName` - fully qualified name relative to the container.
    Throws:
      `ContentAddressableStorageException` - Thrown when delete action failed due some other failure

  - ### isExistingObject

    public boolean isExistingObject(String containerName, String objectName) throws ContentAddressableStorageException
    Description copied from interface: `ContentAddressableStorage`
    Determines if an object exists
    Parameters:
      `containerName` - container where the object resides
      `objectName` - fully qualified name relative to the container.
    Returns:
      boolean type
    Throws:
      `ContentAddressableStorageException`

  - ### getContainerInformation

    public ContainerInformation getContainerInformation(String containerName) throws ContentAddressableStorageNotFoundException
    Description copied from interface: `ContentAddressableStorage`
    Get container information like capacity
    Parameters:
      `containerName` - the container name
    Returns:
      container information like usableSpace
    Throws:
      `ContentAddressableStorageNotFoundException` - Thrown when the container cannot be located.

  - ### getObjectMetadata

    public MetadatasObject getObjectMetadata(String containerName, String objectId, boolean noCache) throws ContentAddressableStorageException
    Description copied from interface: `ContentAddressableStorage`
    get metadata of the object
    Parameters:
      `containerName` - the container name
      `objectId` - the objectId to check
    Returns:
      MetadatasObjectResult
    Throws:
      `ContentAddressableStorageException` - Thrown when get action failed due some other failure

  - ### listContainer

    public void listContainer(String containerName, ObjectListingListener objectListingListener) throws ContentAddressableStorageException, IOException
    Description copied from interface: `ContentAddressableStorage`
    List container objects
    Parameters:
      `containerName` - the container name
    Throws:
      `ContentAddressableStorageException`
      `IOException`

  - ### close

    public void close()

  - ### getOsClient

    public Supplier<org.openstack4j.api.OSClient> getOsClient()