Class CachingContentStore
java.lang.Object
org.alfresco.repo.content.caching.CachingContentStore
- All Implemented Interfaces:
ContentStore,org.springframework.beans.factory.Aware,org.springframework.beans.factory.BeanNameAware,org.springframework.context.ApplicationEventPublisherAware
public class CachingContentStore
extends Object
implements ContentStore, org.springframework.context.ApplicationEventPublisherAware, org.springframework.beans.factory.BeanNameAware
Implementation of ContentStore that wraps any other ContentStore (the backing store)
transparently providing caching of content in that backing store.
CachingContentStore should only be used to wrap content stores that are significantly slower that FileContentStore - otherwise performance may actually degrade from its use.
It is important that cacheOnInbound is set to true for exceptionally slow backing stores.
This store handles the FileContentStore.SPOOF_PROTOCOL and can be used to wrap stores
that do not handle the protocol out of the box e.g. the S3 connector's store.
- Author:
- Matt Ward
-
Field Summary
Fields inherited from interface org.alfresco.repo.content.ContentStore
NEW_CONTENT_CONTEXT, PROTOCOL_DELIMITER -
Constructor Summary
ConstructorsConstructorDescriptionCachingContentStore(ContentStore backingStore, ContentCache cache, boolean cacheOnInbound) -
Method Summary
Modifier and TypeMethodDescriptionbooleanbooleangetCache()getDirectAccessUrl(String contentUrl, Date expiresAt) intgetQuota()longlonggetWriter(ContentContext context) voidinit()Initialisation method, should be called once the CachingContentStore has been constructed.booleanbooleanisContentUrlSupported(String contentUrl) booleanbooleanreadWriteLock(String url) Get a ReentrantReadWriteLock for a given URL.voidsetApplicationEventPublisher(org.springframework.context.ApplicationEventPublisher applicationEventPublisher) voidsetBackingStore(ContentStore backingStore) voidsetBeanName(String name) voidsetCache(ContentCache cache) voidsetCacheOnInbound(boolean cacheOnInbound) voidsetMaxCacheTries(int maxCacheTries) voidsetQuota(QuotaManagerStrategy quota) Sets the QuotaManagerStrategy that will be used.
-
Constructor Details
-
CachingContentStore
public CachingContentStore() -
CachingContentStore
-
-
Method Details
-
init
public void init()Initialisation method, should be called once the CachingContentStore has been constructed. -
isContentUrlSupported
- Specified by:
isContentUrlSupportedin interfaceContentStore
-
isWriteSupported
public boolean isWriteSupported()- Specified by:
isWriteSupportedin interfaceContentStore
-
getSpaceFree
public long getSpaceFree()- Specified by:
getSpaceFreein interfaceContentStore
-
getSpaceTotal
public long getSpaceTotal()- Specified by:
getSpaceTotalin interfaceContentStore
-
getRootLocation
- Specified by:
getRootLocationin interfaceContentStore
-
exists
For
spoofedURLs, the URL always exists.- Specified by:
existsin interfaceContentStore
-
getReader
This store handles the
FileContentStore.SPOOF_PROTOCOLso that underlying stores do not need to implement anything related to spoofing.- Specified by:
getReaderin interfaceContentStore
-
getWriter
- Specified by:
getWriterin interfaceContentStore
-
delete
- Specified by:
deletein interfaceContentStore
-
readWriteLock
Get a ReentrantReadWriteLock for a given URL. The lock is from a pool rather than per URL, so some contention is expected.- Parameters:
url- String- Returns:
- ReentrantReadWriteLock
-
setBackingStore
-
getBackingStoreType
-
getBackingStoreDescription
-
setCache
-
getCache
-
setCacheOnInbound
public void setCacheOnInbound(boolean cacheOnInbound) -
isCacheOnInbound
public boolean isCacheOnInbound() -
getMaxCacheTries
public int getMaxCacheTries() -
setMaxCacheTries
public void setMaxCacheTries(int maxCacheTries) -
setQuota
Sets the QuotaManagerStrategy that will be used.- Parameters:
quota- QuotaManagerStrategy
-
getQuota
-
setApplicationEventPublisher
public void setApplicationEventPublisher(org.springframework.context.ApplicationEventPublisher applicationEventPublisher) - Specified by:
setApplicationEventPublisherin interfaceorg.springframework.context.ApplicationEventPublisherAware
-
setBeanName
- Specified by:
setBeanNamein interfaceorg.springframework.beans.factory.BeanNameAware
-
getBeanName
-
isDirectAccessSupported
public boolean isDirectAccessSupported()- Specified by:
isDirectAccessSupportedin interfaceContentStore
-
getDirectAccessUrl
- Specified by:
getDirectAccessUrlin interfaceContentStore
-