org.apache.camel.processor.idempotent
Class FileIdempotentRepository

java.lang.Object
  extended by org.apache.camel.processor.idempotent.FileIdempotentRepository
All Implemented Interfaces:
IdempotentRepository<String>

public class FileIdempotentRepository
extends Object
implements IdempotentRepository<String>

A file based implementation of IdempotentRepository.

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

Version:
$Revision: 782534 $

Constructor Summary
FileIdempotentRepository()
           
FileIdempotentRepository(File fileStore, Map<String,Object> set)
           
 
Method Summary
 boolean add(String messageId)
          Adds the key to the repository.
protected  void appendToStore(String messageId)
          Appends the given message id to the file store
 boolean confirm(String key)
          Confirms the key, after the exchange has been processed sucesfully.
 boolean contains(String key)
          Returns true if this repository contains the specified element.
static IdempotentRepository<String> fileIdempotentRepository(File fileStore)
          Creates a new file based repository using a LRUCache as 1st level cache with a default of 1000 entries in the cache.
static IdempotentRepository<String> fileIdempotentRepository(File fileStore, int cacheSize)
          Creates a new file based repository using a LRUCache as 1st level cache.
static IdempotentRepository<String> fileIdempotentRepository(File fileStore, int cacheSize, long maxFileStoreSize)
          Creates a new file based repository using a LRUCache as 1st level cache.
static IdempotentRepository<String> fileIdempotentRepository(File store, Map<String,Object> cache)
          Creates a new file based repository using the given Map as 1st level cache.
 Map<String,Object> getCache()
           
 File getFileStore()
           
 long getMaxFileStoreSize()
           
protected  void loadStore()
          Loads the given file store into the 1st level cache
 boolean remove(String key)
          Removes the key from the repository.
 void setCache(Map<String,Object> cache)
           
 void setCacheSize(int size)
          Sets the cache size
 void setFileStore(File fileStore)
           
 void setMaxFileStoreSize(long maxFileStoreSize)
          Sets the maximum filesize for the file store in bytes.
protected  void trunkStore()
          Trunks the file store when the max store size is hit by rewriting the 1st level cache to the file store.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

FileIdempotentRepository

public FileIdempotentRepository()

FileIdempotentRepository

public FileIdempotentRepository(File fileStore,
                                Map<String,Object> set)
Method Detail

fileIdempotentRepository

public static IdempotentRepository<String> fileIdempotentRepository(File fileStore)
Creates a new file based repository using a LRUCache as 1st level cache with a default of 1000 entries in the cache.

Parameters:
fileStore - the file store

fileIdempotentRepository

public static IdempotentRepository<String> fileIdempotentRepository(File fileStore,
                                                                    int cacheSize)
Creates a new file based repository using a LRUCache as 1st level cache.

Parameters:
fileStore - the file store
cacheSize - the cache size

fileIdempotentRepository

public static IdempotentRepository<String> fileIdempotentRepository(File fileStore,
                                                                    int cacheSize,
                                                                    long maxFileStoreSize)
Creates a new file based repository using a LRUCache as 1st level cache.

Parameters:
fileStore - the file store
cacheSize - the cache size
maxFileStoreSize - the max size in bytes for the filestore file

fileIdempotentRepository

public static IdempotentRepository<String> fileIdempotentRepository(File store,
                                                                    Map<String,Object> 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

add

public boolean add(String messageId)
Description copied from interface: IdempotentRepository
Adds the key to the repository.

Specified by:
add in interface IdempotentRepository<String>
Parameters:
messageId - the key of the message for duplicate test
Returns:
true if this repository did not already contain the specified element

contains

public boolean contains(String key)
Description copied from interface: IdempotentRepository
Returns true if this repository contains the specified element.

Specified by:
contains in interface IdempotentRepository<String>
Parameters:
key - the key of the message
Returns:
true if this repository contains the specified element

remove

public boolean remove(String key)
Description copied from interface: IdempotentRepository
Removes the key from the repository.

Is usually invoked if the exchange failed.

Specified by:
remove in interface IdempotentRepository<String>
Parameters:
key - the key of the message for duplicate test
Returns:
true if the key was removed

confirm

public boolean confirm(String key)
Description copied from interface: IdempotentRepository
Confirms the key, after the exchange has been processed sucesfully.

Specified by:
confirm in interface IdempotentRepository<String>
Parameters:
key - the key of the message for duplicate test
Returns:
true if the key was confirmed

getFileStore

public File getFileStore()

setFileStore

public void setFileStore(File fileStore)

getCache

public Map<String,Object> getCache()

setCache

public void setCache(Map<String,Object> cache)

getMaxFileStoreSize

public long getMaxFileStoreSize()

setMaxFileStoreSize

public void setMaxFileStoreSize(long maxFileStoreSize)
Sets the maximum filesize for the file store in bytes.

The default is 1mb.


setCacheSize

public void setCacheSize(int size)
Sets the cache size


appendToStore

protected void appendToStore(String messageId)
Appends the given message id to the file store

Parameters:
messageId - the message id

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()
Loads the given file store into the 1st level cache



Apache CAMEL