org.duracloud.storage.provider
Class ProbedStorageProvider

java.lang.Object
  extended by org.duracloud.storage.provider.ProbedStorageProvider
All Implemented Interfaces:
MetricsProbed, StorageProvider
Direct Known Subclasses:
ProbedEMCStorageProvider, ProbedRackspaceStorageProvider, ProbedS3StorageProvider

public abstract class ProbedStorageProvider
extends java.lang.Object
implements StorageProvider, MetricsProbed

This class wraps a StorageProvider implementation, collecting timing metrics while passing calls down.

Author:
Andrew Woods

Nested Class Summary
 
Nested classes/interfaces inherited from interface org.duracloud.storage.provider.StorageProvider
StorageProvider.AccessType
 
Field Summary
protected  Metric metric
           
protected  MetricsTable metricsTable
           
protected  StorageProvider storageProvider
           
 
Fields inherited from interface org.duracloud.storage.provider.StorageProvider
CONTENT_METADATA_SUFFIX, DEFAULT_MAX_RESULTS, DEFAULT_MIMETYPE, HTTP_NOT_FOUND, METADATA_CONTENT_CHECKSUM, METADATA_CONTENT_MD5, METADATA_CONTENT_MIMETYPE, METADATA_CONTENT_MODIFIED, METADATA_CONTENT_SIZE, METADATA_SPACE_ACCESS, METADATA_SPACE_COUNT, METADATA_SPACE_CREATED, RFC822_DATE_FORMAT, SPACE_METADATA_SUFFIX
 
Constructor Summary
ProbedStorageProvider()
           
 
Method Summary
 java.lang.String addContent(java.lang.String spaceId, java.lang.String contentId, java.lang.String contentMimeType, long contentSize, java.lang.String contentChecksum, java.io.InputStream content)
          Adds content to a space.
 void createSpace(java.lang.String spaceId)
          Creates a new space.
 void deleteContent(java.lang.String spaceId, java.lang.String contentId)
          Removes content from a space.
 void deleteSpace(java.lang.String spaceId)
          Deletes a space.
 java.io.InputStream getContent(java.lang.String spaceId, java.lang.String contentId)
          Gets content from a space.
 java.util.Map<java.lang.String,java.lang.String> getContentMetadata(java.lang.String spaceId, java.lang.String contentId)
          Retrieves the metadata associated with content.
protected abstract  MetricsProbed getProbedCore()
           
 StorageProvider.AccessType getSpaceAccess(java.lang.String spaceId)
          Gets the access setting of the space, either OPEN or CLOSED.
 java.util.Iterator<java.lang.String> getSpaceContents(java.lang.String spaceId, java.lang.String prefix)
          Provides access to the content files within a space.
 java.util.List<java.lang.String> getSpaceContentsChunked(java.lang.String spaceId, java.lang.String prefix, long maxResults, java.lang.String marker)
          Provides a listing of the content files within a space.
 java.util.Map<java.lang.String,java.lang.String> getSpaceMetadata(java.lang.String spaceId)
          Retrieves the metadata associated with a space.
 java.util.Iterator<java.lang.String> getSpaces()
          Provides a listing of all spaces owned by a customer.
 void setContentMetadata(java.lang.String spaceId, java.lang.String contentId, java.util.Map<java.lang.String,java.lang.String> contentMetadata)
          Sets the metadata associated with content.
 void setMetricsTable(MetricsTable metricsTable)
           
 void setSpaceAccess(java.lang.String spaceId, StorageProvider.AccessType access)
          Sets the accessibility of a space to either OPEN or CLOSED.
 void setSpaceMetadata(java.lang.String spaceId, java.util.Map<java.lang.String,java.lang.String> spaceMetadata)
          Sets the metadata associated with a space.
protected  void setStorageProvider(StorageProvider storageProvider)
           
protected  void startMetric(java.lang.String methodName)
           
protected  void stopMetric(java.lang.String methodName)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

storageProvider

protected StorageProvider storageProvider

metricsTable

protected MetricsTable metricsTable

metric

protected Metric metric
Constructor Detail

ProbedStorageProvider

public ProbedStorageProvider()
Method Detail

getProbedCore

protected abstract MetricsProbed getProbedCore()

startMetric

protected void startMetric(java.lang.String methodName)

