Esempio n. 1
0
        public IList <ItemInformation> ExportItems(IEnumerable <string> itemIds)
        {
            ExportItemsType itemsType = new ExportItemsType();

            itemsType.ItemIds = (from id in itemIds
                                 select new ItemIdType
            {
                Id = id
            }).ToArray <ItemIdType>();
            List <ItemInformation> items = new List <ItemInformation>();

            this.CallEwsWithRetries((LID)0U, () => this.binding.ExportItems(itemsType), delegate(ResponseMessageType responseMessage, int messageIndex)
            {
                ExportItemsResponseMessageType exportItemsResponseMessageType = responseMessage as ExportItemsResponseMessageType;
                if (exportItemsResponseMessageType != null && exportItemsResponseMessageType.ResponseClass == ResponseClassType.Success && exportItemsResponseMessageType.Data != null)
                {
                    items.Add(new ItemInformation
                    {
                        Id    = exportItemsResponseMessageType.ItemId.Id,
                        Data  = exportItemsResponseMessageType.Data,
                        Error = null
                    });
                    if (this.IsTraceEnabled(TraceType.DebugTrace))
                    {
                        this.Tracer.TraceDebug(0L, "Items exported successfully");
                    }
                }
                return(false);
            }, null);
            return(items);
        }
Esempio n. 2
0
        private void MigrateItens(ref DataGridViewRow row, ExchangeServiceBinding srcService, ExchangeServiceBinding tgtService, DistinguishedFolderIdNameType folder, string srcUserMail, string tgtUserMail)
        {
            ResponseMessageType[] itemsResponse = this.GetFolderItems(srcService, folder);

            ExportItemsType exExportItems = new ExportItemsType();

            foreach (ResponseMessageType responseMessage in itemsResponse)
            {
                FindItemResponseMessageType firmt = responseMessage as FindItemResponseMessageType;
                FindItemParentType          fipt  = firmt.RootFolder;
                object obj   = fipt.Item;
                int    count = 0;

                // FindItem contains an array of items.
                if (obj is ArrayOfRealItemsType)
                {
                    ArrayOfRealItemsType items = (obj as ArrayOfRealItemsType);

                    exExportItems.ItemIds = new ItemIdType[(items.Items.Count() + 1)];

                    foreach (ItemType it in items.Items)
                    {
                        exExportItems.ItemIds[count]    = new ItemIdType();
                        exExportItems.ItemIds[count].Id = it.ItemId.Id;
                        count++;
                    }
                }
            }

            ExportItemsResponseType exResponse = srcService.ExportItems(exExportItems);

            ResponseMessageType[] rmResponses   = exResponse.ResponseMessages.Items;
            UploadItemsType       upUploadItems = new UploadItemsType();

            upUploadItems.Items = new UploadItemType[(rmResponses.Length + 1)];
            Int32 icItemCount = 0;

            foreach (ResponseMessageType rmReponse in rmResponses)
            {
                if (rmReponse.ResponseClass == ResponseClassType.Success)
                {
                    ExportItemsResponseMessageType exExportedItem = (ExportItemsResponseMessageType)rmReponse;
                    Byte[]         messageBytes = exExportedItem.Data;
                    UploadItemType upUploadItem = new UploadItemType();
                    upUploadItem.CreateAction          = CreateActionType.UpdateOrCreate;
                    upUploadItem.Data                  = messageBytes;
                    upUploadItem.IsAssociatedSpecified = true;
                    upUploadItem.IsAssociated          = false;
                    upUploadItems.Items[icItemCount]   = upUploadItem;

                    FolderIdManager folderIdMgr = new FolderIdManager();
                    FolderIdType    folderId    = new FolderIdType();
                    folderId.Id = folderIdMgr.GetFolderId(tgtUserMail, Microsoft.Exchange.WebServices.Data.WellKnownFolderName.Contacts, Microsoft.Exchange.WebServices.Data.ExchangeVersion.Exchange2010_SP2);


                    upUploadItem.ParentFolderId = folderId;
                    icItemCount += 1;
                }
            }
            //Erro de Internal Server Error nessa etapa
            UploadItemsResponseType upLoadResponse = tgtService.UploadItems(upUploadItems);
            Int32 Success = 0;
            Int32 Failure = 0;

            foreach (ResponseMessageType upResponse in upLoadResponse.ResponseMessages.Items)
            {
                if (upResponse.ResponseClass == ResponseClassType.Success)
                {
                    Success++;
                }
                if (upResponse.ResponseClass == ResponseClassType.Error)
                {
                    Failure++;
                }
            }


            string resTask = string.Format("Items Copied Sucessfull : {0} - Failure: {1}", Success, Failure);

            Tools.SetRowValue(ref row, EColumns.results, resTask);

            //iv.Offset += fiItems.Items.Count;
        }
        /// <summary>
        /// Verify the ExportItemsResponseType related requirements when the ExportItems operation executes successfully.
        /// </summary>
        /// <param name="exportItemsResponse">The ExportItemsResponseType instance returned from the server.</param>
        protected void VerifyExportItemsSuccessResponse(BaseResponseMessageType exportItemsResponse)
        {
            foreach (ResponseMessageType responseMessage in exportItemsResponse.ResponseMessages.Items)
            {
                ExportItemsResponseMessageType exportResponse = responseMessage as ExportItemsResponseMessageType;
                Site.Assert.IsNotNull(exportResponse, "The response got from server should not be null.");

                // Add the debug information.
                Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSBTRF_R2107.");

                // Verify requirement: MS-OXWSBTRF_R2107
                Site.CaptureRequirementIfAreEqual <ResponseClassType>(
                    ResponseClassType.Success,
                    responseMessage.ResponseClass,
                    2107,
                    @"[In tns:ExportItemsSoapOut Message]If the request is successful, the ExportItems operation returns an ExportItemsResponse element 
                    with the ResponseClass attribute of the ExportItemsResponseMessage element set to ""Success"".");

                // Add the debug information.
                Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSBTRF_R170.");

                // If the ItemId in exportResponse is not null, then requirement MS-OXWSBTRF_R170 can be verified.
                // Verify requirement: MS-OXWSBTRF_R170
                Site.CaptureRequirementIfIsNotNull(
                    exportResponse.ItemId,
                    170,
                    @"[In m:ExportItemsResponseMessageType Complex Type]This element[ItemId] MUST be present if the export operation is successful.");

                // Add the debug information.
                Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSBTRF_R172.");

                // If the data in exportResponse is not null, then requirement MS-OXWSBTRF_R172 and MS-OXWSBTRF_R173 can be verified.
                // Verify requirement: MS-OXWSBTRF_R172
                Site.CaptureRequirementIfIsNotNull(
                    exportResponse.Data,
                    172,
                    @"[In m:ExportItemsResponseMessageType Complex Type][Data] specifies the data of a single exported item.");

                // Add the debug information.
                Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSBTRF_R173.");

                // Verify requirement: MS-OXWSBTRF_R173
                Site.CaptureRequirementIfIsNotNull(
                    exportResponse.Data,
                    173,
                    @"[In m:ExportItemsResponseMessageType Complex Type]This element[Data] MUST be present if the export operation is successful.");

                // Add the debug information.
                Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSBTRF_R2108.");

                // Verify requirement: MS-OXWSBTRF_R2108
                Site.CaptureRequirementIfAreEqual <ResponseCodeType>(
                    ResponseCodeType.NoError,
                    responseMessage.ResponseCode,
                    2108,
                    @"[In tns:ExportItemsSoapOut Message][If the request is successful]The ResponseCode element of the ExportItemsResponseMessage element is set to ""NoError"".");
            }

            // If the length of items in ExportItems response is equal to this.ItemCount, and the exported items' id are same as created items' id then requirement MS-OXWSBTRF_R179 can be captured.
            Site.Assert.AreEqual <int>(exportItemsResponse.ResponseMessages.Items.Length, this.ItemCount, "The exported items' count should be the same with created items' count");
            bool isSameId = false;

            for (int i = 0; i < this.ItemCount; i++)
            {
                Site.Log.Add(
                    LogEntryKind.Debug,
                    "The exported items' id: '{0}' should be same with the created items' id: {1}.",
                    (exportItemsResponse.ResponseMessages.Items[i] as ExportItemsResponseMessageType).ItemId.Id,
                    this.CreatedItemId[i].Id);
                if ((exportItemsResponse.ResponseMessages.Items[i] as ExportItemsResponseMessageType).ItemId.Id == this.CreatedItemId[i].Id)
                {
                    isSameId = true;
                }
                else
                {
                    isSameId = false;
                    break;
                }
            }

            Site.Assert.IsTrue(isSameId, "The exported items' id should be same to the created items' id. ");

            // Add the debug information.
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSBTRF_R179.");

            // After verify the length of items in ExportItems response is equal to this.ItemCount, and the exported items' id are same as created items' id then requirement MS-OXWSBTRF_R179 can be captured.
            Site.CaptureRequirement(
                179,
                @"[In ExportItemsType Complex Type][ItemIds] specifies the item identifier array of the items to export.");
        }
Esempio n. 4
0
        // Token: 0x06000580 RID: 1408 RVA: 0x0002A6E0 File Offset: 0x000288E0
        public List <ElcEwsItem> ExportItems(IList <ElcEwsItem> items)
        {
            ExportItemsType exportItemsType = new ExportItemsType();

            exportItemsType.ItemIds = (from elcEwsItem in items
                                       select new ItemIdType
            {
                Id = elcEwsItem.Id
            }).ToArray <ItemIdType>();
            List <ElcEwsItem> exportedItems = new List <ElcEwsItem>(exportItemsType.ItemIds.Length);
            int startIndex = 0;

            this.CallService(() => this.ServiceBinding.ExportItems(exportItemsType), delegate(ResponseMessageType responseMessage, int messageIndex)
            {
                ExportItemsResponseMessageType exportItemsResponseMessageType = (ExportItemsResponseMessageType)responseMessage;
                ElcEwsItem elcEwsItem = items[startIndex + messageIndex];
                if (exportItemsResponseMessageType.ResponseClass == ResponseClassType.Error)
                {
                    ElcEwsClient.Tracer.TraceError <ResponseCodeType>(0L, "ElcEwsClient.ExportItems: ExportItems with error response message. ResponseCode : {0}", exportItemsResponseMessageType.ResponseCode);
                    if (exportItemsResponseMessageType.ResponseCode == ResponseCodeType.ErrorItemNotFound)
                    {
                        exportedItems.Add(new ElcEwsItem
                        {
                            Id              = elcEwsItem.Id,
                            Data            = null,
                            Error           = new ElcEwsException(ElcEwsErrorType.NotFound),
                            StorageItemData = elcEwsItem.StorageItemData
                        });
                    }
                    else
                    {
                        exportedItems.Add(new ElcEwsItem
                        {
                            Id              = elcEwsItem.Id,
                            Data            = null,
                            Error           = new ElcEwsException(ElcEwsErrorType.FailedToExportItem, exportItemsResponseMessageType.ResponseCode.ToString()),
                            StorageItemData = elcEwsItem.StorageItemData
                        });
                    }
                }
                else if (exportItemsResponseMessageType.ResponseClass == ResponseClassType.Warning)
                {
                    ElcEwsClient.Tracer.TraceWarning <ResponseCodeType, string>(0L, "ElcEwsClient.ExportItems: Message response warning. ResponseCode:{0}; MessageText:'{1}'", exportItemsResponseMessageType.ResponseCode, exportItemsResponseMessageType.MessageText);
                    if (exportItemsResponseMessageType.ResponseCode == ResponseCodeType.ErrorBatchProcessingStopped)
                    {
                        ElcEwsClient.Tracer.TraceWarning <int, int>(0L, "ElcEwsClient.ExportItems: Hitting ErrorBatchProcessingStopped, startIndex:{0}; messageIndex={1}", startIndex, messageIndex);
                        if (messageIndex == 0)
                        {
                            throw new RetryException(new ElcEwsException(ElcEwsErrorType.FailedToExportItem, "Internal Error: Hitting ErrorBatchProcessingStopped as the first response."), false);
                        }
                        startIndex += messageIndex;
                        exportItemsType.ItemIds = exportItemsType.ItemIds.Skip(messageIndex).ToArray <ItemIdType>();
                        throw new RetryException(new ElcEwsException(ElcEwsErrorType.FailedToExportItem, "Hitting ErrorBatchProcessingStopped"), true);
                    }
                    else
                    {
                        exportedItems.Add(new ElcEwsItem
                        {
                            Id              = elcEwsItem.Id,
                            Data            = null,
                            Error           = new ElcEwsException(ElcEwsErrorType.FailedToExportItem, exportItemsResponseMessageType.ResponseCode.ToString()),
                            StorageItemData = elcEwsItem.StorageItemData
                        });
                    }
                }
                else
                {
                    exportedItems.Add(new ElcEwsItem
                    {
                        Id              = elcEwsItem.Id,
                        Data            = exportItemsResponseMessageType.Data,
                        Error           = null,
                        StorageItemData = elcEwsItem.StorageItemData
                    });
                }
                return(true);
            }, (Exception exception) => ElcEwsClient.WrapElcEwsException(ElcEwsErrorType.FailedToExportItem, exception));
            return(exportedItems);
        }