org.jboss.cache.loader.jdbm
Class JdbmCacheLoader

java.lang.Object
  extended by org.jboss.cache.loader.AbstractCacheLoader
      extended by org.jboss.cache.loader.jdbm.JdbmCacheLoader
All Implemented Interfaces:
Lifecycle, CacheLoader
Direct Known Subclasses:
JdbmCacheLoader2

@ThreadSafe
public class JdbmCacheLoader
extends AbstractCacheLoader

A persistent CacheLoader based on the JDBM project. See http://jdbm.sourceforge.net/ . Does not support transaction isolation.

The configuration string format is:

environmentDirectoryName[#databaseName]

where databaseName, if omitted, defaults to the ClusterName property of the Cache.

Data is sorted out like:

 / = N
 /node1 = N
 /node1/K/k1 = v1
 /node1/K/k2 = v2
 /node2 = N
 /node2/node3 = N
 /node2/node3/K/k1 = v1
 /node2/node3/K/k2 = v2
 /node2/node4 = N
 
N represents a node, K represents a key block. k and v represent key/value pairs.

The browse operations lock the entire tree; eventually the JDBM team plans to fix this.

Version:
$Id: JdbmCacheLoader.java 7261 2008-12-07 18:53:38Z genman $
Author:
Elias Ross

Field Summary
 
Fields inherited from class org.jboss.cache.loader.AbstractCacheLoader
buddyFqnTransformer, cache, regionManager, transactions
 
Constructor Summary
JdbmCacheLoader()
           
 
Method Summary
protected  void checkNonNull(Object param, String paramName)
          Throws an exception if the parameter is null.
protected  void checkNotOpen()
          Throws an exception if the environment is not open.
 void create()
           
 void dump()
          Dumps the tree to debug.
 void dump(Object key)
          Dumps the tree past the key to debug.
 boolean exists(Fqn name)
          Returns whether the given node exists.
 Map get(Fqn name)
          Returns a map containing all key-value pairs for the given FQN, or null if the node is not present.
 Set<?> getChildrenNames(Fqn name)
          Returns an unmodifiable set of relative children names, or returns null if the parent node is not found or if no children are found.
 CacheLoaderConfig.IndividualCacheLoaderConfig getConfig()
          Gets the configuration.
 void put(Fqn name, Map values)
          Stores a map of key-values for a given FQN, but does not delete existing key-value pairs (that is, it does not erase).
 Object put(Fqn name, Object key, Object value)
          Stores a single FQN-key-value record.
 void put(List<Modification> modifications)
          Applies the given modifications.
 void remove(Fqn name)
          Deletes the node for a given FQN and all its descendent nodes.
 Object remove(Fqn name, Object key)
          Deletes a single FQN-key-value record.
 void removeData(Fqn name)
          Clears the map for the given node, but does not remove the node.
 void setCache(CacheSPI c)
          Sets the CacheImpl owner of this cache loader.
 void setConfig(CacheLoaderConfig.IndividualCacheLoaderConfig base)
          Sets the configuration string for this cache loader.
 int size()
          Returns the number of database record nodes.
 void start()
          Opens the environment and the database specified by the configuration string.
 void stop()
          Closes the databases and environment, and nulls references to them.
 String toString()
           
 
Methods inherited from class org.jboss.cache.loader.AbstractCacheLoader
commit, destroy, doMarshall, doUnmarshall, getMarshaller, getNodeDataList, loadEntireState, loadState, loadStateHelper, move, prepare, put, regionAwareMarshall, regionAwareUnmarshall, rollback, setRegionManager, storeEntireState, storeState, storeStateHelper
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

JdbmCacheLoader

public JdbmCacheLoader()
Method Detail

create

public void create()
            throws Exception
Specified by:
create in interface Lifecycle
Overrides:
create in class AbstractCacheLoader
Throws:
Exception

start

public void start()
           throws Exception
Opens the environment and the database specified by the configuration string. The environment and databases are created if necessary.

Specified by:
start in interface Lifecycle
Overrides:
start in class AbstractCacheLoader
Throws:
Exception

stop

public void stop()
Closes the databases and environment, and nulls references to them.

Specified by:
stop in interface Lifecycle
Overrides:
stop in class AbstractCacheLoader

setConfig

public void setConfig(CacheLoaderConfig.IndividualCacheLoaderConfig base)
Sets the configuration string for this cache loader.

Parameters:
base - May be an instance of the CacheLoaderConfig.IndividualCacheLoaderConfig base class, in which case the cache loader should use the PluggableConfigurationComponent.getProperties() method to find configuration information. Alternatively, may be a type-specific subclass of CacheLoaderConfig.IndividualCacheLoaderConfig, if there is one.

getConfig

public CacheLoaderConfig.IndividualCacheLoaderConfig getConfig()
Description copied from interface: CacheLoader
Gets the configuration.

Returns:
the configuration, represented by a CacheLoaderConfig.IndividualCacheLoaderConfig object.

setCache

public void setCache(CacheSPI c)
Sets the CacheImpl owner of this cache loader.

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

getChildrenNames

public Set<?> getChildrenNames(Fqn name)
                        throws IOException
Returns an unmodifiable set of relative children names, or returns null if the parent node is not found or if no children are found. This is a fairly expensive operation, and is assumed to be performed by browser applications. Calling this method as part of a run-time transaction is not recommended.

Parameters:
name - The Fqn of the parent
Returns:
Set a set of children. Returns null if no children nodes are present, or the parent is not present
Throws:
IOException

get

public Map get(Fqn name)
        throws Exception
Returns a map containing all key-value pairs for the given FQN, or null if the node is not present. This operation is always non-transactional, even in a transactional environment.

Parameters:
name - the Fqn to search for.
Returns:
Map keys and values for the given node. Returns null if the node is not found. If the node is found but has no attributes, this method returns an empty Map.
Throws:
Exception

exists

public boolean exists(Fqn name)
               throws IOException
Returns whether the given node exists.

Returns:
true if node exists, false otherwise
Throws:
IOException

put

public Object put(Fqn name,
                  Object key,
                  Object value)
           throws Exception
Stores a single FQN-key-value record. Intended to be used in a non-transactional environment, but will use auto-commit in a transactional environment.

Throws:
Exception

put

public void put(Fqn name,
                Map values)
         throws Exception
Stores a map of key-values for a given FQN, but does not delete existing key-value pairs (that is, it does not erase). Intended to be used in a non-transactional environment, but will use auto-commit in a transactional environment.

Parameters:
name - The fully qualified name of the node
values - A Map of attributes. Can be null
Throws:
Exception

put

public void put(List<Modification> modifications)
         throws Exception
Applies the given modifications. Intended to be used in a non-transactional environment, but will use auto-commit in a transactional environment.

Specified by:
put in interface CacheLoader
Overrides:
put in class AbstractCacheLoader
Parameters:
modifications - A List of modifications
Throws:
Exception

remove

public void remove(Fqn name)
            throws IOException
Deletes the node for a given FQN and all its descendent nodes. Intended to be used in a non-transactional environment, but will use auto-commit in a transactional environment.

Parameters:
name - the Fqn of the node
Throws:
IOException

remove

public Object remove(Fqn name,
                     Object key)
              throws Exception
Deletes a single FQN-key-value record. Intended to be used in a non-transactional environment, but will use auto-commit in a transactional environment.

Throws:
Exception

removeData

public void removeData(Fqn name)
                throws Exception
Clears the map for the given node, but does not remove the node.

Parameters:
name - the Fqn of the node
Throws:
Exception

checkNotOpen

protected void checkNotOpen()
Throws an exception if the environment is not open.


checkNonNull

protected void checkNonNull(Object param,
                            String paramName)
Throws an exception if the parameter is null.


dump

public void dump()
          throws IOException
Dumps the tree to debug.

Throws:
IOException

dump

public void dump(Object key)
          throws IOException
Dumps the tree past the key to debug.

Throws:
IOException

size

public int size()
Returns the number of database record nodes.


toString

public String toString()
Overrides:
toString in class Object


Copyright © 2009 JBoss, a division of Red Hat. All Rights Reserved.