org.jboss.cache.loader
Class DelegatingCacheLoader

java.lang.Object
  |
  +--org.jboss.cache.loader.DelegatingCacheLoader
All Implemented Interfaces:
CacheLoader, org.jboss.system.Service
Direct Known Subclasses:
LocalDelegatingCacheLoader, RmiDelegatingCacheLoader, RpcDelegatingCacheLoader, TcpDelegatingCacheLoader

public abstract class DelegatingCacheLoader
extends java.lang.Object
implements CacheLoader

CacheLoader implementation which delegates to another TreeCache. This allows to stack caches on top of each other, allowing for hierarchical cache levels. For example, first level cache delegates to a second level cache, which delegates to a persistent cache.

Version:
$Id: DelegatingCacheLoader.java,v 1.5.12.1 2006/02/07 18:17:57 bstansberry Exp $
Author:
Bela Ban, Daniel Gredler

Field Summary
static int delegateExists
           
static int delegateGet
           
static int delegateGetChildrenNames
           
static int delegateGetKey
           
static int delegateLoadEntireState
           
static int delegatePut
           
static int delegatePutKeyVal
           
static int delegateRemove
           
static int delegateRemoveData
           
static int delegateRemoveKey
           
static int delegateStoreEntireState
           
 
Constructor Summary
DelegatingCacheLoader()
           
 
Method Summary
 void commit(java.lang.Object tx)
          Commit the transaction.
 void create()
           
protected abstract  boolean delegateExists(Fqn name)
           
protected abstract  java.util.Map delegateGet(Fqn name)
           
protected abstract  java.lang.Object delegateGet(Fqn name, java.lang.Object key)
           
protected abstract  java.util.Set delegateGetChildrenNames(Fqn fqn)
           
protected abstract  byte[] delegateLoadEntireState()
           
protected abstract  void delegatePut(Fqn name, java.util.Map attributes)
           
protected abstract  java.lang.Object delegatePut(Fqn name, java.lang.Object key, java.lang.Object value)
           
protected abstract  void delegateRemove(Fqn name)
           
protected abstract  java.lang.Object delegateRemove(Fqn name, java.lang.Object key)
           
protected abstract  void delegateRemoveData(Fqn name)
           
protected abstract  void delegateStoreEntireState(byte[] state)
           
 void destroy()
           
 boolean exists(Fqn name)
          Checks whether the CacheLoader has a node with Fqn
 java.util.Map get(Fqn name)
          Returns all keys and values from the persistent store, given a fully qualified name
 java.lang.Object get(Fqn name, java.lang.Object key)
          Returns the value for a given key.
 java.util.Set getChildrenNames(Fqn fqn)
          Returns a list of children names, all names are relative.
 byte[] loadEntireState()
          Fetch the entire state for this cache from secondary storage (disk, DB) and return it as a byte buffer.
 void prepare(java.lang.Object tx, java.util.List modifications, boolean one_phase)
          Prepare the modifications.
 void put(Fqn name, java.util.Map attributes)
          Inserts all elements of attributes into the attributes hashmap of the given node, overwriting existing attributes, but not clearing the existing hashmap before insertion (making it a union of existing and new attributes) If the node does not exist, all parent nodes from the root down are created automatically
 void put(Fqn fqn, java.util.Map attributes, boolean erase)
           
 java.lang.Object put(Fqn name, java.lang.Object key, java.lang.Object value)
          Inserts key and value into the attributes hashmap of the given node.
 void put(java.util.List modifications)
          Inserts all modifications to the backend store.
 void remove(Fqn name)
          Removes the given node.
 java.lang.Object remove(Fqn name, java.lang.Object key)
          Removes the given key and value from the attributes of the given node.
 void removeData(Fqn name)
          Removes all attributes from a given node, but doesn't delete the node itself
 void rollback(java.lang.Object tx)
          Roll the transaction back.
abstract  void setCache(TreeCache c)
          This method allows the CacheLoader to set the TreeCache, therefore allowing the CacheLoader to invoke methods of the TreeCache.
abstract  void setConfig(java.util.Properties props)
          Sets the configuration.
 void start()
           
 void stop()
           
 void storeEntireState(byte[] state)
          Store the given state in secondary storage.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

delegateGetChildrenNames

public static final int delegateGetChildrenNames
See Also:
Constant Field Values

delegateGetKey

public static final int delegateGetKey
See Also:
Constant Field Values

delegateGet

public static final int delegateGet
See Also:
Constant Field Values

delegateExists

public static final int delegateExists
See Also:
Constant Field Values

delegatePutKeyVal

public static final int delegatePutKeyVal
See Also:
Constant Field Values

delegatePut

public static final int delegatePut
See Also:
Constant Field Values

delegateRemoveKey

