|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
public interface MicroKernel
The MicroKernel design goals/principles:
| Method Summary | |
|---|---|
String |
branch(String trunkRevisionId)
Creates a private branch revision off the specified public trunk revision. |
String |
commit(String path,
String jsonDiff,
String revisionId,
String message)
Applies the specified changes on the specified target node. |
String |
diff(String fromRevisionId,
String toRevisionId,
String filter)
Returns the JSON diff representation of the changes between the specified revisions. |
void |
dispose()
Dispose this instance. |
long |
getChildNodeCount(String path,
String revisionId)
Returns the number of child nodes of the specified node. |
String |
getHeadRevision()
Return the id of the current head revision. |
String |
getJournal(String fromRevisionId,
String toRevisionId,
String filter)
Returns a revision journal, starting with fromRevisionId
and ending with toRevisionId in chronological order. |
long |
getLength(String blobId)
Returns the length of the specified blob. |
String |
getNodes(String path,
String revisionId)
Returns the node tree rooted at the specified parent node with depth 1. |
String |
getNodes(String path,
String revisionId,
int depth,
long offset,
int count,
String filter)
Returns the node tree rooted at the specified parent node with the specified depth, maximum child node count and offset. |
String |
getRevisionHistory(long since,
int maxEntries)
Returns a list of all currently available (historical) head revisions in chronological order since a specific point. |
String |
merge(String branchRevisionId,
String message)
Merges the specified private branch revision with the current head revision. |
boolean |
nodeExists(String path,
String revisionId)
Determines whether the specified node exists. |
int |
read(String blobId,
long pos,
byte[] buff,
int off,
int length)
Reads up to length bytes of data from the specified blob into
the given array of bytes. |
String |
waitForCommit(String oldHeadRevisionId,
long timeout)
Waits for a commit to occur that is more recent than oldHeadRevisionId. |
String |
write(InputStream in)
Stores the content of the given stream and returns an associated identifier for later retrieval. |
| Method Detail |
|---|
void dispose()
String getHeadRevision()
throws MicroKernelException
MicroKernelException - if an error occurs
String getRevisionHistory(long since,
int maxEntries)
throws MicroKernelException
[
{
"id" : "<revisionId>",
"ts" : <revisionTimestamp>,
"msg" : "<commitMessage>"
},
...
]
since - timestamp (ms) of earliest revision to be returnedmaxEntries - maximum #entries to be returned;
if < 0, no limit will be applied.
MicroKernelException - if an error occurs
String waitForCommit(String oldHeadRevisionId,
long timeout)
throws MicroKernelException,
InterruptedException
oldHeadRevisionId.
This method allows for efficient polling for new revisions. The method
will return the id of the current head revision if it is more recent than
oldHeadRevisionId, or waits if either the specified amount of time
has elapsed or a new head revision has become available.
if a zero or negative timeout value has been specified the method
will return immediately, i.e. calling waitForCommit(0) is
equivalent to calling getHeadRevision().
oldHeadRevisionId - id of earlier head revisiontimeout - the maximum time to wait in milliseconds
MicroKernelException - if an error occurs
InterruptedException - if the thread was interrupted
String getJournal(String fromRevisionId,
String toRevisionId,
String filter)
throws MicroKernelException
fromRevisionId
and ending with toRevisionId in chronological order.
Format:
[
{
"id" : "<revisionId>",
"ts" : <revisionTimestamp>,
"msg" : "<commitMessage>",
"changes" : "<JSON diff>"
},
...
]
If fromRevisionId and toRevisionId are not in chronological
order the returned journal will be empty (i.e. [])
A MicroKernelException is thrown if either fromRevisionId
or toRevisionId doesn't exist, denotes a private branch
revision or if another error occurs.
fromRevisionId - id of first revision to be returned in journaltoRevisionId - id of last revision to be returned in journal,
if null the current head revision is assumedfilter - (optional) filter criteria
(e.g. path, property names, etc);
TODO specify format and semantics
MicroKernelException - if an error occurs
String diff(String fromRevisionId,
String toRevisionId,
String filter)
throws MicroKernelException
fromRevisionId and toRevisionId
don't need not be in a specific chronological order.
fromRevisionId - a revision id, if null the current head revision is assumedtoRevisionId - another revision id, if null the current head revision is assumedfilter - (optional) filter criteria
(e.g. path, property names, etc);
TODO specify format and semantics
MicroKernelException - if an error occurs
boolean nodeExists(String path,
String revisionId)
throws MicroKernelException
path - path denoting noderevisionId - revision id, if null the current head revision is assumed
true if the specified node exists, otherwise false
MicroKernelException - if an error occurs
long getChildNodeCount(String path,
String revisionId)
throws MicroKernelException
getNodes(path, revisionId, 0, 0, 0) and evaluating
the :childNodeCount property.
path - path denoting noderevisionId - revision id, if null the current head revision is assumed
MicroKernelException - if the specified node does not exist or if an error occurs
String getNodes(String path,
String revisionId)
throws MicroKernelException
:childNodeCount). Example:
{
"someprop": "someval",
":childNodeCount": 2,
"child1" : {
"prop1": "foo",
":childNodeCount": 2
},
"child2": {
"prop1": "bar"
":childNodeCount": 0
}
}
Remarks:
:childNodeCount equals 0, then the
node does not have any child nodes.
:childNodeCount is larger than the number
of returned child nodes, then the node has more child nodes than those
included in the tree. Large number of child nodes can be retrieved in
chunks using getNodes(String, String, int, long, int, String)getNodes(path, revisionId, 1, 0, -1, null)
path - path denoting root of node tree to be retrievedrevisionId - revision id, if null the current head revision is assumed
null if the specified node does not exist
MicroKernelException - if the specified revision does not exist or if another error occurs
String getNodes(String path,
String revisionId,
int depth,
long offset,
int count,
String filter)
throws MicroKernelException
depth parameter:
| depth = 0 | properties, including :childNodeCount and
child node names (i.e. empty child node objects) |
| depth = 1 | properties, child nodes and their properties (including
:childNodeCount) |
| depth = 2 | [and so on...] |
offset and count parameters are only applied to the
direct child nodes of the root of the returned node tree.
path - path denoting root of node tree to be retrievedrevisionId - revision id, if null the current head revision is assumeddepth - maximum depth of returned treeoffset - start position in the iteration order of child nodes (0 to start at the
beginning)count - maximum number of child nodes to retrieve (-1 for all)filter - (optional) filter criteria
(e.g. names of properties to be included, etc);
TODO specify format and semantics
null if the specified node does not exist
MicroKernelException - if the specified revision does not exist or if another error occurs
String commit(String path,
String jsonDiff,
String revisionId,
String message)
throws MicroKernelException
If path.length() == 0 the paths specified in the
jsonDiff are expected to be absolute.
The implementation tries to merge changes if the revision id of the commit is set accordingly. As an example, deleting a node is allowed if the node existed in the given revision, even if it was deleted in the meantime.
path - path denoting target nodejsonDiff - changes to be applied in JSON diff format.revisionId - id of revision the changes are based on,
if null the current head revision is assumedmessage - commit message
MicroKernelException - if an error occurs
String branch(String trunkRevisionId)
throws MicroKernelException
MicroKernelException is thrown if trunkRevisionId doesn't
exist, if it's not a trunk revision (i.e. it's not reachable
by traversing the revision history in reverse chronological order starting
from the current head revision) or if another error occurs.
trunkRevisionId - id of public trunk revision to base branch on,
if null the current head revision is assumed
MicroKernelException - if trunkRevisionId doesn't exist,
if it's not a trunk revision
or if another error occursmerge(String, String)
String merge(String branchRevisionId,
String message)
throws MicroKernelException
MicroKernelException is thrown if branchRevisionId doesn't
exist, if it's not a branch revision, if the merge fails because of
conflicting changes or if another error occurs.
branchRevisionId - id of private branch revisionmessage - commit message
MicroKernelException - if branchRevisionId doesn't exist,
if it's not a branch revision, if the merge
fails because of conflicting changes or if
another error occurs.branch(String)
long getLength(String blobId)
throws MicroKernelException
blobId - blob identifier
MicroKernelException - if an error occurs
int read(String blobId,
long pos,
byte[] buff,
int off,
int length)
throws MicroKernelException
length bytes of data from the specified blob into
the given array of bytes. An attempt is made to read as many as
length bytes, but a smaller number may be read.
The number of bytes actually read is returned as an integer.
blobId - blob identifierpos - the offset within the blobbuff - the buffer into which the data is read.off - the start offset in array buff
at which the data is written.length - the maximum number of bytes to read
-1 if there is no more data because the end of
the blob content has been reached.
MicroKernelException - if an error occurs
String write(InputStream in)
throws MicroKernelException
If identical stream content has been stored previously, then the existing identifier will be returned instead of storing a redundant copy.
The stream is closed by this method.
in - InputStream providing the blob content
MicroKernelException - if an error occurs
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||