public override void OnPut(string key, RavenJObject document, RavenJObject metadata, TransactionInformation transactionInformation)
{
using(Database.DisableAllTriggersForCurrentThread())
{
metadata.Remove(ReplicationConstants.RavenReplicationConflict);// you can't put conflicts
var oldVersion = Database.Get(key, transactionInformation);
if (oldVersion == null)
return;
if (oldVersion.Metadata[ReplicationConstants.RavenReplicationConflict] == null)
return;
// this is a conflict document, holding document keys in the
// values of the properties
foreach (var prop in oldVersion.DataAsJson.Value<RavenJArray>("Conflicts"))
{
Database.Delete(prop.Value<string>(), null, transactionInformation);
}
}
}
}