public static final int delegateRemoveKey
See Also:
Constant Field Values

delegateRemove

public static final int delegateRemove
See Also:
Constant Field Values

delegateRemoveData

public static final int delegateRemoveData
See Also:
Constant Field Values

delegateLoadEntireState

public static final int delegateLoadEntireState
See Also:
Constant Field Values

delegateStoreEntireState

public static final int delegateStoreEntireState
See Also:
Constant Field Values
Constructor Detail

DelegatingCacheLoader

public DelegatingCacheLoader()
Method Detail

setConfig

public abstract void setConfig(java.util.Properties props)
Description copied from interface: CacheLoader
Sets the configuration. Will be called before Service.create() and Service.start()

Specified by:
setConfig in interface CacheLoader
Parameters:
props - A list of properties, defined in the XML file

setCache

public abstract void setCache(TreeCache c)
Description copied from interface: CacheLoader
This method allows the CacheLoader to set the TreeCache, therefore allowing the CacheLoader to invoke methods of the TreeCache. It can also use the TreeCache to fetch configuration information. Alternatively, the CacheLoader could maintain its own configuration
This method will be called directly after the CacheLoader instance has been created

Specified by:
setCache in interface CacheLoader
Parameters:
c - The cache on which this loader works

getChildrenNames

public java.util.Set getChildrenNames(Fqn fqn)
                               throws java.lang.Exception
Description copied from interface: CacheLoader
Returns a list of children names, all names are relative. Returns null if the parent node is not found. The returned set must not be modified, e.g. use Collections.unmodifiableSet(s) to return the result

Specified by:
getChildrenNames in interface CacheLoader
Parameters:
fqn - The FQN of the parent
Returns:
Set. A list of children. Returns null if no children nodes are present, or the parent is not present
java.lang.Exception

get

public java.lang.Object get(Fqn name,
                            java.lang.Object key)
                     throws java.lang.Exception
Description copied from interface: CacheLoader
Returns the value for a given key. Returns null if the node doesn't exist, or the value is not bound

Specified by:
get in interface CacheLoader
Parameters:
name -
Returns:
Throws:
java.lang.Exception

get

public java.util.Map get(Fqn name)
                  throws java.lang.Exception
Description copied from interface: CacheLoader
Returns all keys and values from the persistent store, given a fully qualified name

Specified by:
get in interface CacheLoader
Parameters:
name -
Returns:
Map of keys and values for the given node. Returns null if the node was not found, or if the node has no attributes
Throws:
java.lang.Exception

exists

public boolean exists(Fqn name)
               throws java.lang.Exception
Description copied from interface: CacheLoader
Checks whether the CacheLoader has a node with Fqn

Specified by:
exists in interface CacheLoader
Parameters:
name -
Returns:
True if node exists, false otherwise
java.lang.Exception

put

public java.lang.Object put(Fqn name,
                            java.lang.Object key,
                            java.lang.Object value)
                     throws java.lang.Exception
Description copied from interface: CacheLoader
Inserts key and value into the attributes hashmap of the given node. If the node does not exist, all parent nodes from the root down are created automatically. Returns the old value

Specified by:
put in interface CacheLoader
java.lang.Exception

put

public void put(Fqn name,
                java.util.Map attributes)
         throws java.lang.Exception
Description copied from interface: CacheLoader
Inserts all elements of attributes into the attributes hashmap of the given node, overwriting existing attributes, but not clearing the existing hashmap before insertion (making it a union of existing and new attributes) If the node does not exist, all parent nodes from the root down are created automatically

Specified by:
put in interface CacheLoader
Parameters:
name - The fully qualified name of the node
attributes - A Map of attributes. Can be null
java.lang.Exception

put

public void put(Fqn fqn,
                java.util.Map attributes,
                boolean erase)
         throws java.lang.Exception
java.lang.Exception

put

public void put(java.util.List modifications)
         throws java.lang.Exception
Description copied from interface: CacheLoader
Inserts all modifications to the backend store. Overwrite whatever is already in the datastore.

Specified by:
put in interface CacheLoader
Parameters:
modifications - A List of modifications
Throws:
java.lang.Exception

remove

public java.lang.Object remove(Fqn name,
                               java.lang.Object key)
                        throws java.lang.Exception
Description copied from interface: CacheLoader
Removes the given key and value from the attributes of the given node. No-op if node doesn't exist

Specified by:
remove in interface CacheLoader
java.lang.Exception

remove

public void remove(Fqn name)
            throws java.lang.Exception
Description copied from interface: CacheLoader
Removes the given node. If the node is the root of a subtree, this will recursively remove all subnodes, depth-first

Specified by:
remove in interface CacheLoader
java.lang.Exception

removeData

