Class MemoryNodeStore
- java.lang.Object
-
- org.apache.jackrabbit.oak.plugins.memory.MemoryNodeStore
-
- All Implemented Interfaces:
Observable,NodeStore
public class MemoryNodeStore extends java.lang.Object implements NodeStore, Observable
Basic in-memory node store implementation. Useful as a base class for more complex functionality.
-
-
Constructor Summary
Constructors Constructor Description MemoryNodeStore()MemoryNodeStore(NodeState state)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.io.CloseableaddObserver(Observer observer)Register a newObserver.@NotNull java.lang.Stringcheckpoint(long lifetime)Creates a new checkpoint of the latest root of the tree.@NotNull java.lang.Stringcheckpoint(long lifetime, @NotNull java.util.Map<java.lang.String,java.lang.String> properties)Creates a new checkpoint of the latest root of the tree.@NotNull java.util.Map<java.lang.String,java.lang.String>checkpointInfo(@NotNull java.lang.String checkpoint)Retrieve the properties associated with a checkpoint.@NotNull java.lang.Iterable<java.lang.String>checkpoints()Returns all valid checkpoints.ArrayBasedBlobcreateBlob(java.io.InputStream inputStream)Create aBlobfrom the given input stream.BlobgetBlob(@NotNull java.lang.String reference)Get a blob by its reference.NodeStategetRoot()Returns the latest state of the tree.java.util.Set<java.lang.String>listCheckpoints()test purpose only!NodeStatemerge(@NotNull NodeBuilder builder, @NotNull CommitHook commitHook, @NotNull CommitInfo info)This implementation is equal to first rebasing the builder and then applying it to a new branch and immediately merging it back.NodeStaterebase(@NotNull NodeBuilder builder)This implementation is equal to applying the differences between the builders base state and its head state to a fresh builder on the stores root state usingConflictAnnotatingRebaseDifffor resolving conflicts.booleanrelease(java.lang.String checkpoint)Releases the provided checkpoint.NodeStatereset(@NotNull NodeBuilder builder)This implementation is equal resetting the builder to the root of the store and returning the resulting node state from the builder.@Nullable NodeStateretrieve(@NotNull java.lang.String checkpoint)Retrieves the root node from a previously created repository checkpoint.java.lang.StringtoString()Returns a string representation the head state of this node store.
-
-
-
Constructor Detail
-
MemoryNodeStore
public MemoryNodeStore(NodeState state)
-
MemoryNodeStore
public MemoryNodeStore()
-
-
Method Detail
-
toString
public java.lang.String toString()
Returns a string representation the head state of this node store.- Overrides:
toStringin classjava.lang.Object
-
addObserver
public java.io.Closeable addObserver(Observer observer)
Description copied from interface:ObservableRegister a newObserver. Clients need to callCloseable.close()to stop getting notifications on the registered observer and to free up any resources associated with the registration.- Specified by:
addObserverin interfaceObservable- Returns:
- a
Closeableinstance.
-
getRoot
public NodeState getRoot()
Description copied from interface:NodeStoreReturns the latest state of the tree.
-
merge
public NodeState merge(@NotNull @NotNull NodeBuilder builder, @NotNull @NotNull CommitHook commitHook, @NotNull @NotNull CommitInfo info) throws CommitFailedException
This implementation is equal to first rebasing the builder and then applying it to a new branch and immediately merging it back.- Specified by:
mergein interfaceNodeStore- Parameters:
builder- the builder whose changes to applycommitHook- the commit hook to apply while merging changesinfo- commit info associated with this merge operation- Returns:
- the node state resulting from the merge.
- Throws:
CommitFailedExceptionjava.lang.IllegalArgumentException- if the builder is not acquired from a root state of this store
-
rebase
public NodeState rebase(@NotNull @NotNull NodeBuilder builder)
This implementation is equal to applying the differences between the builders base state and its head state to a fresh builder on the stores root state usingConflictAnnotatingRebaseDifffor resolving conflicts.
-
reset
public NodeState reset(@NotNull @NotNull NodeBuilder builder)
This implementation is equal resetting the builder to the root of the store and returning the resulting node state from the builder.
-
createBlob
public ArrayBasedBlob createBlob(java.io.InputStream inputStream) throws java.io.IOException
Description copied from interface:NodeStoreCreate aBlobfrom the given input stream. The input stream is closed after this method returns.- Specified by:
createBlobin interfaceNodeStore- Parameters:
inputStream- The input stream for theBlob- Returns:
- An instance of
ArrayBasedBlob. - Throws:
java.io.IOException- If an error occurs while reading from the stream
-
getBlob
public Blob getBlob(@NotNull @NotNull java.lang.String reference)
Description copied from interface:NodeStoreGet a blob by its reference.- Specified by:
getBlobin interfaceNodeStore- Parameters:
reference- reference to the blob- Returns:
- blob or
nullif the reference does not resolve to a blob. - See Also:
Blob.getReference()
-
checkpoint
@NotNull public @NotNull java.lang.String checkpoint(long lifetime, @NotNull @NotNull java.util.Map<java.lang.String,java.lang.String> properties)Description copied from interface:NodeStoreCreates a new checkpoint of the latest root of the tree. The checkpoint remains valid for at least as long as requested and allows that state of the repository to be retrieved using the returned opaque string reference.The
propertiespassed to this methods are associated with the checkpoint and can be retrieved through theNodeStore.checkpointInfo(String)method. Its semantics is entirely application specific.- Specified by:
checkpointin interfaceNodeStore- Parameters:
lifetime- time (in milliseconds, > 0) that the checkpoint should remain availableproperties- properties to associate with the checkpoint- Returns:
- string reference of this checkpoint
-
checkpoint
@NotNull public @NotNull java.lang.String checkpoint(long lifetime)
Description copied from interface:NodeStoreCreates a new checkpoint of the latest root of the tree. The checkpoint remains valid for at least as long as requested and allows that state of the repository to be retrieved using the returned opaque string reference.This method is a shortcut for
NodeStore.checkpoint(long, Map)passing an empty map for its 2nd argument.- Specified by:
checkpointin interfaceNodeStore- Parameters:
lifetime- time (in milliseconds, > 0) that the checkpoint should remain available- Returns:
- string reference of this checkpoint
-
checkpointInfo
@NotNull public @NotNull java.util.Map<java.lang.String,java.lang.String> checkpointInfo(@NotNull @NotNull java.lang.String checkpoint)Description copied from interface:NodeStoreRetrieve the properties associated with a checkpoint.- Specified by:
checkpointInfoin interfaceNodeStore- Parameters:
checkpoint- string reference of a checkpoint- Returns:
- the properties associated with the checkpoint referenced by
checkpointor an empty map when there is no such checkpoint.
-
checkpoints
@NotNull public @NotNull java.lang.Iterable<java.lang.String> checkpoints()
Description copied from interface:NodeStoreReturns all valid checkpoints. The returnedIterableprovides a snapshot of valid checkpoints at the time this method is called. That is, theIterablewill not reflect checkpoints created after this method was called.See
NodeStore.checkpoint(long, Map)for a definition of a valid checkpoint.- Specified by:
checkpointsin interfaceNodeStore- Returns:
- valid checkpoints.
-
retrieve
@Nullable public @Nullable NodeState retrieve(@NotNull @NotNull java.lang.String checkpoint)
Description copied from interface:NodeStoreRetrieves the root node from a previously created repository checkpoint.
-
release
public boolean release(java.lang.String checkpoint)
Description copied from interface:NodeStoreReleases the provided checkpoint. If the provided checkpoint doesn't exist this method should returntrue.
-
listCheckpoints
public java.util.Set<java.lang.String> listCheckpoints()
test purpose only!
-
-