Indicates whether the pointer is added in the list of operations
Applies the resolving strategy between the last known revision baseDoc
(or None
if the document did not exist before to the client knowledge),
the last revision in the database lastDoc
(or None
if the document was deleted)
and the document the client wants to save currentDoc
.
Applies the resolving strategy between the last known revision baseDoc
(or None
if the document did not exist before to the client knowledge),
the last revision in the database lastDoc
(or None
if the document was deleted)
and the document the client wants to save currentDoc
.
If no automatic merge could be found, then returns None
, which results in a conflict exception.
When JNothing
is returned no further try is performed and the saving is considered succesful by
keeping the current version in the database.
Indicates whether the operation modifies the pointer or one of its children
Indicates whether an operation exists in the list that modifies the pointer or one of its parents
This strategy applies a simple structural merge algorithm between variation from a base document to the last one in the database and from the base to the current revision of the document to merge
In our case, the base document is taken as common ancestor and we create patches that models these changes:
base
,db
andcurrent
respectively the base document, the last document from the database and the document one wants to saveBD
be the name of the patch frombase
todb
andBC
be the patch frombase
tocurrent
.DC
the patch that makes the same modifications asBC
but in the context of documentdb
db
The rules to apply when merging paths are the following:
As a special case, if the document was deleted inbetween, the current document is saved "as is" in the database (without revision)