Interface ContentStore


@AlfrescoPublicApi public interface ContentStore
Provides low-level retrieval of content readers and writers.

Implementations of this interface should be soley responsible for providing persistence and retrieval of the content against a content URL.

Content URLs must consist of a prefix or protocol followed by an implementation-specific identifier. See TimeBasedFileContentUrlProvider and VolumeAwareContentUrlProvider implementations of FileContentUrlProvider For example, default content URL format for file stores is store://year/month/day/hour/minute/GUID.bin

  • store://: prefix identifying an Alfresco content stores regardless of the persistence mechanism.
  • year: year
  • month: 1-based month of the year
  • day: 1-based day of the month
  • hour: 0-based hour of the day
  • minute: 0-based minute of the hour
  • GUID: A unique identifier

Where the store cannot handle a particular content URL request, the UnsupportedContentUrlException must be generated. This will allow various implementations to provide fallback code to other stores where possible.

Where a store cannot serve a particular request because the functionality is just not available, the UnsupportedOperationException should be thrown. Once again, there may be fallback handling provided for these situations.

Since:
1.0
Author:
Derek Hulley
  • Field Details

  • Method Details

    • isContentUrlSupported

      boolean isContentUrlSupported(String contentUrl)
      Check if the content URL format is supported by the store.
      Parameters:
      contentUrl - the content URL to check
      Returns:
      Returns true if none of the other methods on the store will throw an UnsupportedContentUrlException when given this URL.
      Since:
      2.1
    • isWriteSupported

      boolean isWriteSupported()
      Check if the store supports write requests.
      Returns:
      Return true is the store supports write operations
      Since:
      2.1
    • getSpaceFree

      long getSpaceFree()
      Calculates the remaning free space in the underlying store.

      NOTE: For efficiency, some implementations may provide a guess.

      Implementations should focus on calculating a size value quickly, rather than accurately.

      Returns:
      Returns the total, possibly approximate, free space (in bytes) available to the store or -1 if no size data is available.
      Since:
      3.3.3
    • getSpaceTotal

      long getSpaceTotal()
      Calculates the total storage space of the underlying store.

      NOTE: For efficiency, some implementations may provide a guess.

      Implementations should focus on calculating a size value quickly, rather than accurately.

      Returns:
      Returns the total, possibly approximate, size (in bytes) of the underlying store or -1 if no size data is available.
      Since:
      3.3.3
    • getRootLocation

      String getRootLocation()
      Get the location where the store is rooted. The format of the returned value will depend on the specific implementation of the store.
      Returns:
      Returns the store's root location or . if no information is available
    • exists

      boolean exists(String contentUrl)
      Check for the existence of content in the store.

      The implementation of this may be more efficient than first getting a reader to check for existence, although that check should also be performed.

      Parameters:
      contentUrl - the path to the content
      Returns:
      Returns true if the content exists, otherwise false if the content doesn't exist or if the URL is not applicable to this store.
      Throws:
      org.alfresco.repo.content.UnsupportedContentUrlException - if the content URL supplied is not supported by the store
      ContentIOException - if an IO error occurs
      See Also:
    • getReader

      ContentReader getReader(String contentUrl)
      Get the accessor with which to read from the content at the given URL. The reader is stateful and can only be used once.
      Parameters:
      contentUrl - the path to where the content is located
      Returns:
      Returns a read-only content accessor for the given URL. There may be no content at the given URL, but the reader must still be returned.
      Throws:
      org.alfresco.repo.content.UnsupportedContentUrlException - if the content URL supplied is not supported by the store
      ContentIOException - if an IO error occurs
      See Also:
    • getWriter

      ContentWriter getWriter(ContentContext context)
      Get an accessor with which to write content to a location within the store. The writer is stateful and can only be used once. The location may be specified but must, in that case, be a valid and unused URL.

      The store will ensure that the new content URL will be valid for all subsequent read attempts.

      By supplying a reader to existing content, the store implementation may enable random access. The store implementation can enable this by copying the existing content into the new location before supplying a writer onto the new content.

      Parameters:
      context - the context of content.
      Returns:
      Returns a write-only content accessor
      Throws:
      UnsupportedOperationException - if the store is unable to provide the information
      UnsupportedContentUrlException - if the content URL supplied is not supported by the store
      ContentExistsException - if the content URL is already in use
      ContentIOException - if an IO error occurs
      See Also:
    • delete

      boolean delete(String contentUrl)
      Deletes the content at the given URL.

      A delete cannot be forced since it is much better to have the file remain longer than desired rather than deleted prematurely.

      Parameters:
      contentUrl - the URL of the content to delete
      Returns:
      Returns true if the content was deleted (either by this or another operation), otherwise false. If the content no longer exists, then true is returned.
      Throws:
      UnsupportedOperationException - if the store is unable to perform the action
      UnsupportedContentUrlException - if the content URL supplied is not supported by the store
      ContentIOException - if an error occurs if an IO error occurs
    • getDirectAccessUrl

      default DirectAccessUrl getDirectAccessUrl(String contentUrl, Date expiresAt)
      Gets a presigned URL to directly access a binary content. It is up to the actual store implementation if it can fulfil this request with an expiry time or not.
      Parameters:
      contentUrl - A content store URL
      expiresAt - An optional expiry date, so the direct access url would become invalid when the expiry date is reached
      Returns:
      A direct access URL object for a binary content
      Throws:
      UnsupportedOperationException - if the store is unable to provide the information
    • isDirectAccessSupported

      default boolean isDirectAccessSupported()
      Checks if the store supports the retrieving of direct access URLs.
      Returns:
      true if direct access URLs retrieving is supported, false otherwise