Class FileStateRepository

  • All Implemented Interfaces:
    AutoCloseable, org.apache.camel.Service, org.apache.camel.ShutdownableService, org.apache.camel.spi.StateRepository<String,​String>, org.apache.camel.StatefulService, org.apache.camel.SuspendableService

    @ManagedResource(description="File based state repository")
    public class FileStateRepository
    extends org.apache.camel.support.service.ServiceSupport
    implements org.apache.camel.spi.StateRepository<String,​String>
    This FileStateRepository class is a file-based implementation of a StateRepository.
    • Constructor Detail

      • FileStateRepository

        public FileStateRepository()
      • FileStateRepository

        public FileStateRepository​(File fileStore,
                                   Map<String,​String> cache)
    • Method Detail

      • fileStateRepository

        public static FileStateRepository fileStateRepository​(File fileStore)
        Creates a new file based repository using as 1st level cache
        Parameters:
        fileStore - the file store
      • fileStateRepository

        public static FileStateRepository fileStateRepository​(File fileStore,
                                                              long maxFileStoreSize)
        Creates a new file based repository using a HashMap as 1st level cache.
        Parameters:
        fileStore - the file store
        maxFileStoreSize - the max size in bytes for the fileStore file
      • fileStateRepository

        public static FileStateRepository fileStateRepository​(File store,
                                                              Map<String,​String> cache)
        Creates a new file based repository using the given Map as 1st level cache.

        Care should be taken to use a suitable underlying Map to avoid this class being a memory leak.

        Parameters:
        store - the file store
        cache - the cache to use as 1st level cache
      • setState

        @ManagedOperation(description="Adds the value of the given key to the store")
        public void setState​(String key,
                             String value)
        Specified by:
        setState in interface org.apache.camel.spi.StateRepository<String,​String>
      • getState

        @ManagedOperation(description="Gets the value of the given key from store")
        public String getState​(String key)
        Specified by:
        getState in interface org.apache.camel.spi.StateRepository<String,​String>
      • reset

        @ManagedOperation(description="Reset and reloads the file store")
        public void reset()
                   throws IOException
        Resets and clears the store to force it to reload from file
        Throws:
        IOException
      • trunkStore

        protected void trunkStore()
        Trunks the file store when the max store size is hit by rewriting the 1st level cache to the file store.
      • loadStore

        protected void loadStore()
                          throws IOException
        Loads the given file store into the 1st level cache
        Throws:
        IOException
      • doStart

        protected void doStart()
                        throws Exception
        Overrides:
        doStart in class org.apache.camel.support.service.BaseService
        Throws:
        Exception
      • doStop

        protected void doStop()
                       throws Exception
        Overrides:
        doStop in class org.apache.camel.support.service.BaseService
        Throws:
        Exception
      • getFileStore

        public File getFileStore()
      • setFileStore

        public void setFileStore​(File fileStore)
      • getFilePath

        @ManagedAttribute(description="The file path for the store")
        public String getFilePath()
      • getMaxFileStoreSize

        @ManagedAttribute(description="The maximum file size for the file store in bytes")
        public long getMaxFileStoreSize()
      • setMaxFileStoreSize

        @ManagedAttribute(description="The maximum file size for the file store in bytes")
        public void setMaxFileStoreSize​(long maxFileStoreSize)
        Sets the maximum file size for the file store in bytes.

        The default is 1mb.