Class InMemBundlePersistenceManager
- java.lang.Object
-
- org.apache.jackrabbit.core.persistence.bundle.AbstractBundlePersistenceManager
-
- org.apache.jackrabbit.core.persistence.mem.InMemBundlePersistenceManager
-
- All Implemented Interfaces:
CacheAccessListener
,CachingPersistenceManager
,ConsistencyChecker
,IterablePersistenceManager
,PersistenceManager
public class InMemBundlePersistenceManager extends AbstractBundlePersistenceManager
BundleInMemPersistenceManager
is aHashMap
-basedPersistenceManager
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 (seeSerializer
).It is configured through the following properties:
initialCapacity
: initial capacity of the hash map used to store the dataloadFactor
: load factor of the hash map used to store the datapersistent
: iftrue
the contents of the hash map is loaded on startup and stored on shutdown; iffalse
nothing is persisteduseFileBlobStore
: iftrue
the contents of the blobs will be directly stored on the file system instead of in memory.minBlobSize
use blob store for binaries properties larger than minBlobSite (bytes). Default is 4096.
Please note that this class should only be used for testing purposes.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static interface
InMemBundlePersistenceManager.CloseableBLOBStore
Helper interface for closeable storesprotected class
InMemBundlePersistenceManager.InMemBLOBStore
-
Field Summary
Fields Modifier and Type Field Description protected BundleBinding
binding
the bundle bindingprotected 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 capacityprotected boolean
initialized
flag indicating if this manager was initializedprotected float
loadFactor
load factor for the hash mapprotected 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 (ifpersistent==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
Constructors Constructor Description InMemBundlePersistenceManager()
Creates a newInMemBundlePersistenceManager
instance.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description 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 systemNodeReferences
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, getAllNodeInfos, getBundleCacheSize, getNameIndex, getNsIndex, load, load, onExternalUpdate, setBundleCacheSize, setEventChannel, store
-
-
-
-
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. (ifpersistent==true
)- See Also:
- Constant Field Values
-
BLOBS_FILE_PATH
protected static final String BLOBS_FILE_PATH
Path where blobs are stored on shutdown. (ifpersistent==true
anduseFileBlobStore==false
)- See Also:
- Constant Field Values
-
REFS_FILE_PATH
protected static final String REFS_FILE_PATH
Path where references are stored on shutdown. (ifpersistent==true
)- See Also:
- Constant Field Values
-
wspFS
protected FileSystem wspFS
File system where the content of the hash maps are read from/written to (ifpersistent==true
)
-
blobFS
protected FileSystem blobFS
File system where BLOB data is stored. (ifuseFileBlobStore==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
-
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.
-
-
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 interfacePersistenceManager
- Overrides:
init
in classAbstractBundlePersistenceManager
- 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 interfacePersistenceManager
- Overrides:
close
in classAbstractBundlePersistenceManager
- 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 existItemStateException
- if another error occurs
-
store
protected void store(NodeReferences refs) throws ItemStateException
Stores a node references to the underlying system.- Specified by:
store
in classAbstractBundlePersistenceManager
- 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 classAbstractBundlePersistenceManager
- 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 previously. 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 node ids.
- 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 classAbstractBundlePersistenceManager
- 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 classAbstractBundlePersistenceManager
- 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 classAbstractBundlePersistenceManager
- 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 classAbstractBundlePersistenceManager
- Returns:
- BLOB store
-
-