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);
         }
     }
 }
Example #2
0
        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;
        }
Example #3
0
        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);
        }