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); }
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."); }
// 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); }