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: 736555 $

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 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
 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

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



Copyright © 2009 Apache Software Foundation. All Rights Reserved.