예제 #1
0
        public JObject EnsureMerge(Guid id, JObject update, JObject other)
        {
            //TODO: (jmd 2015-11-25) Dummy for designing the interface. Remove.
            //throw new JsonMergeConflictException(new DummyMergeResult());

            if (!area.HistoryEnabled)
            {
                return(update);
            }

            if (update["$version"] == null)
            {
                throw new InvalidOperationException("A $version property is required for all PUT request, it should be the version of the document as you retreived it.");
            }

            int uVersion = (int)update["$version"];
            int oVersion = (int)other["$version"];

            if (uVersion == oVersion)
            {
                return(update);
            }

            JObject origin = area.History.Get(id, uVersion);

            return((JObject)merger
                   .Merge(update, other, origin)
                   .AddVersion(uVersion, oVersion)
                   .Merged);
        }