org.apache.jackrabbit.core.persistence.mem
Class InMemBundlePersistenceManager

java.lang.Object
  extended by org.apache.jackrabbit.core.persistence.bundle.AbstractBundlePersistenceManager
      extended by org.apache.jackrabbit.core.persistence.mem.InMemBundlePersistenceManager
All Implemented Interfaces:
CacheAccessListener, CachingPersistenceManager, ConsistencyChecker, IterablePersistenceManager, PersistenceManager

public class InMemBundlePersistenceManager
extends AbstractBundlePersistenceManager

BundleInMemPersistenceManager is a HashMap-based PersistenceManager for Jackrabbit that keeps all data in memory and that is capable of storing and loading its contents using a simple custom binary serialization format (see Serializer).

It is configured through the following properties:

Please note that this class should only be used for testing purposes.


Nested Class Summary
protected static interface InMemBundlePersistenceManager.CloseableBLOBStore
          Helper interface for closeable stores
protected  class InMemBundlePersistenceManager.InMemBLOBStore
          Trivial BLOBStore implementation that is backed by a HashMap.
 
Field Summary
protected  BundleBinding binding
          the bundle binding
protected  FileSystem blobFS
          File system where BLOB data is stored.
protected static String BLOBS_FILE_PATH
          Path where blobs are stored on shutdown.
protected  BLOBStore blobStore
          Blob store.
protected static String BUNDLE_FILE_PATH
          Path where bundles are stored on shutdown.
protected  Map<NodeId,byte[]> bundleStore
          Bundle memory store.
protected  ErrorHandling errorHandling
          Flag for error handling.
protected static int INITIAL_BUFFER_SIZE
          Initial size of buffer used to serialize objects.
protected  int initialCapacity
          initial capacity
protected  boolean initialized
          flag indicating if this manager was initialized
protected  float loadFactor
          load factor for the hash map
protected  boolean persistent
          Should hash map be persisted?
protected static String REFS_FILE_PATH
          Path where references are stored on shutdown.
protected  Map<NodeId,byte[]> refsStore
          References memory store.
protected  boolean useFileBlobStore
          Store blobs on file system instead of memory.
protected  FileSystem wspFS
          File system where the content of the hash maps are read from/written to (if persistent==true)
 
Fields inherited from class org.apache.jackrabbit.core.persistence.bundle.AbstractBundlePersistenceManager
context, NODEFILENAME, NODEREFSFILENAME, RES_NAME_INDEX, RES_NS_INDEX
 
Fields inherited from interface org.apache.jackrabbit.core.cache.CacheAccessListener
ACCESS_INTERVAL
 
Constructor Summary
InMemBundlePersistenceManager()
          Creates a new InMemBundlePersistenceManager instance.
 
Method Summary
 void close()
          Closes the persistence manager.
protected  void destroy(NodeReferences refs)
          Deletes the node references from the underlying system.
protected  void destroyBundle(NodePropBundle bundle)
          Deletes the bundle from the underlying system.
 boolean existsReferencesTo(NodeId targetId)
          Checks whether references of the identified target node exist.
 List<NodeId> getAllNodeIds(NodeId after, int maxCount)
          Get all node ids.
protected  BLOBStore getBlobStore()
          Returns the BLOB store used by this persistence manager.
 String getInitialCapacity()
           
 String getLoadFactor()
           
 String getMinBlobSize()
           
 void init(PMContext context)
          Initializes the persistence manager.
 boolean isPersistent()
           
protected  NodePropBundle loadBundle(NodeId id)
          Loads a bundle from the underlying system.
 void loadContents()
          Reads the content of the hash maps from the file system
 NodeReferences loadReferencesTo(NodeId id)
          Load the persisted references to the node with the given identifier.
 void setInitialCapacity(int initialCapacity)
           
 void setInitialCapacity(String initialCapacity)
           
 void setLoadFactor(float loadFactor)
           
 void setLoadFactor(String loadFactor)
           
 void setMinBlobSize(String minBlobSize)
           
 void setPersistent(boolean persistent)
           
 void setPersistent(String persistent)
           
 void setUseFileBlobStore(boolean useFileBlobStore)
           
 void setUseFileBlobStore(String useFileBlobStore)
           