public void removeData(Fqn name)
                throws java.lang.Exception
Description copied from interface: CacheLoader
Removes all attributes from a given node, but doesn't delete the node itself

Specified by:
removeData in interface CacheLoader
Parameters:
name -
Throws:
java.lang.Exception

prepare

public void prepare(java.lang.Object tx,
                    java.util.List modifications,
                    boolean one_phase)
             throws java.lang.Exception
Description copied from interface: CacheLoader
Prepare the modifications. For example, for a DB-based CacheLoader:
  1. Create a local (JDBC) transaction
  2. Associate the local transaction with tx (tx is the key)
  3. Execute the coresponding SQL statements against the DB (statements derived from modifications)
For non-transactional CacheLoader (e.g. file-based), this could be a null operation

Specified by:
prepare in interface CacheLoader
Parameters:
tx - The transaction, just used as a hashmap key
modifications - List, a list of all modifications within the given transaction
one_phase - Persist immediately and (for example) commit the local JDBC transaction as well. When true, we won't get a CacheLoader.commit(Object) or CacheLoader.rollback(Object) method call later
Throws:
java.lang.Exception

commit

public void commit(java.lang.Object tx)
            throws java.lang.Exception
Description copied from interface: CacheLoader
Commit the transaction. A DB-based CacheLoader would look up the local JDBC transaction asociated with tx and commit that transaction
Non-transactional CacheLoaders could simply write the data that was previously saved transiently under the given tx key, to (for example) a file system (note this only holds if the previous prepare() did not define one_phase=true

Specified by:
commit in interface CacheLoader
Parameters:
tx -
java.lang.Exception

rollback

public void rollback(java.lang.Object tx)
Description copied from interface: CacheLoader
Roll the transaction back. A DB-based CacheLoader would look up the local JDBC transaction asociated with tx and roll back that transaction

Specified by:
rollback in interface CacheLoader
Parameters:
tx -

loadEntireState

public byte[] loadEntireState()
                       throws java.lang.Exception
Description copied from interface: CacheLoader
Fetch the entire state for this cache from secondary storage (disk, DB) and return it as a byte buffer. This is for initialization of a new cache from a remote cache. The new cache would then call storeEntireState().
todo: define binary format for exchanging state

Specified by:
loadEntireState in interface CacheLoader
java.lang.Exception

storeEntireState

public void storeEntireState(byte[] state)
                      throws java.lang.Exception
Description copied from interface: CacheLoader
Store the given state in secondary storage. Overwrite whatever is currently in seconday storage.

Specified by:
storeEntireState in interface CacheLoader
java.lang.Exception

create

public void create()
            throws java.lang.Exception
Specified by:
create in interface org.jboss.system.Service
java.lang.Exception

start

public void start()
           throws java.lang.Exception
Specified by:
start in interface org.jboss.system.Service
java.lang.Exception

stop

public void stop()
Specified by:
stop in interface org.jboss.system.Service

destroy

public void destroy()
Specified by:
destroy in interface org.jboss.system.Service

delegateGetChildrenNames

protected abstract java.util.Set delegateGetChildrenNames(Fqn fqn)
                                                   throws java.lang.Exception
java.lang.Exception

delegateGet

protected abstract java.lang.Object delegateGet(Fqn name,
                                                java.lang.Object key)
                                         throws java.lang.Exception
java.lang.Exception

delegateGet

protected abstract java.util.Map delegateGet(Fqn name)
                                      throws java.lang.Exception
java.lang.Exception

delegateExists

protected abstract boolean delegateExists(Fqn name)
                                   throws java.lang.Exception
java.lang.Exception

delegatePut

protected abstract java.lang.Object delegatePut(Fqn name,
                                                java.lang.Object key,
                                                java.lang.Object value)
                                         throws java.lang.Exception
java.lang.Exception

delegatePut

protected abstract void delegatePut(Fqn name,
                                    java.util.Map attributes)
                             throws java.lang.Exception
java.lang.Exception

delegateRemove

protected abstract java.lang.Object delegateRemove(Fqn name,
                                                   java.lang.Object key)
                                            throws java.lang.Exception
java.lang.Exception

delegateRemove

protected abstract void delegateRemove(Fqn name)
                                throws java.lang.Exception
java.lang.Exception

delegateRemoveData

protected abstract void delegateRemoveData(Fqn name)
                                    throws java.lang.Exception
java.lang.Exception

delegateLoadEntireState

protected abstract byte[] delegateLoadEntireState()
                                           throws java.lang.Exception
java.lang.Exception

delegateStoreEntireState

protected abstract void delegateStoreEntireState(byte[] state)
                                          throws java.lang.Exception
java.lang.Exception


Copyright © 1998-2005 JBoss Inc . All Rights Reserved.