Guid IDestinationFolder.LinkMailPublicFolder(LinkMailPublicFolderFlags flags, byte[] objectId)
 {
     MrsTracer.Provider.Function("StorageDestinationFolder.LinkMailPublicFolder: {0}", new object[]
     {
         base.DisplayNameForTracing
     });
     return(base.Mailbox.LinkMailPublicFolder(base.FolderId, flags, objectId));
 }
Exemplo n.º 2
0
        Guid IDestinationFolder.LinkMailPublicFolder(LinkMailPublicFolderFlags flags, byte[] objectId)
        {
            Guid result = Guid.Empty;

            base.CreateContext("IDestinationFolder.LinkMailPublicFolder", new DataContext[]
            {
                new SimpleValueDataContext("Flags", flags),
                new EntryIDsDataContext(objectId)
            }).Execute(delegate
            {
                result = ((IDestinationFolder)this.WrappedObject).LinkMailPublicFolder(flags, objectId);
            }, true);
            return(result);
        }
 Guid IDestinationFolder.LinkMailPublicFolder(LinkMailPublicFolderFlags flags, byte[] objectId)
 {
     return(base.Mailbox.LinkMailPublicFolder(base.FolderId, flags, objectId));
 }
 Guid IDestinationFolder.LinkMailPublicFolder(LinkMailPublicFolderFlags flags, byte[] objectId)
 {
     return(base.MrsProxy.IDestinationFolder_LinkMailPublicFolder(base.Handle, flags, objectId));
 }
Exemplo n.º 5
0
 Guid IDestinationFolder.LinkMailPublicFolder(LinkMailPublicFolderFlags flags, byte[] objectId)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 6
0
        private Guid LinkMailPublicFolder(LinkMailPublicFolderFlags flags, byte[] objectId, Guid contentMailboxGuid, byte[] sourceFolderEntryId)
        {
            Guid result = Guid.Empty;

            try
            {
                ADObjectId contentMailbox = null;
                if (!this.mailboxToADObjectIdMap.TryGetValue(contentMailboxGuid, out contentMailbox))
                {
                    ADUser aduser = this.orgRecipientSession.FindByExchangeGuid(contentMailboxGuid) as ADUser;
                    if (aduser == null)
                    {
                        throw new RecipientNotFoundPermanentException(contentMailboxGuid);
                    }
                    this.mailboxToADObjectIdMap[contentMailboxGuid] = aduser.Id;
                    contentMailbox = aduser.Id;
                }
                ADPublicFolder adpublicFolder = null;
                switch (flags)
                {
                case LinkMailPublicFolderFlags.ObjectGuid:
                    adpublicFolder = (this.orgRecipientSession.Read(new ADObjectId(objectId)) as ADPublicFolder);
                    if (adpublicFolder == null)
                    {
                        base.Report.Append(new ReportEntry(MrsStrings.MoveRequestMessageWarning(MrsStrings.MailPublicFolderWithObjectIdNotFound(new Guid(objectId)))));
                    }
                    break;

                case LinkMailPublicFolderFlags.EntryId:
                {
                    string        text  = PublicFolderSession.ConvertToLegacyDN("e71f13d1-0178-42a7-8c47-24206de84a77", HexConverter.ByteArrayToHexString(objectId));
                    ADRecipient[] array = this.orgRecipientSession.Find(null, QueryScope.SubTree, new ComparisonFilter(ComparisonOperator.Equal, ADRecipientSchema.LegacyExchangeDN, text), null, 2);
                    if (array.Length == 1)
                    {
                        adpublicFolder = (array[0] as ADPublicFolder);
                    }
                    else if (array.Length > 1)
                    {
                        base.Report.Append(new ReportEntry(MrsStrings.MoveRequestMessageWarning(MrsStrings.MailPublicFolderWithMultipleEntriesFound(text))));
                    }
                    else
                    {
                        base.Report.Append(new ReportEntry(MrsStrings.MoveRequestMessageWarning(MrsStrings.MailPublicFolderWithLegacyExchangeDnNotFound(text))));
                    }
                    break;
                }

                default:
                    throw new UnexpectedErrorPermanentException(-2147024809);
                }
                if (adpublicFolder != null)
                {
                    adpublicFolder.ContentMailbox = contentMailbox;
                    adpublicFolder.EntryId        = HexConverter.ByteArrayToHexString(base.DestMailbox.GetSessionSpecificEntryId(sourceFolderEntryId));
                    this.orgRecipientSession.Save(adpublicFolder);
                    result = adpublicFolder.Guid;
                }
            }
            catch (LocalizedException ex)
            {
                base.Report.Append(new ReportEntry(new LocalizedString(ex.Message)));
                throw;
            }
            return(result);
        }