protected  void store(NodeReferences refs)
          Stores a node references to the underlying system.
protected  void storeBundle(NodePropBundle bundle)
          Stores a bundle to the underlying system.
 void storeContents()
          Writes the content of the hash maps stores to the file system.
 
Methods inherited from class org.apache.jackrabbit.core.persistence.bundle.AbstractBundlePersistenceManager
buildBlobFilePath, buildNodeFilePath, buildNodeFolderPath, buildNodeReferencesFilePath, buildPropFilePath, cacheAccessed, check, checkConsistency, createNew, createNew, disposeCache, evictBundle, exists, exists, getBundleCacheSize, getNameIndex, getNsIndex, load, load, onExternalUpdate, setBundleCacheSize, store
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

initialized

protected boolean initialized
flag indicating if this manager was initialized


BUNDLE_FILE_PATH

protected static final String BUNDLE_FILE_PATH
Path where bundles are stored on shutdown. (if persistent==true)

See Also:
Constant Field Values

BLOBS_FILE_PATH

protected static final String BLOBS_FILE_PATH
Path where blobs are stored on shutdown. (if persistent==true and useFileBlobStore==false)

See Also:
Constant Field Values

REFS_FILE_PATH

protected static final String REFS_FILE_PATH
Path where references are stored on shutdown. (if persistent==true)

See Also:
Constant Field Values

wspFS

protected FileSystem wspFS
File system where the content of the hash maps are read from/written to (if persistent==true)


blobFS

protected FileSystem blobFS
File system where BLOB data is stored. (if useFileBlobStore==true)


INITIAL_BUFFER_SIZE

protected static final int INITIAL_BUFFER_SIZE
Initial size of buffer used to serialize objects.

See Also:
Constant Field Values

errorHandling

protected ErrorHandling errorHandling
Flag for error handling.


binding

protected BundleBinding binding
the bundle binding


bundleStore

protected Map<NodeId,byte[]> bundleStore
Bundle memory store.


refsStore

protected Map<NodeId,byte[]> refsStore
References memory store.


blobStore

protected BLOBStore blobStore
Blob store.


initialCapacity

protected int initialCapacity
initial capacity


loadFactor

protected float loadFactor
load factor for the hash map


persistent

protected boolean persistent
Should hash map be persisted?


useFileBlobStore

protected boolean useFileBlobStore
Store blobs on file system instead of memory.

Constructor Detail

InMemBundlePersistenceManager

public InMemBundlePersistenceManager()
Creates a new InMemBundlePersistenceManager instance.

Method Detail

setInitialCapacity

public void setInitialCapacity(int initialCapacity)

setInitialCapacity

public void setInitialCapacity(String initialCapacity)

getInitialCapacity

public String getInitialCapacity()

setLoadFactor

public void setLoadFactor(float loadFactor)

setLoadFactor

public void setLoadFactor(String loadFactor)

getLoadFactor

public String getLoadFactor()

isPersistent

public boolean isPersistent()

setPersistent

public void setPersistent(boolean persistent)

setPersistent

public void setPersistent(String persistent)

setUseFileBlobStore

public void setUseFileBlobStore(boolean useFileBlobStore)

setUseFileBlobStore

public void setUseFileBlobStore(String useFileBlobStore)

getMinBlobSize

public String getMinBlobSize()

setMinBlobSize

public void setMinBlobSize(String minBlobSize)

loadContents

public void loadContents()
                  throws Exception
Reads the content of the hash maps from the file system

Throws:
Exception - if an error occurs

storeContents

public void storeContents()
                   throws Exception
Writes the content of the hash maps stores to the file system.

Throws:
Exception - if an error occurs

init

public void init(PMContext context)
          throws Exception
Initializes the persistence manager. The persistence manager is permanently bound to the given context, and any required external resources are acquired.

