org.alfresco.repo.content
Class AbstractContentStore
org.alfresco.repo.content.AbstractContentStore All Implemented Interfaces:
-
Direct Known Subclasses:
-
@org.alfresco.api.AlfrescoPublicApi
public abstract class AbstractContentStore
Base class providing support for different types of content stores.
Since content URLs have to be consistent across all stores for
reasons of replication and backup, the most important functionality
provided is the generation of new content URLs and the checking of
existing URLs.
Implementations must override either of the getWriter methods;
getWriter(ContentContext) or getWriterInternal(ContentReader, String).
Author:
-
Derek Hulley
See Also:
-
Method Summary |
boolean |
delete(String contentUrl) Override if the derived class supports the operation. |
boolean |
exists(String contentUrl) Simple implementation that uses the reader's exists method as its implementation. |
|
getContentUrlParts(String contentUrl) |
|
getRootLocation() Get the location where the store is rooted. |
long |
getSpaceFree() Calculates the remaning free space in the underlying store. |
long |
getSpaceTotal() Calculates the total storage space of the underlying store. |
void |
getUrls(org.alfresco.repo.content.ContentStore.ContentUrlHandler handler) Get all URLs for the store, regardless of creation time. |
void |
getUrls(Date createdAfter, Date createdBefore, org.alfresco.repo.content.ContentStore.ContentUrlHandler handler) Override to provide an implementation. |
|
getWriter(org.alfresco.repo.content.ContentContext context) An implementation that does some sanity checking before requesting a writer from the store. |
|
getWriterInternal(ContentReader existingContentReader, String newContentUrl) Implement to supply a store-specific writer for the given existing content and optional target content URL. |
boolean |
isContentUrlSupported(String contentUrl) Override this method to supply a efficient and direct check of the URL supplied. |
static boolean |
isValidContentUrl(String contentUrl) Checks that the content conforms to the format protocol://identifier as specified in the contract of the ContentStore interface. |
void |
setContentLimitProvider(org.alfresco.repo.content.ContentLimitProvider contentLimitProvider) An object that prevents abuse of the underlying store(s) |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
contentLimitProvider
protected org.alfresco.repo.content.ContentLimitProvider contentLimitProvider
AbstractContentStore
public AbstractContentStore()
isValidContentUrl
public static final boolean isValidContentUrl(String contentUrl) -
Checks that the content conforms to the format
protocol://identifier
as specified in the contract of the
ContentStore interface.
Parameters:
-
contentUrl - the content URL to check
Returns:
-
Returns true if the content URL is valid
Since:
-
2.1
setContentLimitProvider
public void setContentLimitProvider(org.alfresco.repo.content.ContentLimitProvider contentLimitProvider)
-
An object that prevents abuse of the underlying store(s)
getContentUrlParts
-
Parameters:
-
contentUrl - the content URL to split
Returns:
-
Returns the protocol and identifier portions of the content URL,
both of which will not be null
Throws:
-
UnsupportedContentUrlException - if the content URL is invalid
Since:
-
2.1
isContentUrlSupported
public boolean isContentUrlSupported(String contentUrl) -
Override this method to supply a efficient and direct check of the URL supplied.
The default implementation checks whether
ContentStore.getReader(String)
throws the
UnsupportedContentUrlException exception.
Specified by:
-
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
delete
public boolean delete(String contentUrl) -
Override if the derived class supports the operation.
Specified by:
-
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:
-
Since:
-
2.1
getUrls
public final void getUrls(org.alfresco.repo.content.ContentStore.ContentUrlHandler handler) throws ContentIOException -
Get all URLs for the store, regardless of creation time.
Specified by:
-
-
Throws:
-
See Also:
-
getUrls
public void getUrls(Date createdAfter, Date createdBefore, org.alfresco.repo.content.ContentStore.ContentUrlHandler handler) throws ContentIOException -
Override to provide an implementation. If no implementation is supplied, then the store will not support
cleaning of orphaned content binaries.
Specified by:
-
Parameters:
-
createdAfter - all URLs returned must have been created after this date. May be null.
-
createdBefore - all URLs returned must have been created before this date. May be null.
-
handler - the callback that will passed each URL
-
Throws:
-
-
getWriterInternal
-
Implement to supply a store-specific writer for the given existing content
and optional target content URL.
Parameters:
-
existingContentReader - a reader onto any content to initialize the new writer with
-
newContentUrl - an optional target for the new content
-
Throws:
-
UnsupportedContentUrlException - if the content URL supplied is not supported by the store
-
ContentExistsException - if the content URL is already in use
-
Since:
-
2.1
getWriter
public ContentWriter getWriter(org.alfresco.repo.content.ContentContext context) -
An implementation that does some sanity checking before requesting a writer from the
store. If this method is not overridden, then an implementation of
getWriterInternal(ContentReader, String) must be supplied.
Specified by:
-
Parameters:
-
context - the context of content.
Returns:
-
Returns a write-only content accessor
Since:
-
2.1
See Also:
-
exists
public boolean exists(String contentUrl) -
Simple implementation that uses the
reader's exists method as its implementation.
Override this method if a more efficient implementation is possible.
Specified by:
-
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.
getSpaceFree
public 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.
Specified by:
-
Returns:
-
Returns -1 always
getSpaceTotal
public 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.
Specified by:
-
Returns:
-
Returns -1 always
getRootLocation
public 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.
Specified by:
-
Returns:
-
Returns a '.' (period) always