Class 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
    • Constructor Detail

      • CachingContentStore

        public CachingContentStore()
      • CachingContentStore

        public CachingContentStore​(ContentStore backingStore,
                                   ContentCache cache,
                                   boolean cacheOnInbound)
    • Method Detail

      • init

        public void init()
        Initialisation method, should be called once the CachingContentStore has been constructed.
      • exists

        public boolean exists​(String contentUrl)

        For spoofed URLs, the URL always exists.

        Specified by:
        exists in interface ContentStore
      • readWriteLock

        public ReentrantReadWriteLock readWriteLock​(String url)
        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

        public void setBackingStore​(ContentStore backingStore)
      • getBackingStoreType

        public String getBackingStoreType()
      • getBackingStoreDescription

        public String getBackingStoreDescription()
      • setCacheOnInbound

        public void setCacheOnInbound​(boolean cacheOnInbound)
      • isCacheOnInbound

        public boolean isCacheOnInbound()
      • getMaxCacheTries

        public int getMaxCacheTries()
      • setMaxCacheTries

        public void setMaxCacheTries​(int maxCacheTries)
      • setQuota

        public void setQuota​(QuotaManagerStrategy quota)
        Sets the QuotaManagerStrategy that will be used.
        Parameters:
        quota - QuotaManagerStrategy
      • setApplicationEventPublisher

        public void setApplicationEventPublisher​(org.springframework.context.ApplicationEventPublisher applicationEventPublisher)
        Specified by:
        setApplicationEventPublisher in interface org.springframework.context.ApplicationEventPublisherAware
      • setBeanName

        public void setBeanName​(String name)
        Specified by:
        setBeanName in interface org.springframework.beans.factory.BeanNameAware
      • getBeanName

        public String getBeanName()