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 new static OutlookSearchFolder Bind(MailboxSession session, DefaultFolderType defaultFolderType, ICollection <PropertyDefinition> propsToReturn) { EnumValidator.ThrowIfInvalid <DefaultFolderType>(defaultFolderType, "defaultFolderType"); DefaultFolder defaultFolder = session.InternalGetDefaultFolder(defaultFolderType); if (defaultFolder.StoreObjectType != StoreObjectType.OutlookSearchFolder) { throw new ArgumentOutOfRangeException("defaultFolderType"); } return(OutlookSearchFolder.Bind(session, session.SafeGetDefaultFolderId(defaultFolderType), propsToReturn)); }
private void CreateOrHijackAssociatedMessage(VersionedId associatedMessageId, SearchFolderCriteria criteria) { MailboxSession mailboxSession = (MailboxSession)base.Session; MessageItem messageItem = null; try { if (associatedMessageId == null) { messageItem = MessageItem.CreateAssociated(base.Session, mailboxSession.SafeGetDefaultFolderId(DefaultFolderType.CommonViews)); } else { messageItem = MessageItem.Bind(base.Session, associatedMessageId); } messageItem[InternalSchema.ItemClass] = "IPM.Microsoft.WunderBar.SFInfo"; messageItem[InternalSchema.AssociatedSearchFolderId] = ((Guid)this[InternalSchema.OutlookSearchFolderClsId]).ToByteArray(); messageItem[InternalSchema.DisplayName] = this[FolderSchema.DisplayName]; messageItem[ItemSchema.Subject] = this[FolderSchema.DisplayName]; ExtendedFolderFlags?valueAsNullable = base.GetValueAsNullable <ExtendedFolderFlags>(FolderSchema.ExtendedFolderFlags); if (valueAsNullable != null) { messageItem[InternalSchema.AssociatedSearchFolderFlags] = valueAsNullable.Value; } int num = OutlookSearchFolder.ConvertUtcDateTimeToRTime(ExDateTime.UtcNow); messageItem[InternalSchema.AssociatedSearchFolderLastUsedTime] = num; messageItem[InternalSchema.AssociatedSearchFolderExpiration] = num; messageItem[InternalSchema.AssociatedSearchFolderTemplateId] = 1; messageItem[InternalSchema.AssociatedSearchFolderTag] = 0; this.WriteOutlookSearchFolderDefinitionBlob(messageItem, criteria); messageItem[InternalSchema.AssociatedSearchFolderStorageType] = 72; messageItem.Save(SaveMode.FailOnAnyConflict); } finally { if (messageItem != null) { messageItem.Dispose(); messageItem = null; } } }
protected CalendarItemBase GetCalendarItemToUpdate(CalendarItemBase correlatedCalendarItem) { CalendarItemBase calendarItemBase = correlatedCalendarItem; if (calendarItemBase == null) { MailboxSession calendarMailboxSession = MeetingMessage.GetCalendarMailboxSession(this); if ((calendarItemBase = this.RecoverDeletedOccurrence()) == null) { ExTraceGlobals.MeetingMessageTracer.Information <GlobalObjectId>((long)this.GetHashCode(), "Storage.MeetingMessage.GetCalendarItemToUpdate: GOID={0}. Creating calendar item", this.GlobalObjectId); StoreObjectId parentFolderId = calendarMailboxSession.SafeGetDefaultFolderId(DefaultFolderType.Calendar); calendarItemBase = (this.IsSeriesMessage ? CalendarItemSeries.CreateSeries(calendarMailboxSession, parentFolderId, false) : CalendarItem.CreateCalendarItem(calendarMailboxSession, parentFolderId, false)); } else { ExTraceGlobals.MeetingMessageTracer.Information <GlobalObjectId>((long)this.GetHashCode(), "Storage.MeetingMessage.GetCalendarItemToUpdate: GOID={0}. Recovered deleted occurrence.", this.GlobalObjectId); } } return(calendarItemBase); }