An appropriate exception is thrown if the persistence manager initialization fails for whatever reason. In this case the state of the persistence manager is undefined and the instance should be discarded. Initializes the internal structures of this abstract persistence manager.

Specified by:
init in interface PersistenceManager
Overrides:
init in class AbstractBundlePersistenceManager
Parameters:
context - persistence manager context
Throws:
Exception - if the persistence manager initialization failed

close

public void close()
           throws Exception
Closes the persistence manager. The consistency of the persistent storage is guaranteed and all acquired resources are released. It is an error to invoke any methods on a closed persistence manager, and implementations are free to enforce this constraint by throwing IllegalStateExceptions in such cases.

An appropriate exception is thrown if the persistence manager could not be closed properly. In this case the state of the persistence manager is undefined and the instance should be discarded. Closes the persistence manager, release acquired resources.

Specified by:
close in interface PersistenceManager
Overrides:
close in class AbstractBundlePersistenceManager
Throws:
Exception - if the persistence manager failed to close properly

loadReferencesTo

public NodeReferences loadReferencesTo(NodeId id)
                                throws NoSuchItemStateException,
                                       ItemStateException
Load the persisted references to the node with the given identifier.

Parameters:
id - reference target node id
Throws:
NoSuchItemStateException - if the target node does not exist
ItemStateException - if another error occurs

store

protected void store(NodeReferences refs)
              throws ItemStateException
Stores a node references to the underlying system.

Specified by:
store in class AbstractBundlePersistenceManager
Parameters:
refs - the node references to store.
Throws:
ItemStateException - if an error while storing occurs.

existsReferencesTo

public boolean existsReferencesTo(NodeId targetId)
                           throws ItemStateException
Checks whether references of the identified target node exist.

Parameters:
targetId - target node id
Returns:
true if the references exist, false otherwise
Throws:
ItemStateException - on persistence manager errors

destroy

protected void destroy(NodeReferences refs)
                throws ItemStateException
Deletes the node references from the underlying system.

Specified by:
destroy in class AbstractBundlePersistenceManager
Parameters:
refs - the node references to destroy.
Throws:
ItemStateException - if an error while destroying occurs.

getAllNodeIds

public List<NodeId> getAllNodeIds(NodeId after,
                                  int maxCount)
                           throws ItemStateException,
                                  RepositoryException
Get all node ids. A typical application will call this method multiple times, where 'after' is the last row read. The maxCount parameter defines the maximum number of node ids returned, 0 meaning no limit. The order of the node ids is specific for the given persistent manager. Items that are added concurrently may not be included.

Parameters:
after - the lower limit, or null for no limit.
maxCount - the maximum number of node ids to return, or 0 for no limit.
Returns:
a list of all bundles.
Throws:
ItemStateException - if an error while loading occurs.
RepositoryException - if a repository exception occurs

loadBundle

protected NodePropBundle loadBundle(NodeId id)
                             throws ItemStateException
Loads a bundle from the underlying system.

Specified by:
loadBundle in class AbstractBundlePersistenceManager
Parameters:
id - the node id of the bundle
Returns:
the loaded bundle or null if the bundle does not exist.
Throws:
ItemStateException - if an error while loading occurs.

storeBundle

protected void storeBundle(NodePropBundle bundle)
                    throws ItemStateException
Stores a bundle to the underlying system.

Specified by:
storeBundle in class AbstractBundlePersistenceManager
Parameters:
bundle - the bundle to store
Throws:
ItemStateException - if an error while storing occurs.

destroyBundle

protected void destroyBundle(NodePropBundle bundle)
                      throws ItemStateException
Deletes the bundle from the underlying system.

Specified by:
destroyBundle in class AbstractBundlePersistenceManager
Parameters:
bundle - the bundle to destroy
Throws:
ItemStateException - if an error while destroying occurs.

getBlobStore

protected BLOBStore getBlobStore()
Returns the BLOB store used by this persistence manager.

Specified by:
getBlobStore in class AbstractBundlePersistenceManager
Returns:
BLOB store


Copyright © 2004-2012 The Apache Software Foundation. All Rights Reserved.