stopMetric

protected void stopMetric(java.lang.String methodName)

setMetricsTable

public void setMetricsTable(MetricsTable metricsTable)
Specified by:
setMetricsTable in interface MetricsProbed

setStorageProvider

protected void setStorageProvider(StorageProvider storageProvider)

addContent

public java.lang.String addContent(java.lang.String spaceId,
                                   java.lang.String contentId,
                                   java.lang.String contentMimeType,
                                   long contentSize,
                                   java.lang.String contentChecksum,
                                   java.io.InputStream content)
                            throws StorageException
Description copied from interface: StorageProvider
Adds content to a space. Computes the checksum of the provided content and checks this against the checksum of the uploaded content to protect against loss or corruption during transfer.

Specified by:
addContent in interface StorageProvider
Parameters:
spaceId - - ID of the space
contentId - - ID of the content in the space
contentMimeType - - the MIME type of the content being added
contentSize - - the file size (in bytes) of the content being added
contentChecksum - - the MD5 checksum of the content being added (null if no checksum is known)
content - - content to add
Returns:
The checksum of the provided content
Throws:
NotFoundException - if space with ID spaceId does not exist
StorageException - if errors occur

createSpace

public void createSpace(java.lang.String spaceId)
                 throws StorageException
Description copied from interface: StorageProvider
Creates a new space. Depending on the storage implementation, the spaceId may be changed somewhat to comply with the naming rules of the underlying storage provider. The same spaceId value used here can be used in all other methods, as the conversion will be applied internally, however a call to getSpaces() may not include a space with exactly this same name.

Specified by:
createSpace in interface StorageProvider
Parameters:
spaceId - - ID of the space
Throws:
StorageException - if space with ID spaceId already exists

deleteContent

public void deleteContent(java.lang.String spaceId,
                          java.lang.String contentId)
                   throws StorageException
Description copied from interface: StorageProvider
Removes content from a space.

Specified by:
deleteContent in interface StorageProvider
Parameters:
spaceId - - ID of the space
contentId - - ID of the content in the space
Throws:
NotFoundException - if space with ID spaceId does not exist or the content item with ID contentId does not exist
StorageException - if errors occur

deleteSpace

public void deleteSpace(java.lang.String spaceId)
                 throws StorageException
Description copied from interface: StorageProvider
Deletes a space.

Specified by:
deleteSpace in interface StorageProvider
Parameters:
spaceId - - ID of the space
Throws:
NotFoundException - if space with ID spaceId does not exist
StorageException - if errors occur

getContent

public java.io.InputStream getContent(java.lang.String spaceId,
                                      java.lang.String contentId)
                               throws StorageException
Description copied from interface: StorageProvider
Gets content from a space.

Specified by:
getContent in interface StorageProvider
Parameters:
spaceId - - ID of the space
contentId - - ID of the content in the space
Returns:
the content stream
Throws:
NotFoundException - if space with ID spaceId does not exist or the content item with ID contentId does not exist
StorageException - if errors occur

getContentMetadata

public java.util.Map<java.lang.String,java.lang.String> getContentMetadata(java.lang.String spaceId,
                                                                           java.lang.String contentId)
                                                                    throws StorageException
Description copied from interface: StorageProvider
Retrieves the metadata associated with content. This includes both metadata generated by the underlying storage system as well as custom metadata. Use the METADATA_CONTENT_* constants to retrieve standard metadata values.

Specified by:
getContentMetadata in interface StorageProvider
Parameters:
spaceId - - ID of the space
contentId - - ID of the content in the space
Returns:
content metadata
Throws:
NotFoundException - if space with ID spaceId does not exist or the content item with ID contentId does not exist
StorageException - if errors occur

getSpaceAccess

public StorageProvider.AccessType getSpaceAccess(java.lang.String spaceId)
                                          throws StorageException
Description copied from interface: StorageProvider
Gets the access setting of the space, either OPEN or CLOSED. An OPEN space is available for public viewing. A CLOSED space requires authentication prior to viewing any of the contents.

Specified by:
getSpaceAccess in interface StorageProvider
Parameters:
spaceId - - ID of the space
Returns:
the access type of the space, OPEN or CLOSED
Throws:
NotFoundException - if space with ID spaceId does not exist
StorageException - if errors occur

getSpaceContents

