private static void BindWithRecovery(MailboxSession session, Action <CalendarFolder> folderOperationDelegate) { ExTraceGlobals.BirthdayCalendarTracer.TraceDebug <Guid>(0L, "BirthdayCalendar::BindWithRecovery. MailboxGuid:{0}", session.MailboxGuid); try { using (CalendarFolder calendarFolder = CalendarFolder.Bind(session, DefaultFolderType.BirthdayCalendar)) { ExTraceGlobals.BirthdayCalendarTracer.TraceDebug <Guid>(0L, "BirthdayCalendar::BindWithRecovery. First bind was successful. MailboxGuid:{0}", session.MailboxGuid); folderOperationDelegate(calendarFolder); } } catch (ObjectNotFoundException) { ExTraceGlobals.BirthdayCalendarTracer.TraceDebug <Guid>(0L, "BirthdayCalendar::BindWithRecovery. ObjectNotFound. MailboxGuid:{0}", session.MailboxGuid); StoreObjectId folderId; if (!session.TryFixDefaultFolderId(DefaultFolderType.BirthdayCalendar, out folderId)) { ExTraceGlobals.BirthdayCalendarTracer.TraceDebug <Guid>(0L, "BirthdayCalendar::BindWithRecovery. Fixup unsuccessful. MailboxGuid:{0}", session.MailboxGuid); throw; } ExTraceGlobals.BirthdayCalendarTracer.TraceDebug <Guid>(0L, "BirthdayCalendar::BindWithRecovery. Fixup successful. MailboxGuid:{0}", session.MailboxGuid); using (CalendarFolder calendarFolder2 = CalendarFolder.Bind(session, folderId)) { folderOperationDelegate(calendarFolder2); } } }
public static SearchFolder Bind(MailboxSession session, DefaultFolderType defaultFolderType, ICollection <PropertyDefinition> propsToReturn) { EnumValidator.ThrowIfInvalid <DefaultFolderType>(defaultFolderType, "defaultFolderType"); DefaultFolder defaultFolder = session.InternalGetDefaultFolder(defaultFolderType); if (defaultFolder.StoreObjectType != StoreObjectType.OutlookSearchFolder && defaultFolder.StoreObjectType != StoreObjectType.SearchFolder) { throw new ArgumentOutOfRangeException("defaultFolderType"); } StoreObjectId folderId = session.SafeGetDefaultFolderId(defaultFolderType); ObjectNotFoundException ex = null; for (int i = 0; i < 2; i++) { try { return(SearchFolder.Bind(session, folderId, propsToReturn)); } catch (ObjectNotFoundException ex2) { ex = ex2; ExTraceGlobals.StorageTracer.Information <DefaultFolderType>(0L, "SearchFolder::Bind(defaultFolderType): attempting to recreate {0}.", defaultFolderType); if (!session.TryFixDefaultFolderId(defaultFolderType, out folderId)) { throw; } } } throw ex; }
public static StoreObjectId ValidateClutterFolder(MailboxSession session) { StoreObjectId storeObjectId = session.GetDefaultFolderId(DefaultFolderType.Clutter); if (storeObjectId == null) { storeObjectId = session.CreateDefaultFolder(DefaultFolderType.Clutter); } else { session.TryFixDefaultFolderId(DefaultFolderType.Clutter, out storeObjectId); } return(storeObjectId); }