public Handle ( ISyncEvent e ) : bool | ||
e | ISyncEvent | /// The ISyncEvent. /// |
return | bool |
public override bool Handle(ISyncEvent e) {
if (!(e is ContentChangeEvent)) {
return false;
}
var contentChangeEvent = e as ContentChangeEvent;
if (contentChangeEvent.Type != DotCMIS.Enums.ChangeType.Deleted && contentChangeEvent.CmisObject == null) {
try {
contentChangeEvent.UpdateObject(this.session);
Logger.Debug("Updated Object in contentChangeEvent" + contentChangeEvent.ToString());
} catch(CmisObjectNotFoundException) {
Logger.Debug("Object with id " + contentChangeEvent.ObjectId + " has been deleted - ignore");
return true;
} catch(CmisPermissionDeniedException) {
Logger.Debug("Object with id " + contentChangeEvent.ObjectId + " gives Access Denied: ACL changed - ignore");
return true;
} catch(Exception ex) {
Logger.Warn("Unable to fetch object " + contentChangeEvent.ObjectId + " starting CrawlSync");
Logger.Debug(ex.StackTrace);
Queue.AddEvent(new StartNextSyncEvent(true));
return true;
}
}
return false;
}
}
public void DocumentDeletionNotAccumulated() { var session = new Mock<ISession>(); var contentChange = new ContentChangeEvent(DotCMIS.Enums.ChangeType.Deleted, Id); var accumulator = new ContentChangeEventAccumulator(session.Object, new Mock<ISyncEventQueue>().Object); accumulator.Handle(contentChange); Assert.That(contentChange.CmisObject, Is.Null); session.Verify(foo => foo.GetObject(It.IsAny<string>()), Times.Never()); }