Interface Root
Root instance serves as a container for a Tree. It is
obtained from a ContentSession, which governs accessibility and
visibility of the Tree and its sub trees.
All root instances created by a content session become invalid after the
content session is closed. Any method called on an invalid root instance
will throw an InvalidStateException.
Tree instances may become non existing after a call to
refresh(), rebase() or commit().
Any write access to non existing Tree instances will cause an
InvalidStateException.
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringName of the entry of the commit path in theinfomap incommit(java.util.Map) -
Method Summary
Modifier and TypeMethodDescriptionvoidcommit()Atomically persists all changes made to the tree attached to this root.voidAtomically persists all changes made to the tree attached to this root.@NotNull BlobcreateBlob(@NotNull InputStream stream) Reads (and closes) the given stream and returns aBlobthat contains that binary.@Nullable BlobGet a blob by its reference.@NotNull ContentSessionGet theContentSessionfrom which this root was acquired@NotNull QueryEngineGet the query engine.@NotNull TreeRetrieve the possible non existingTreeat the given absolutepath.booleanDetermine whether there are changes on this treebooleanMove the child located atsourcePathto a child atdestPath.voidrebase()Rebase this root instance to the latest revision.voidrefresh()Reverts all changes made to this root and refreshed to the latest trunk.
-
Field Details
-
COMMIT_PATH
Name of the entry of the commit path in theinfomap incommit(java.util.Map)- See Also:
-
-
Method Details
-
move
Move the child located atsourcePathto a child atdestPath. Both paths must be absolute and resolve to a child located beneath this root.
This method does nothing and returnsfalseif- the tree at
sourcePathdoes not exist or is not accessible, - the parent of the tree at
destinationPathdoes not exist or is not accessible, - a tree already exists at
destinationPath.
destinationPathexists but is not accessible to the editing content session this method succeeds but a subsequentcommit()will detect the violation and fail.- Parameters:
sourcePath- The source pathdestPath- The destination path- Returns:
trueon success,falseotherwise.
- the tree at
-
getTree
Retrieve the possible non existingTreeat the given absolutepath. The path must resolve to a tree in this root.- Parameters:
path- absolute path to the tree- Returns:
- tree at the given path.
-
rebase
void rebase()Rebase this root instance to the latest revision. After a call to this method, trees obtained throughgetTree(String)may become non existing. -
refresh
void refresh()Reverts all changes made to this root and refreshed to the latest trunk. After a call to this method, trees obtained throughgetTree(String)may become non existing. -
commit
Atomically persists all changes made to the tree attached to this root.If
infocontains a mapping forCOMMIT_PATHand the associated value is a string, implementations may throw aCommitFailedExceptionif there are changes outside of the subtree designated by that path and the implementation does not support such partial commits. However all implementation must handler the case where apathdesignates a subtree that contains all unpersisted changes.The
infomap is passed to the underlying storage as a part of the internal commit information attached to this commit. The commit information will be made available to local observers but will not be visible to observers on other cluster nodes.After a successful operation the root is automatically
refreshed, such that trees previously obtained throughgetTree(String)may become non existing.- Parameters:
info- commit information- Throws:
CommitFailedException- if the commit failed
-
commit
Atomically persists all changes made to the tree attached to this root. Calling this method is equivalent to calling thecommit(Map info)method with an empty info map.- Throws:
CommitFailedException- if the commit failed
-
hasPendingChanges
boolean hasPendingChanges()Determine whether there are changes on this tree- Returns:
trueiff this tree was modified
-
getQueryEngine
Get the query engine.- Returns:
- the query engine
-
createBlob
Reads (and closes) the given stream and returns aBlobthat contains that binary. The returned blob will remain valid at least until theContentSessionof this root is closed, or longer if it has been committed as a part of a content update.The implementation may decide to persist the blob at any point during or between this method method call and a
commit()that includes the blob, but the blob will become visible to other sessions only after such a commit.- Parameters:
stream- the stream for reading the binary- Returns:
- the blob that was created
- Throws:
IOException- if the stream could not be read
-
getBlob
Get a blob by its reference.- Parameters:
reference- reference to the blob- Returns:
- blob or
nullif the reference does not resolve to a blob. - See Also:
-
getContentSession
Get theContentSessionfrom which this root was acquired- Returns:
- the associated ContentSession
- Throws:
UnsupportedOperationException
-