public java.util.Iterator<java.lang.String> getSpaceContents(java.lang.String spaceId,
                                                             java.lang.String prefix)
                                                      throws StorageException
Description copied from interface: StorageProvider
Provides access to the content files within a space. Chunking of the list is handled internally. Prefix can be set to return only content IDs starting with the prefix value.

Specified by:
getSpaceContents in interface StorageProvider
Parameters:
spaceId - - ID of the space
prefix - - The prefix of the content id (null for no constraints)
Returns:
Iterator of contentIds
Throws:
NotFoundException - if space with ID spaceId does not exist
StorageException - if errors occur

getSpaceContentsChunked

public java.util.List<java.lang.String> getSpaceContentsChunked(java.lang.String spaceId,
                                                                java.lang.String prefix,
                                                                long maxResults,
                                                                java.lang.String marker)
                                                         throws StorageException
Description copied from interface: StorageProvider
Provides a listing of the content files within a space. The number of items returned is limited to maxResults (default is 1000). Retrieve further results by including the last content ID in the previous list as the marker. Set prefix to return only content IDs starting with the prefix value.

Specified by:
getSpaceContentsChunked in interface StorageProvider
Parameters:
spaceId - - ID of the space
prefix - - Only retrieve content IDs with this prefix (null for all content ids)
maxResults - - The maximum number of content IDs to return in the list (0 indicates default (1000))
marker - - The content ID marking the last item in the previous set (null indicates the first set of ids)
Returns:
List of contentIds
Throws:
NotFoundException - if space with ID spaceId does not exist
StorageException - if errors occur

getSpaceMetadata

public java.util.Map<java.lang.String,java.lang.String> getSpaceMetadata(java.lang.String spaceId)
                                                                  throws StorageException
Description copied from interface: StorageProvider
Retrieves the metadata associated with a space.

Specified by:
getSpaceMetadata in interface StorageProvider
Parameters:
spaceId - - ID of the space
Returns:
Map of space metadata or null if no metadata exists
Throws:
NotFoundException - if space with ID spaceId does not exist
StorageException - if errors occur

getSpaces

public java.util.Iterator<java.lang.String> getSpaces()
                                               throws StorageException
Description copied from interface: StorageProvider
Provides a listing of all spaces owned by a customer.

Specified by:
getSpaces in interface StorageProvider
Returns:
Iterator listing spaceIds
Throws:
StorageException

setContentMetadata

public void setContentMetadata(java.lang.String spaceId,
                               java.lang.String contentId,
                               java.util.Map<java.lang.String,java.lang.String> contentMetadata)
                        throws StorageException
Description copied from interface: StorageProvider
Sets the metadata associated with content. This effectively removes all of the current content metadata and adds a new set of metadata. Some metadata, such as system metadata provided by the underlying storage system, cannot be updated or removed. Some of the values which cannot be updated or removed: Content-MD5 ETag Last-Modified Content-Type cannot be removed, but it can be updated

Specified by:
setContentMetadata in interface StorageProvider
Parameters:
spaceId - - ID of the space
contentId - - ID of the content in the space
contentMetadata - - new content metadata
Throws:
NotFoundException - if space with ID spaceId does not exist or the content item with ID contentId does not exist
StorageException - if errors occur

setSpaceAccess

public void setSpaceAccess(java.lang.String spaceId,
                           StorageProvider.AccessType access)
                    throws StorageException
Description copied from interface: StorageProvider
Sets the accessibility of a space to either OPEN or CLOSED.

Specified by:
setSpaceAccess in interface StorageProvider
Parameters:
spaceId - - ID of the space
access - - New space access value
Throws:
NotFoundException - if space with ID spaceId does not exist
StorageException - if errors occur

setSpaceMetadata

public void setSpaceMetadata(java.lang.String spaceId,
                             java.util.Map<java.lang.String,java.lang.String> spaceMetadata)
                      throws StorageException
Description copied from interface: StorageProvider
Sets the metadata associated with a space.

Specified by:
setSpaceMetadata in interface StorageProvider
Parameters:
spaceId - - ID of the space
spaceMetadata - - Updated space metadata
Throws:
NotFoundException - if space with ID spaceId does not exist
StorageException - if errors occur


Copyright © 2009-2010 DuraSpace. All Rights Reserved.