diff --git a/Lib/ClassLibraryCommon/Blob/CloudBlobClient.cs b/Lib/ClassLibraryCommon/Blob/CloudBlobClient.cs index b9700809a..396ec4313 100644 --- a/Lib/ClassLibraryCommon/Blob/CloudBlobClient.cs +++ b/Lib/ClassLibraryCommon/Blob/CloudBlobClient.cs @@ -211,7 +211,7 @@ public ICancellableAsyncResult BeginListContainersSegmented(string prefix, BlobC /// in the result segment, up to the per-operation limit of 5000. If this value is null, the maximum possible number of results will be returned, up to 5000. /// A continuation token returned by a previous listing operation. /// A object that specifies additional options for the request. - /// An object that represents the context for the current operation. + /// An object that represents the context for the current operation. /// The callback delegate that will receive notification when the asynchronous operation completes. /// A user-defined object that will be passed to the callback delegate. /// An that references the asynchronous operation. @@ -296,7 +296,7 @@ public Task ListContainersSegmentedAsync(string prefix, /// in the result segment, up to the per-operation limit of 5000. If this value is null, the maximum possible number of results will be returned, up to 5000. /// A continuation token returned by a previous listing operation. /// A object that specifies additional options for the request. - /// An object that represents the context for the current operation. + /// An object that represents the context for the current operation. /// A object that represents the current operation. [DoesServiceRequest] public Task ListContainersSegmentedAsync(string prefix, ContainerListingDetails detailsIncluded, int? maxResults, BlobContinuationToken continuationToken, BlobRequestOptions options, OperationContext operationContext) @@ -313,7 +313,7 @@ public Task ListContainersSegmentedAsync(string prefix, /// in the result segment, up to the per-operation limit of 5000. If this value is null, the maximum possible number of results will be returned, up to 5000. /// A continuation token returned by a previous listing operation. /// A object that specifies additional options for the request. - /// An object that represents the context for the current operation. + /// An object that represents the context for the current operation. /// A to observe while waiting for a task to complete. /// A object that represents the current operation. [DoesServiceRequest] diff --git a/Lib/ClassLibraryCommon/Blob/CloudBlobDirectory.cs b/Lib/ClassLibraryCommon/Blob/CloudBlobDirectory.cs index e55307e3d..14c302a0a 100644 --- a/Lib/ClassLibraryCommon/Blob/CloudBlobDirectory.cs +++ b/Lib/ClassLibraryCommon/Blob/CloudBlobDirectory.cs @@ -35,7 +35,7 @@ public sealed partial class CloudBlobDirectory /// /// Specifies whether to list blobs in a flat listing, or whether to list blobs hierarchically, by virtual directory. /// A enumeration describing which items to include in the listing. - /// An object that specifies additional options for the request. + /// A object that specifies additional options for the request. /// An object that represents the context for the current operation. /// An enumerable collection of objects that implement and are retrieved lazily. [DoesServiceRequest] @@ -65,7 +65,7 @@ public BlobResultSegment ListBlobsSegmented(BlobContinuationToken currentToken) /// A non-negative integer value that indicates the maximum number of results to be returned at a time, up to the /// per-operation limit of 5000. If this value is null, the maximum possible number of results will be returned, up to 5000. /// A continuation token returned by a previous listing operation. - /// An object that specifies additional options for the request. + /// A object that specifies additional options for the request. /// An object that represents the context for the current operation. /// A result segment containing objects that implement . [DoesServiceRequest] @@ -98,7 +98,7 @@ public ICancellableAsyncResult BeginListBlobsSegmented(BlobContinuationToken cur /// A non-negative integer value that indicates the maximum number of results to be returned at a time, up to the /// per-operation limit of 5000. If this value is null, the maximum possible number of results will be returned, up to 5000. /// A continuation token returned by a previous listing operation. - /// An object that specifies additional options for the request. + /// A object that specifies additional options for the request. /// An object that represents the context for the current operation. /// The callback delegate that will receive notification when the asynchronous operation completes. /// A user-defined object that will be passed to the callback delegate. diff --git a/Lib/ClassLibraryCommon/Blob/ICloudBlob.cs b/Lib/ClassLibraryCommon/Blob/ICloudBlob.cs index eee746902..2805be8a4 100644 --- a/Lib/ClassLibraryCommon/Blob/ICloudBlob.cs +++ b/Lib/ClassLibraryCommon/Blob/ICloudBlob.cs @@ -106,7 +106,7 @@ public partial interface ICloudBlob : IListBlobItem /// /// The stream providing the blob content. Use a seek-able stream for optimal performance. /// An object that represents the access conditions for the blob. - /// An object that specifies additional options for the request. + /// A object that specifies additional options for the request. /// An object that represents the context for the current operation. void UploadFromStream(Stream source, AccessCondition accessCondition = null, BlobRequestOptions options = null, OperationContext operationContext = null); @@ -135,7 +135,7 @@ public partial interface ICloudBlob : IListBlobItem /// /// The stream providing the blob content. /// An object that represents the access conditions for the blob. - /// An object that specifies additional options for the request. + /// A object that specifies additional options for the request. /// An object that represents the context for the current operation. /// The callback delegate that will receive notification when the asynchronous operation completes. /// A user-defined object that will be passed to the callback delegate. @@ -192,7 +192,7 @@ public partial interface ICloudBlob : IListBlobItem /// /// The stream providing the blob content. /// An object that represents the access conditions for the blob. - /// An object that specifies additional options for the request. + /// A object that specifies additional options for the request. /// An object that represents the context for the current operation. /// A object that represents the current operation. Task UploadFromStreamAsync(Stream source, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext); @@ -202,7 +202,7 @@ public partial interface ICloudBlob : IListBlobItem /// /// The stream providing the blob content. /// An object that represents the access conditions for the blob. - /// An object that specifies additional options for the request. + /// A object that specifies additional options for the request. /// An object that represents the context for the current operation. /// A to observe while waiting for a task to complete. /// A object that represents the current operation. @@ -256,7 +256,7 @@ public partial interface ICloudBlob : IListBlobItem /// The file providing the blob content. /// A constant that determines how to open the file. /// An object that represents the access conditions for the blob. - /// An object that specifies additional options for the request. + /// A object that specifies additional options for the request. /// An object that represents the context for the current operation. void UploadFromFile(string path, FileMode mode, AccessCondition accessCondition = null, BlobRequestOptions options = null, OperationContext operationContext = null); #endif @@ -277,7 +277,7 @@ public partial interface ICloudBlob : IListBlobItem /// The file providing the blob content. /// A constant that determines how to open the file. /// An object that represents the access conditions for the blob. - /// An object that specifies additional options for the request. + /// A object that specifies additional options for the request. /// An object that represents the context for the current operation. /// The callback delegate that will receive notification when the asynchronous operation completes. /// A user-defined object that will be passed to the callback delegate. @@ -314,7 +314,7 @@ public partial interface ICloudBlob : IListBlobItem /// The file providing the blob content. /// A constant that determines how to open the file. /// An object that represents the access conditions for the blob. - /// An object that specifies additional options for the request. + /// A object that specifies additional options for the request. /// An object that represents the context for the current operation. /// A object that represents the current operation. Task UploadFromFileAsync(string path, FileMode mode, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext); @@ -325,7 +325,7 @@ public partial interface ICloudBlob : IListBlobItem /// The file providing the blob content. /// A constant that determines how to open the file. /// An object that represents the access conditions for the blob. - /// An object that specifies additional options for the request. + /// A object that specifies additional options for the request. /// An object that represents the context for the current operation. /// A to observe while waiting for a task to complete. /// A object that represents the current operation. @@ -428,7 +428,7 @@ public partial interface ICloudBlob : IListBlobItem /// /// The target stream. /// An object that represents the access conditions for the blob. - /// An object that specifies additional options for the request. + /// A object that specifies additional options for the request. /// An object that represents the context for the current operation. void DownloadToStream(Stream target, AccessCondition accessCondition = null, BlobRequestOptions options = null, OperationContext operationContext = null); #endif @@ -447,7 +447,7 @@ public partial interface ICloudBlob : IListBlobItem /// /// The target stream. /// An object that represents the access conditions for the blob. - /// An object that specifies additional options for the request. + /// A object that specifies additional options for the request. /// An object that represents the context for the current operation. /// The callback delegate that will receive notification when the asynchronous operation completes. /// A user-defined object that will be passed to the callback delegate. @@ -481,7 +481,7 @@ public partial interface ICloudBlob : IListBlobItem /// /// The target stream. /// An object that represents the access conditions for the blob. - /// An object that specifies additional options for the request. + /// A object that specifies additional options for the request. /// An object that represents the context for the current operation. /// A object that represents the current operation. Task DownloadToStreamAsync(Stream target, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext); @@ -491,7 +491,7 @@ public partial interface ICloudBlob : IListBlobItem /// /// The target stream. /// An object that represents the access conditions for the blob. - /// An object that specifies additional options for the request. + /// A object that specifies additional options for the request. /// An object that represents the context for the current operation. /// A to observe while waiting for a task to complete. /// A object that represents the current operation. @@ -505,7 +505,7 @@ public partial interface ICloudBlob : IListBlobItem /// The target file. /// A constant that determines how to open or create the file. /// An object that represents the access conditions for the blob. - /// An object that specifies additional options for the request. + /// A object that specifies additional options for the request. /// An object that represents the context for the current operation. void DownloadToFile(string path, FileMode mode, AccessCondition accessCondition = null, BlobRequestOptions options = null, OperationContext operationContext = null); #endif @@ -526,7 +526,7 @@ public partial interface ICloudBlob : IListBlobItem /// The target file. /// A constant that determines how to open or create the file. /// An object that represents the access conditions for the blob. - /// An object that specifies additional options for the request. + /// A object that specifies additional options for the request. /// An object that represents the context for the current operation. /// The callback delegate that will receive notification when the asynchronous operation completes. /// A user-defined object that will be passed to the callback delegate. @@ -563,7 +563,7 @@ public partial interface ICloudBlob : IListBlobItem /// The target file. /// A constant that determines how to open or create the file. /// An object that represents the access conditions for the blob. - /// An object that specifies additional options for the request. + /// A object that specifies additional options for the request. /// An object that represents the context for the current operation. /// A object that represents the current operation. Task DownloadToFileAsync(string path, FileMode mode, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext); @@ -574,7 +574,7 @@ public partial interface ICloudBlob : IListBlobItem /// The target file. /// A constant that determines how to open or create the file. /// An object that represents the access conditions for the blob. - /// An object that specifies additional options for the request. + /// A object that specifies additional options for the request. /// An object that represents the context for the current operation. /// A to observe while waiting for a task to complete. /// A object that represents the current operation. @@ -674,7 +674,7 @@ public partial interface ICloudBlob : IListBlobItem /// The starting offset of the data range, in bytes. /// The length of the data range, in bytes. /// An object that represents the access conditions for the blob. - /// An object that specifies additional options for the request. + /// A object that specifies additional options for the request. /// An object that represents the context for the current operation. void DownloadRangeToStream(Stream target, long? offset, long? length, AccessCondition accessCondition = null, BlobRequestOptions options = null, OperationContext operationContext = null); #endif @@ -697,7 +697,7 @@ public partial interface ICloudBlob : IListBlobItem /// The starting offset of the data range, in bytes. /// The length of the data range, in bytes. /// An object that represents the access conditions for the blob. - /// An object that specifies additional options for the request. + /// A object that specifies additional options for the request. /// An object that represents the context for the current operation. /// The callback delegate that will receive notification when the asynchronous operation completes. /// A user-defined object that will be passed to the callback delegate. @@ -737,7 +737,7 @@ public partial interface ICloudBlob : IListBlobItem /// The starting offset of the data range, in bytes. /// The length of the data range, in bytes. /// An object that represents the access conditions for the blob. - /// An object that specifies additional options for the request. + /// A object that specifies additional options for the request. /// An object that represents the context for the current operation. /// A object that represents the current operation. Task DownloadRangeToStreamAsync(Stream target, long? offset, long? length, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext); @@ -749,7 +749,7 @@ public partial interface ICloudBlob : IListBlobItem /// The starting offset of the data range, in bytes. /// The length of the data range, in bytes. /// An object that represents the access conditions for the blob. - /// An object that specifies additional options for the request. + /// A object that specifies additional options for the request. /// An object that represents the context for the current operation. /// A to observe while waiting for a task to complete. /// A object that represents the current operation. @@ -859,8 +859,8 @@ public partial interface ICloudBlob : IListBlobItem /// /// Checks existence of the blob. /// - /// An object that specifies additional options for the request. - /// An object that represents the context for the current operation. + /// A object that specifies additional options for the request. + /// An object that represents the context for the current operation. /// true if the blob exists. bool Exists(BlobRequestOptions options = null, OperationContext operationContext = null); #endif @@ -876,8 +876,8 @@ public partial interface ICloudBlob : IListBlobItem /// /// Begins an asynchronous request to check existence of the blob. /// - /// An object that specifies additional options for the request. - /// An object that represents the context for the current operation. + /// A object that specifies additional options for the request. + /// An object that represents the context for the current operation. /// The callback delegate that will receive notification when the asynchronous operation completes. /// A user-defined object that will be passed to the callback delegate. /// An that references the asynchronous operation. @@ -907,16 +907,16 @@ public partial interface ICloudBlob : IListBlobItem /// /// Returns a task that performs an asynchronous request to check existence of the blob. /// - /// An object that specifies additional options for the request. - /// An object that represents the context for the current operation. + /// A object that specifies additional options for the request. + /// An object that represents the context for the current operation. /// A object that represents the current operation. Task ExistsAsync(BlobRequestOptions options, OperationContext operationContext); /// /// Returns a task that performs an asynchronous request to check existence of the blob. /// - /// An object that specifies additional options for the request. - /// An object that represents the context for the current operation. + /// A object that specifies additional options for the request. + /// An object that represents the context for the current operation. /// A to observe while waiting for a task to complete. /// A object that represents the current operation. Task ExistsAsync(BlobRequestOptions options, OperationContext operationContext, CancellationToken cancellationToken); @@ -927,8 +927,8 @@ public partial interface ICloudBlob : IListBlobItem /// Populates a blob's properties and metadata. /// /// An object that represents the access conditions for the blob. - /// An object that specifies additional options for the request. - /// An object that represents the context for the current operation. + /// A object that specifies additional options for the request. + /// An object that represents the context for the current operation. void FetchAttributes(AccessCondition accessCondition = null, BlobRequestOptions options = null, OperationContext operationContext = null); #endif @@ -944,8 +944,8 @@ public partial interface ICloudBlob : IListBlobItem /// Begins an asynchronous operation to populate the blob's properties and metadata. /// /// An object that represents the access conditions for the blob. - /// An object that specifies additional options for the request. - /// An object that represents the context for the current operation. + /// A object that specifies additional options for the request. + /// An object that represents the context for the current operation. /// The callback delegate that will receive notification when the asynchronous operation completes. /// A user-defined object that will be passed to the callback delegate. /// An that references the asynchronous operation. @@ -975,8 +975,8 @@ public partial interface ICloudBlob : IListBlobItem /// Returns a task that performs an asynchronous operation to populate the blob's properties and metadata. /// /// An object that represents the access conditions for the blob. - /// An object that specifies additional options for the request. - /// An object that represents the context for the current operation. + /// A object that specifies additional options for the request. + /// An object that represents the context for the current operation. /// A object that represents the current operation. Task FetchAttributesAsync(AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext); @@ -984,8 +984,8 @@ public partial interface ICloudBlob : IListBlobItem /// Returns a task that performs an asynchronous operation to populate the blob's properties and metadata. /// /// An object that represents the access conditions for the blob. - /// An object that specifies additional options for the request. - /// An object that represents the context for the current operation. + /// A object that specifies additional options for the request. + /// An object that represents the context for the current operation. /// A to observe while waiting for a task to complete. /// A object that represents the current operation. Task FetchAttributesAsync(AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext, CancellationToken cancellationToken); @@ -996,8 +996,8 @@ public partial interface ICloudBlob : IListBlobItem /// Updates the blob's metadata. /// /// An object that represents the access conditions for the blob. - /// An object that specifies additional options for the request. - /// An object that represents the context for the current operation. + /// A object that specifies additional options for the request. + /// An object that represents the context for the current operation. void SetMetadata(AccessCondition accessCondition = null, BlobRequestOptions options = null, OperationContext operationContext = null); #endif @@ -1013,8 +1013,8 @@ public partial interface ICloudBlob : IListBlobItem /// Begins an asynchronous operation to update the blob's metadata. /// /// An object that represents the access conditions for the blob. - /// An object that specifies additional options for the request. - /// An object that represents the context for the current operation. + /// A object that specifies additional options for the request. + /// An object that represents the context for the current operation. /// The callback delegate that will receive notification when the asynchronous operation completes. /// A user-defined object that will be passed to the callback delegate. /// An that references the asynchronous operation. @@ -1044,8 +1044,8 @@ public partial interface ICloudBlob : IListBlobItem /// Returns a task that performs an asynchronous operation to update the blob's metadata. /// /// An object that represents the access conditions for the blob. - /// An object that specifies additional options for the request. - /// An object that represents the context for the current operation. + /// A object that specifies additional options for the request. + /// An object that represents the context for the current operation. /// A object that represents the current operation. Task SetMetadataAsync(AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext); @@ -1053,8 +1053,8 @@ public partial interface ICloudBlob : IListBlobItem /// Returns a task that performs an asynchronous operation to update the blob's metadata. /// /// An object that represents the access conditions for the blob. - /// An object that specifies additional options for the request. - /// An object that represents the context for the current operation. + /// A object that specifies additional options for the request. + /// An object that represents the context for the current operation. /// A to observe while waiting for a task to complete. /// A object that represents the current operation. Task SetMetadataAsync(AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext, CancellationToken cancellationToken); @@ -1065,8 +1065,8 @@ public partial interface ICloudBlob : IListBlobItem /// Updates the blob's properties. /// /// An object that represents the access conditions for the blob. - /// An object that specifies additional options for the request. - /// An object that represents the context for the current operation. + /// A object that specifies additional options for the request. + /// An object that represents the context for the current operation. void SetProperties(AccessCondition accessCondition = null, BlobRequestOptions options = null, OperationContext operationContext = null); #endif @@ -1082,8 +1082,8 @@ public partial interface ICloudBlob : IListBlobItem /// Begins an asynchronous operation to update the blob's properties. /// /// An object that represents the access conditions for the blob. - /// An object that specifies additional options for the request. - /// An object that represents the context for the current operation. + /// A object that specifies additional options for the request. + /// An object that represents the context for the current operation. /// The callback delegate that will receive notification when the asynchronous operation completes. /// A user-defined object that will be passed to the callback delegate. /// An that references the asynchronous operation. @@ -1113,8 +1113,8 @@ public partial interface ICloudBlob : IListBlobItem /// Returns a task that performs an asynchronous operation to update the blob's properties. /// /// An object that represents the access conditions for the blob. - /// An object that specifies additional options for the request. - /// An object that represents the context for the current operation. + /// A object that specifies additional options for the request. + /// An object that represents the context for the current operation. /// A object that represents the current operation. Task SetPropertiesAsync(AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext); @@ -1122,8 +1122,8 @@ public partial interface ICloudBlob : IListBlobItem /// Returns a task that performs an asynchronous operation to update the blob's properties. /// /// An object that represents the access conditions for the blob. - /// An object that specifies additional options for the request. - /// An object that represents the context for the current operation. + /// A object that specifies additional options for the request. + /// An object that represents the context for the current operation. /// A to observe while waiting for a task to complete. /// A object that represents the current operation. Task SetPropertiesAsync(AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext, CancellationToken cancellationToken); @@ -1135,8 +1135,8 @@ public partial interface ICloudBlob : IListBlobItem /// /// Whether to only delete the blob, to delete the blob and all snapshots, or to only delete the snapshots. /// An object that represents the access conditions for the blob. - /// An object that specifies additional options for the request. - /// An object that represents the context for the current operation. + /// A object that specifies additional options for the request. + /// An object that represents the context for the current operation. void Delete(DeleteSnapshotsOption deleteSnapshotsOption = DeleteSnapshotsOption.None, AccessCondition accessCondition = null, BlobRequestOptions options = null, OperationContext operationContext = null); #endif @@ -1153,8 +1153,8 @@ public partial interface ICloudBlob : IListBlobItem /// /// Whether to only delete the blob, to delete the blob and all snapshots, or to only delete the snapshots. /// An object that represents the access conditions for the blob. - /// An object that specifies additional options for the request. - /// An object that represents the context for the current operation. + /// A object that specifies additional options for the request. + /// An object that represents the context for the current operation. /// The callback delegate that will receive notification when the asynchronous operation completes. /// A user-defined object that will be passed to the callback delegate. /// An that references the asynchronous operation. @@ -1185,8 +1185,8 @@ public partial interface ICloudBlob : IListBlobItem /// /// Whether to only delete the blob, to delete the blob and all snapshots, or to only delete the snapshots. /// An object that represents the access conditions for the blob. - /// An object that specifies additional options for the request. - /// An object that represents the context for the current operation. + /// A object that specifies additional options for the request. + /// An object that represents the context for the current operation. /// A object that represents the current operation. Task DeleteAsync(DeleteSnapshotsOption deleteSnapshotsOption, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext); @@ -1195,8 +1195,8 @@ public partial interface ICloudBlob : IListBlobItem /// /// Whether to only delete the blob, to delete the blob and all snapshots, or to only delete the snapshots. /// An object that represents the access conditions for the blob. - /// An object that specifies additional options for the request. - /// An object that represents the context for the current operation. + /// A object that specifies additional options for the request. + /// An object that represents the context for the current operation. /// A to observe while waiting for a task to complete. /// A object that represents the current operation. Task DeleteAsync(DeleteSnapshotsOption deleteSnapshotsOption, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext, CancellationToken cancellationToken); @@ -1208,7 +1208,7 @@ public partial interface ICloudBlob : IListBlobItem /// /// Whether to only delete the blob, to delete the blob and all snapshots, or to only delete the snapshots. /// An object that represents the access conditions for the container. - /// An object that specifies additional options for the request. + /// A object that specifies additional options for the request. /// An object that represents the context for the current operation. /// true if the blob did not already exist and was created; otherwise false. bool DeleteIfExists(DeleteSnapshotsOption deleteSnapshotsOption = DeleteSnapshotsOption.None, AccessCondition accessCondition = null, BlobRequestOptions options = null, OperationContext operationContext = null); @@ -1227,7 +1227,7 @@ public partial interface ICloudBlob : IListBlobItem /// /// Whether to only delete the blob, to delete the blob and all snapshots, or to only delete the snapshots. /// An object that represents the access conditions for the container. - /// An object that specifies additional options for the request. + /// A object that specifies additional options for the request. /// An object that represents the context for the current operation. /// The callback delegate that will receive notification when the asynchronous operation completes. /// A user-defined object that will be passed to the callback delegate. @@ -1260,7 +1260,7 @@ public partial interface ICloudBlob : IListBlobItem /// /// Whether to only delete the blob, to delete the blob and all snapshots, or to only delete the snapshots. /// An object that represents the access conditions for the container. - /// An object that specifies additional options for the request. + /// A object that specifies additional options for the request. /// An object that represents the context for the current operation. /// A object that represents the current operation. Task DeleteIfExistsAsync(DeleteSnapshotsOption deleteSnapshotsOption, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext); @@ -1270,7 +1270,7 @@ public partial interface ICloudBlob : IListBlobItem /// /// Whether to only delete the blob, to delete the blob and all snapshots, or to only delete the snapshots. /// An object that represents the access conditions for the container. - /// An object that specifies additional options for the request. + /// A object that specifies additional options for the request. /// An object that represents the context for the current operation. /// A to observe while waiting for a task to complete. /// A object that represents the current operation. @@ -1285,8 +1285,8 @@ public partial interface ICloudBlob : IListBlobItem /// which will be rounded down to seconds. /// A string representing the proposed lease ID for the new lease. /// An object that represents the access conditions for the blob. - /// The options for this operation. - /// An object that represents the context for the current operation. + /// A object that specifies additional options for the request. + /// An object that represents the context for the current operation. /// The ID of the acquired lease. string AcquireLease(TimeSpan? leaseTime, string proposedLeaseId, AccessCondition accessCondition = null, BlobRequestOptions options = null, OperationContext operationContext = null); #endif @@ -1309,8 +1309,8 @@ public partial interface ICloudBlob : IListBlobItem /// which will be rounded down to seconds. /// A string representing the proposed lease ID for the new lease. /// An object that represents the access conditions for the blob. - /// The options for this operation. - /// An object that represents the context for the current operation. + /// A object that specifies additional options for the request. + /// An object that represents the context for the current operation. /// An optional callback delegate that will receive notification when the asynchronous operation completes. /// A user-defined object that will be passed to the callback delegate. /// An that references the asynchronous operation. @@ -1350,8 +1350,8 @@ public partial interface ICloudBlob : IListBlobItem /// which will be rounded down to seconds. /// A string representing the proposed lease ID for the new lease. /// An object that represents the access conditions for the blob. - /// The options for this operation. - /// An object that represents the context for the current operation. + /// A object that specifies additional options for the request. + /// An object that represents the context for the current operation. /// A object that represents the current operation. Task AcquireLeaseAsync(TimeSpan? leaseTime, string proposedLeaseId, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext); @@ -1362,8 +1362,8 @@ public partial interface ICloudBlob : IListBlobItem /// which will be rounded down to seconds. /// A string representing the proposed lease ID for the new lease. /// An object that represents the access conditions for the blob. - /// The options for this operation. - /// An object that represents the context for the current operation. + /// A object that specifies additional options for the request. + /// An object that represents the context for the current operation. /// A to observe while waiting for a task to complete. /// A object that represents the current operation. Task AcquireLeaseAsync(TimeSpan? leaseTime, string proposedLeaseId, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext, CancellationToken cancellationToken); @@ -1374,8 +1374,8 @@ public partial interface ICloudBlob : IListBlobItem /// Renews a lease on this blob. /// /// An object that represents the access conditions for the blob, including a required lease ID. - /// The options for this operation. - /// An object that represents the context for the current operation. + /// A object that specifies additional options for the request. + /// An object that represents the context for the current operation. void RenewLease(AccessCondition accessCondition, BlobRequestOptions options = null, OperationContext operationContext = null); #endif @@ -1392,8 +1392,8 @@ public partial interface ICloudBlob : IListBlobItem /// Begins an asynchronous operation to renew a lease on this blob. /// /// An object that represents the access conditions for the blob, including a required lease ID. - /// The options for this operation. - /// An object that represents the context for the current operation. + /// A object that specifies additional options for the request. + /// An object that represents the context for the current operation. /// An optional callback delegate that will receive notification when the asynchronous operation completes. /// A user-defined object that will be passed to the callback delegate. /// An that references the asynchronous operation. @@ -1425,8 +1425,8 @@ public partial interface ICloudBlob : IListBlobItem /// Returns a task that performs an asynchronous operation to renew a lease on this blob. /// /// An object that represents the access conditions for the blob, including a required lease ID. - /// The options for this operation. - /// An object that represents the context for the current operation. + /// A object that specifies additional options for the request. + /// An object that represents the context for the current operation. /// A object that represents the current operation. Task RenewLeaseAsync(AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext); @@ -1434,8 +1434,8 @@ public partial interface ICloudBlob : IListBlobItem /// Returns a task that performs an asynchronous operation to renew a lease on this blob. /// /// An object that represents the access conditions for the blob, including a required lease ID. - /// The options for this operation. - /// An object that represents the context for the current operation. + /// A object that specifies additional options for the request. + /// An object that represents the context for the current operation. /// A to observe while waiting for a task to complete. /// A object that represents the current operation. Task RenewLeaseAsync(AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext, CancellationToken cancellationToken); @@ -1447,8 +1447,8 @@ public partial interface ICloudBlob : IListBlobItem /// /// A string representing the proposed lease ID for the new lease. /// An object that represents the access conditions for the blob, including a required lease ID. - /// The options for this operation. - /// An object that represents the context for the current operation. + /// A object that specifies additional options for the request. + /// An object that represents the context for the current operation. /// The new lease ID. string ChangeLease(string proposedLeaseId, AccessCondition accessCondition, BlobRequestOptions options = null, OperationContext operationContext = null); #endif @@ -1468,8 +1468,8 @@ public partial interface ICloudBlob : IListBlobItem /// /// A string representing the proposed lease ID for the new lease. /// An object that represents the access conditions for the blob, including a required lease ID. - /// The options for this operation. - /// An object that represents the context for the current operation. + /// A object that specifies additional options for the request. + /// An object that represents the context for the current operation. /// An optional callback delegate that will receive notification when the asynchronous operation completes. /// A user-defined object that will be passed to the callback delegate. /// An that references the asynchronous operation. @@ -1505,8 +1505,8 @@ public partial interface ICloudBlob : IListBlobItem /// /// A string representing the proposed lease ID for the new lease. /// An object that represents the access conditions for the blob, including a required lease ID. - /// The options for this operation. - /// An object that represents the context for the current operation. + /// A object that specifies additional options for the request. + /// An object that represents the context for the current operation. /// A object that represents the current operation. Task ChangeLeaseAsync(string proposedLeaseId, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext); @@ -1515,8 +1515,8 @@ public partial interface ICloudBlob : IListBlobItem /// /// A string representing the proposed lease ID for the new lease. /// An object that represents the access conditions for the blob, including a required lease ID. - /// The options for this operation. - /// An object that represents the context for the current operation. + /// A object that specifies additional options for the request. + /// An object that represents the context for the current operation. /// A to observe while waiting for a task to complete. /// A object that represents the current operation. Task ChangeLeaseAsync(string proposedLeaseId, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext, CancellationToken cancellationToken); @@ -1527,8 +1527,8 @@ public partial interface ICloudBlob : IListBlobItem /// Releases the lease on this blob. /// /// An object that represents the access conditions for the blob, including a required lease ID. - /// The options for this operation. - /// An object that represents the context for the current operation. + /// A object that specifies additional options for the request. + /// An object that represents the context for the current operation. void ReleaseLease(AccessCondition accessCondition, BlobRequestOptions options = null, OperationContext operationContext = null); #endif @@ -1545,8 +1545,8 @@ public partial interface ICloudBlob : IListBlobItem /// Begins an asynchronous operation to release the lease on this blob. /// /// An object that represents the access conditions for the blob, including a required lease ID. - /// The options for this operation. - /// An object that represents the context for the current operation. + /// A object that specifies additional options for the request. + /// An object that represents the context for the current operation. /// An optional callback delegate that will receive notification when the asynchronous operation completes. /// A user-defined object that will be passed to the callback delegate. /// An that references the asynchronous operation. @@ -1578,8 +1578,8 @@ public partial interface ICloudBlob : IListBlobItem /// Returns a task that performs an asynchronous operation to release the lease on this blob. /// /// An object that represents the access conditions for the blob, including a required lease ID. - /// The options for this operation. - /// An object that represents the context for the current operation. + /// A object that specifies additional options for the request. + /// An object that represents the context for the current operation. /// A object that represents the current operation. Task ReleaseLeaseAsync(AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext); @@ -1587,8 +1587,8 @@ public partial interface ICloudBlob : IListBlobItem /// Returns a task that performs an asynchronous operation to release the lease on this blob. /// /// An object that represents the access conditions for the blob, including a required lease ID. - /// The options for this operation. - /// An object that represents the context for the current operation. + /// A object that specifies additional options for the request. + /// An object that represents the context for the current operation. /// A to observe while waiting for a task to complete. /// A object that represents the current operation. Task ReleaseLeaseAsync(AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext, CancellationToken cancellationToken); @@ -1601,8 +1601,8 @@ public partial interface ICloudBlob : IListBlobItem /// A representing the amount of time to allow the lease to remain, /// which will be rounded down to seconds. /// An object that represents the access conditions for the blob. - /// The options for this operation. - /// An object that represents the context for the current operation. + /// A object that specifies additional options for the request. + /// An object that represents the context for the current operation. /// A representing the amount of time before the lease ends, to the second. TimeSpan BreakLease(TimeSpan? breakPeriod = null, AccessCondition accessCondition = null, BlobRequestOptions options = null, OperationContext operationContext = null); #endif @@ -1623,8 +1623,8 @@ public partial interface ICloudBlob : IListBlobItem /// A representing the amount of time to allow the lease to remain, /// which will be rounded down to seconds. /// An object that represents the access conditions for the blob. - /// The options for this operation. - /// An object that represents the context for the current operation. + /// A object that specifies additional options for the request. + /// An object that represents the context for the current operation. /// An optional callback delegate that will receive notification when the asynchronous operation completes. /// A user-defined object that will be passed to the callback delegate. /// An that references the asynchronous operation. @@ -1661,8 +1661,8 @@ public partial interface ICloudBlob : IListBlobItem /// A representing the amount of time to allow the lease to remain, /// which will be rounded down to seconds. /// An object that represents the access conditions for the blob. - /// The options for this operation. - /// An object that represents the context for the current operation. + /// A object that specifies additional options for the request. + /// An object that represents the context for the current operation. /// A object that represents the current operation. Task BreakLeaseAsync(TimeSpan? breakPeriod, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext); @@ -1672,8 +1672,8 @@ public partial interface ICloudBlob : IListBlobItem /// A representing the amount of time to allow the lease to remain, /// which will be rounded down to seconds. /// An object that represents the access conditions for the blob. - /// The options for this operation. - /// An object that represents the context for the current operation. + /// A object that specifies additional options for the request. + /// An object that represents the context for the current operation. /// A to observe while waiting for a task to complete. /// A object that represents the current operation. Task BreakLeaseAsync(TimeSpan? breakPeriod, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext, CancellationToken cancellationToken); @@ -1684,9 +1684,9 @@ public partial interface ICloudBlob : IListBlobItem /// Requests that the service start to copy a blob's contents, properties, and metadata to a new blob. /// /// The URI of a source blob. - /// An object that represents the access conditions for the source blob. - /// An object that represents the access conditions for the destination blob. - /// An object that specifies additional options for the request. + /// An object that represents the access conditions for the source blob. + /// An object that represents the access conditions for the destination blob. + /// A object that specifies additional options for the request. /// An object that represents the context for the current operation. /// The copy ID associated with the copy operation. [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "dest", Justification = "Reviewed")] @@ -1707,9 +1707,9 @@ public partial interface ICloudBlob : IListBlobItem /// to the blob referenced by this object. /// /// The URI of a source blob. - /// An object that represents the access conditions for the source blob. - /// An object that represents the access conditions for the destination blob. - /// An object that specifies additional options for the request. + /// An object that represents the access conditions for the source blob. + /// An object that represents the access conditions for the destination blob. + /// A object that specifies additional options for the request. /// An object that represents the context for the current operation. /// The callback delegate that will receive notification when the asynchronous operation completes. /// A user-defined object that will be passed to the callback delegate. @@ -1747,9 +1747,9 @@ public partial interface ICloudBlob : IListBlobItem /// to the blob referenced by this object. /// /// The URI of a source blob. - /// An object that represents the access conditions for the source blob. - /// An object that represents the access conditions for the destination blob. - /// An object that specifies additional options for the request. + /// An object that represents the access conditions for the source blob. + /// An object that represents the access conditions for the destination blob. + /// A object that specifies additional options for the request. /// An object that represents the context for the current operation. /// A object that represents the current operation. [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "dest", Justification = "Reviewed")] @@ -1760,9 +1760,9 @@ public partial interface ICloudBlob : IListBlobItem /// to the blob referenced by this object. /// /// The URI of a source blob. - /// An object that represents the access conditions for the source blob. - /// An object that represents the access conditions for the destination blob. - /// An object that specifies additional options for the request. + /// An object that represents the access conditions for the source blob. + /// An object that represents the access conditions for the destination blob. + /// A object that specifies additional options for the request. /// An object that represents the context for the current operation. /// A to observe while waiting for a task to complete. /// A object that represents the current operation. @@ -1776,7 +1776,7 @@ public partial interface ICloudBlob : IListBlobItem /// /// A string identifying the copy operation. /// An object that represents the access conditions for the blob. - /// An object that specifies additional options for the request. + /// A object that specifies additional options for the request. /// An object that represents the context for the current operation. void AbortCopy(string copyId, AccessCondition accessCondition = null, BlobRequestOptions options = null, OperationContext operationContext = null); #endif @@ -1795,7 +1795,7 @@ public partial interface ICloudBlob : IListBlobItem /// /// A string identifying the copy operation. /// An object that represents the access conditions for the blob. - /// An object that specifies additional options for the request. + /// A object that specifies additional options for the request. /// An object that represents the context for the current operation. /// The callback delegate that will receive notification when the asynchronous operation completes. /// A user-defined object that will be passed to the callback delegate. @@ -1829,7 +1829,7 @@ public partial interface ICloudBlob : IListBlobItem /// /// A string identifying the copy operation. /// An object that represents the access conditions for the blob. - /// An object that specifies additional options for the request. + /// A object that specifies additional options for the request. /// An object that represents the context for the current operation. /// A object that represents the current operation. Task AbortCopyAsync(string copyId, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext); @@ -1839,7 +1839,7 @@ public partial interface ICloudBlob : IListBlobItem /// /// A string identifying the copy operation. /// An object that represents the access conditions for the blob. - /// An object that specifies additional options for the request. + /// A object that specifies additional options for the request. /// An object that represents the context for the current operation. /// A to observe while waiting for a task to complete. /// A object that represents the current operation. diff --git a/Lib/ClassLibraryCommon/Queue/CloudQueue.cs b/Lib/ClassLibraryCommon/Queue/CloudQueue.cs index e5d039b31..3a27b690f 100644 --- a/Lib/ClassLibraryCommon/Queue/CloudQueue.cs +++ b/Lib/ClassLibraryCommon/Queue/CloudQueue.cs @@ -640,7 +640,7 @@ public ICancellableAsyncResult BeginDelete(AsyncCallback callback, object state) /// Begins an asynchronous operation to delete a queue. /// /// A object that specifies additional options for the request. - /// An object that represents the context for the current operation. + /// An object that represents the context for the current operation. /// The callback delegate that will receive notification when the asynchronous operation completes. /// A user-defined object that will be passed to the callback delegate. /// An that references the asynchronous operation. @@ -1311,7 +1311,7 @@ public Task FetchAttributesAsync(QueueRequestOptions options, OperationContext o /// The length of time from now during which the message will be invisible. /// If null then the message will be visible immediately. /// A object that specifies additional options for the request. - /// An object that represents the context for the current operation. + /// An object that represents the context for the current operation. [DoesServiceRequest] public void AddMessage(CloudQueueMessage message, TimeSpan? timeToLive = null, TimeSpan? initialVisibilityDelay = null, QueueRequestOptions options = null, OperationContext operationContext = null) { @@ -1348,7 +1348,7 @@ public ICancellableAsyncResult BeginAddMessage(CloudQueueMessage message, AsyncC /// The length of time from now during which the message will be invisible. /// If null then the message will be visible immediately. /// A object that specifies additional options for the request. - /// An object that represents the context for the current operation. + /// An object that represents the context for the current operation. /// The callback delegate that will receive notification when the asynchronous operation completes. /// A user-defined object that will be passed to the callback delegate. /// An that references the asynchronous operation. @@ -1443,7 +1443,7 @@ public Task AddMessageAsync(CloudQueueMessage message, TimeSpan? timeToLive, Tim /// The visibility timeout interval. /// Flags of values that specifies which parts of the message are to be updated. /// A object that specifies additional options for the request. - /// An object that represents the context for the current operation. + /// An object that represents the context for the current operation. [DoesServiceRequest] public void UpdateMessage(CloudQueueMessage message, TimeSpan visibilityTimeout, MessageUpdateFields updateFields, QueueRequestOptions options = null, OperationContext operationContext = null) { @@ -1479,7 +1479,7 @@ public ICancellableAsyncResult BeginUpdateMessage(CloudQueueMessage message, Tim /// The visibility timeout interval. /// An EnumSet of values that specifies which parts of the message are to be updated. /// A object that specifies additional options for the request. - /// An object that represents the context for the current operation. + /// An object that represents the context for the current operation. /// The callback delegate that will receive notification when the asynchronous operation completes. /// A user-defined object that will be passed to the callback delegate. /// An that references the asynchronous operation. diff --git a/Lib/ClassLibraryCommon/Table/Protocol/TableUtilities.cs b/Lib/ClassLibraryCommon/Table/Protocol/TableUtilities.cs index 9618c1737..08d009795 100644 --- a/Lib/ClassLibraryCommon/Table/Protocol/TableUtilities.cs +++ b/Lib/ClassLibraryCommon/Table/Protocol/TableUtilities.cs @@ -39,70 +39,80 @@ internal static class TableUtilities /// internal static StorageException TranslateDataServiceException(Exception e, RequestResult reqResult, Func, StorageExtendedErrorInformation> parseError) { - // The exception thrown is based on whether it is a change/query operation. - DataServiceRequestException dsre = FindInnerExceptionOfType(e); - - DataServiceQueryException dsqe = FindInnerExceptionOfType(e); - - if (dsre == null && dsqe == null) + try { - InvalidOperationException ioe = TableUtilities.FindInnerExceptionOfType(e); + // The exception thrown is based on whether it is a change/query operation. + DataServiceRequestException dsre = FindInnerExceptionOfType(e); - if (ioe != null && !(ioe is WebException) && string.CompareOrdinal(ioe.Source, "Microsoft.Data.Services.Client") == 0 && ioe.Message.Contains("type is not compatible with the expected")) + DataServiceQueryException dsqe = FindInnerExceptionOfType(e); + + if (dsre == null && dsqe == null) { - return new StorageException(reqResult, e.Message, e) { IsRetryable = false }; - } + InvalidOperationException ioe = TableUtilities.FindInnerExceptionOfType(e); - return null; - } - else if (dsre != null) - { - DataServiceResponse response = dsre.Response; + if (ioe != null && !(ioe is WebException) && string.CompareOrdinal(ioe.Source, "Microsoft.Data.Services.Client") == 0 && ioe.Message.Contains("type is not compatible with the expected")) + { + return new StorageException(reqResult, e.Message, e) { IsRetryable = false }; + } - IDictionary headers; - foreach (OperationResponse operationResponse in response) + return null; + } + else if (dsre != null) { - reqResult.HttpStatusCode = operationResponse.StatusCode; + DataServiceResponse response = dsre.Response; - // The exception thrown will contain the first error in the group of requests. - if (reqResult.HttpStatusCode >= 300) - { - headers = operationResponse.Headers; + // Get the batch status code first in case batch does not contain any responses. + reqResult.HttpStatusCode = response.BatchStatusCode; - // Strip off the extra exception type at the beginning. - string innerException = dsre.InnerException.ToString().Replace("System.Data.Services.Client.DataServiceClientException: ", string.Empty); + IDictionary headers; + foreach (OperationResponse operationResponse in response) + { + reqResult.HttpStatusCode = operationResponse.StatusCode; - using (Stream stream = new MemoryStream(Encoding.UTF8.GetBytes(innerException))) + // The exception thrown will contain the first error in the group of requests. + if (reqResult.HttpStatusCode >= 300) { - reqResult.ExtendedErrorInformation = parseError(stream, headers); - } + headers = operationResponse.Headers; - break; + // Strip off the extra exception type at the beginning. + string innerException = dsre.InnerException.ToString().Replace("System.Data.Services.Client.DataServiceClientException: ", string.Empty); + + using (Stream stream = new MemoryStream(Encoding.UTF8.GetBytes(innerException))) + { + reqResult.ExtendedErrorInformation = parseError(stream, headers); + } + + break; + } } + + return new StorageException( + reqResult, + reqResult.ExtendedErrorInformation != null ? reqResult.ExtendedErrorInformation.ErrorCode : dsre.Message, + dsre); } + else + { + QueryOperationResponse response = dsqe.Response; - return new StorageException( - reqResult, - reqResult.ExtendedErrorInformation != null ? reqResult.ExtendedErrorInformation.ErrorCode : dsre.Message, - dsre); - } - else - { - QueryOperationResponse response = dsqe.Response; + reqResult.HttpStatusCode = response.StatusCode; - reqResult.HttpStatusCode = response.StatusCode; + string innerException = dsqe.InnerException.Message; - string innerException = dsqe.InnerException.Message; + using (Stream stream = new MemoryStream(Encoding.UTF8.GetBytes(innerException))) + { + reqResult.ExtendedErrorInformation = parseError(stream, response.Headers); + } - using (Stream stream = new MemoryStream(Encoding.UTF8.GetBytes(innerException))) - { - reqResult.ExtendedErrorInformation = parseError(stream, response.Headers); + return new StorageException( + reqResult, + reqResult.ExtendedErrorInformation != null ? reqResult.ExtendedErrorInformation.ErrorCode : dsqe.Message, + dsqe); } - - return new StorageException( - reqResult, - reqResult.ExtendedErrorInformation != null ? reqResult.ExtendedErrorInformation.ErrorCode : dsqe.Message, - dsqe); + } + catch (Exception) + { + return new StorageException(reqResult, e.Message, e); } } diff --git a/Lib/ClassLibraryCommon/Table/TableOperation.cs b/Lib/ClassLibraryCommon/Table/TableOperation.cs index d663a2749..1a2faad9b 100644 --- a/Lib/ClassLibraryCommon/Table/TableOperation.cs +++ b/Lib/ClassLibraryCommon/Table/TableOperation.cs @@ -32,7 +32,7 @@ namespace Microsoft.WindowsAzure.Storage.Table public sealed partial class TableOperation { /// - /// Creates a new table operation that replaces the contents of + /// Creates a new table operation that retrieves the contents of /// the given entity in a table. /// /// The class of type for the entity to retrieve. @@ -66,7 +66,7 @@ public static TableOperation Retrieve(string partitionKey, string rowk } /// - /// Creates a new table operation that replaces the contents of + /// Creates a new table operation that retrieves the contents of /// the given entity in a table. /// /// The return type which the specified will resolve the given entity to. diff --git a/Lib/Common/Blob/CloudBlobClient.Common.cs b/Lib/Common/Blob/CloudBlobClient.Common.cs index 0618ac78c..e273ac5e3 100644 --- a/Lib/Common/Blob/CloudBlobClient.Common.cs +++ b/Lib/Common/Blob/CloudBlobClient.Common.cs @@ -245,7 +245,7 @@ public int ParallelOperationThreadCount set { - CommonUtility.AssertInBounds("UploadParallelActiveTasks", value, 1, Constants.MaxParallelOperationThreadCount); + CommonUtility.AssertInBounds("ParallelOperationThreadCount", value, 1, Constants.MaxParallelOperationThreadCount); this.parallelOperationThreadCount = value; } } diff --git a/Lib/Common/Core/Util/CommonUtility.cs b/Lib/Common/Core/Util/CommonUtility.cs index 948915ab6..3185a6e22 100644 --- a/Lib/Common/Core/Util/CommonUtility.cs +++ b/Lib/Common/Core/Util/CommonUtility.cs @@ -157,6 +157,9 @@ internal static void ArgumentOutOfRange(string paramName, object value) /// The value of the parameter. /// The minimum value for the parameter. /// The maximum value for the parameter. +#if WINDOWS_PHONE + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoOptimization)] +#endif internal static void AssertInBounds(string paramName, T val, T min, T max) where T : IComparable { @@ -178,6 +181,9 @@ internal static void AssertInBounds(string paramName, T val, T min, T max) /// The name of the parameter. /// The value of the parameter. /// The minimum value for the parameter. +#if WINDOWS_PHONE + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoOptimization)] +#endif internal static void AssertInBounds(string paramName, T val, T min) where T : IComparable { diff --git a/Lib/Common/Shared/Protocol/Constants.cs b/Lib/Common/Shared/Protocol/Constants.cs index d4f7a4cd9..98424824e 100644 --- a/Lib/Common/Shared/Protocol/Constants.cs +++ b/Lib/Common/Shared/Protocol/Constants.cs @@ -709,7 +709,7 @@ static HeaderConstants() /// /// Specifies the value to use for UserAgent header. /// - public const string UserAgentProductVersion = "3.0.1"; + public const string UserAgentProductVersion = "3.0.2"; /// /// Master Windows Azure Storage header prefix. diff --git a/Lib/Common/Shared/Protocol/HttpResponseParsers.Common.cs b/Lib/Common/Shared/Protocol/HttpResponseParsers.Common.cs index 8e71b4a33..5ade3d2de 100644 --- a/Lib/Common/Shared/Protocol/HttpResponseParsers.Common.cs +++ b/Lib/Common/Shared/Protocol/HttpResponseParsers.Common.cs @@ -23,6 +23,7 @@ namespace Microsoft.WindowsAzure.Storage.Shared.Protocol using System.Collections.Generic; using System.Globalization; using System.IO; + using System.Linq; using System.Net; using System.Text; using System.Xml; @@ -65,23 +66,10 @@ internal static T ProcessExpectedStatusCodeNoException(HttpStatusCode[] expec throw ex; } - bool foundExpectedStatusCode = false; - StringBuilder expectedStatusCodeString = null; - foreach (HttpStatusCode expectedStatusCode in expectedStatusCodes) + if (!expectedStatusCodes.Contains(actualStatusCode)) { - if (actualStatusCode == expectedStatusCode) - { - foundExpectedStatusCode = true; - break; - } - - expectedStatusCodeString.Append(expectedStatusCode); - expectedStatusCodeString.Append(","); - } - - if (!foundExpectedStatusCode) - { - throw new StorageException(cmd.CurrentResult, string.Format(CultureInfo.InvariantCulture, SR.UnexpectedResponseCode, expectedStatusCodeString.ToString().TrimEnd(','), actualStatusCode.ToString()), null); + string expectedStatusCodeString = string.Join(",", expectedStatusCodes); + throw new StorageException(cmd.CurrentResult, string.Format(CultureInfo.InvariantCulture, SR.UnexpectedResponseCode, expectedStatusCodeString, actualStatusCode.ToString()), null); } return retVal; diff --git a/Lib/Common/Table/TableRequestOptions.cs b/Lib/Common/Table/TableRequestOptions.cs index 46ee23122..22498512a 100644 --- a/Lib/Common/Table/TableRequestOptions.cs +++ b/Lib/Common/Table/TableRequestOptions.cs @@ -159,7 +159,7 @@ public TablePayloadFormat? PayloadFormat if (value.HasValue) { #if WINDOWS_RT - if (value.Value == TablePayloadFormat.Json || value.Value == TablePayloadFormat.JsonNoMetadata) + if (value.Value == TablePayloadFormat.Json || value.Value == TablePayloadFormat.JsonNoMetadata || value.Value == TablePayloadFormat.JsonFullMetadata) { throw new ArgumentException(SR.JsonNotSupportedOnRT, "value"); } diff --git a/Lib/WindowsAzure.Storage-Preview.nuspec b/Lib/WindowsAzure.Storage-Preview.nuspec index 2d09b6579..5ba7db5a3 100644 --- a/Lib/WindowsAzure.Storage-Preview.nuspec +++ b/Lib/WindowsAzure.Storage-Preview.nuspec @@ -2,7 +2,7 @@ WindowsAzure.Storage-Preview - 3.0.1.0-preview + 3.0.2.0-preview Windows Azure Storage Microsoft Microsoft diff --git a/Lib/WindowsDesktop/Properties/AssemblyInfo.cs b/Lib/WindowsDesktop/Properties/AssemblyInfo.cs index 1f589e49a..cf4fe495d 100644 --- a/Lib/WindowsDesktop/Properties/AssemblyInfo.cs +++ b/Lib/WindowsDesktop/Properties/AssemblyInfo.cs @@ -34,8 +34,8 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("3.0.1.0")] -[assembly: AssemblyFileVersion("3.0.1.0")] +[assembly: AssemblyVersion("3.0.2.0")] +[assembly: AssemblyFileVersion("3.0.2.0")] #if SIGN [assembly: InternalsVisibleTo( diff --git a/Lib/WindowsDesktop/WindowsAzure.Storage.nuspec b/Lib/WindowsDesktop/WindowsAzure.Storage.nuspec index 575bd51fa..c1a123946 100644 --- a/Lib/WindowsDesktop/WindowsAzure.Storage.nuspec +++ b/Lib/WindowsDesktop/WindowsAzure.Storage.nuspec @@ -2,7 +2,7 @@ WindowsAzure.Storage - 3.0.1.0 + 3.0.2.0 Windows Azure Storage Microsoft Microsoft diff --git a/Lib/WindowsPhone/Properties/AssemblyInfo.cs b/Lib/WindowsPhone/Properties/AssemblyInfo.cs index 3bf20a0ff..7a22fda23 100644 --- a/Lib/WindowsPhone/Properties/AssemblyInfo.cs +++ b/Lib/WindowsPhone/Properties/AssemblyInfo.cs @@ -32,8 +32,8 @@ // // You can specify all the values or you can default the Revision and Build Numbers // by using the '*' as shown below: -[assembly: AssemblyVersion("3.0.1.0")] -[assembly: AssemblyFileVersion("3.0.1.0")] +[assembly: AssemblyVersion("3.0.2.0")] +[assembly: AssemblyFileVersion("3.0.2.0")] [assembly: NeutralResourcesLanguageAttribute("en-US")] #if SIGN diff --git a/Lib/WindowsRuntime/Blob/CloudBlockBlob.cs b/Lib/WindowsRuntime/Blob/CloudBlockBlob.cs index af1d40268..b286ce261 100644 --- a/Lib/WindowsRuntime/Blob/CloudBlockBlob.cs +++ b/Lib/WindowsRuntime/Blob/CloudBlockBlob.cs @@ -333,7 +333,7 @@ public IAsyncAction UploadTextAsync(string content) /// /// The text to upload, encoded as a UTF-8 string. /// An object that represents the access conditions for the blob. - /// An object that specifies additional options for the request. + /// A object that specifies additional options for the request. /// An object that represents the context for the current operation. /// An that represents an asynchronous action. [DoesServiceRequest] @@ -457,7 +457,7 @@ public IAsyncOperation DownloadTextAsync() /// Downloads the blob's contents as a string. /// /// An object that represents the access conditions for the blob. - /// An object that specifies additional options for the request. + /// A object that specifies additional options for the request. /// An object that represents the context for the current operation. /// The contents of the blob, as a string. public IAsyncOperation DownloadTextAsync(AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext) @@ -591,7 +591,7 @@ public IAsyncAction FetchAttributesAsync() /// /// An object that represents the access conditions for the blob. If null, no condition is used. /// A object that specifies additional options for the request. - /// An object that represents the context for the current operation. + /// An object that represents the context for the current operation. /// An that represents an asynchronous action. [DoesServiceRequest] public IAsyncAction FetchAttributesAsync(AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext) @@ -619,7 +619,7 @@ public IAsyncAction SetMetadataAsync() /// /// An object that represents the access conditions for the blob. If null, no condition is used. /// A object that specifies additional options for the request. - /// An object that represents the context for the current operation. + /// An object that represents the context for the current operation. /// An that represents an asynchronous action. [DoesServiceRequest] public IAsyncAction SetMetadataAsync(AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext) @@ -648,7 +648,7 @@ public IAsyncAction SetPropertiesAsync() /// /// An object that represents the access conditions for the blob. If null, no condition is used. /// A object that specifies additional options for the request. - /// An object that represents the context for the current operation. + /// An object that represents the context for the current operation. /// An that represents an asynchronous action. [DoesServiceRequest] public IAsyncAction SetPropertiesAsync(AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext) @@ -678,7 +678,7 @@ public IAsyncAction DeleteAsync() /// Whether to only delete the blob, to delete the blob and all snapshots, or to only delete the snapshots. /// An object that represents the access conditions for the blob. If null, no condition is used. /// A object that specifies additional options for the request. - /// An object that represents the context for the current operation. + /// An object that represents the context for the current operation. /// An that represents an asynchronous action. [DoesServiceRequest] public IAsyncAction DeleteAsync(DeleteSnapshotsOption deleteSnapshotsOption, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext) @@ -768,7 +768,7 @@ public IAsyncOperation CreateSnapshotAsync() /// A collection of name-value pairs defining the metadata of the snapshot. /// An object that represents the access conditions for the blob. If null, no condition is used. /// An object that specifies additional options for the request, or null. - /// An object that represents the context for the current operation. + /// An object that represents the context for the current operation. /// A blob snapshot. [DoesServiceRequest] public IAsyncOperation CreateSnapshotAsync(IDictionary metadata, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext) @@ -964,7 +964,7 @@ public IAsyncAction PutBlockAsync(string blockId, IInputStream blockData, string /// on the blob. May be null or an empty string. /// An object that represents the access conditions for the blob. If null, no condition is used. /// A object that specifies additional options for the request. - /// An object that represents the context for the current operation. + /// An object that represents the context for the current operation. /// An that represents an asynchronous action. [DoesServiceRequest] public IAsyncAction PutBlockAsync(string blockId, IInputStream blockData, string contentMD5, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext) @@ -1027,7 +1027,7 @@ public IAsyncAction PutBlockListAsync(IEnumerable blockList) /// An enumerable collection of block IDs, as base64-encoded strings. /// An object that represents the access conditions for the blob. If null, no condition is used. /// A object that specifies additional options for the request. - /// An object that represents the context for the current operation. + /// An object that represents the context for the current operation. /// An that represents an asynchronous action. [DoesServiceRequest] public IAsyncAction PutBlockListAsync(IEnumerable blockList, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext) @@ -1058,7 +1058,7 @@ public IAsyncOperation> DownloadBlockListAsync() /// committed blocks, uncommitted blocks, or both. /// An object that represents the access conditions for the blob. If null, no condition is used. /// A object that specifies additional options for the request. - /// An object that represents the context for the current operation. + /// An object that represents the context for the current operation. /// An enumerable collection of objects implementing . [DoesServiceRequest] public IAsyncOperation> DownloadBlockListAsync(BlockListingFilter blockListingFilter, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext) diff --git a/Lib/WindowsRuntime/Blob/CloudPageBlob.cs b/Lib/WindowsRuntime/Blob/CloudPageBlob.cs index ebb77622b..2c7eda006 100644 --- a/Lib/WindowsRuntime/Blob/CloudPageBlob.cs +++ b/Lib/WindowsRuntime/Blob/CloudPageBlob.cs @@ -469,7 +469,7 @@ public IAsyncAction CreateAsync(long size) /// The maximum size of the page blob, in bytes. /// An object that represents the access conditions for the blob. If null, no condition is used. /// A object that specifies additional options for the request. - /// An object that represents the context for the current operation. + /// An object that represents the context for the current operation. /// An that represents an asynchronous action. [DoesServiceRequest] public IAsyncAction CreateAsync(long size, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext) @@ -499,7 +499,7 @@ public IAsyncAction ResizeAsync(long size) /// The maximum size of the page blob, in bytes. /// An object that represents the access conditions for the blob. If null, no condition is used. /// A object that specifies additional options for the request. - /// An object that represents the context for the current operation. + /// An object that represents the context for the current operation. /// An that represents an asynchronous action. [DoesServiceRequest] public IAsyncAction ResizeAsync(long size, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext) @@ -531,7 +531,7 @@ public IAsyncAction SetSequenceNumberAsync(SequenceNumberAction sequenceNumberAc /// The sequence number. Set this parameter to null if is equal to . /// An object that represents the access conditions for the blob. If null, no condition is used. /// A object that specifies additional options for the request. - /// An object that represents the context for the current operation. + /// An object that represents the context for the current operation. /// An that represents an asynchronous action. [DoesServiceRequest] public IAsyncAction SetSequenceNumberAsync(SequenceNumberAction sequenceNumberAction, long? sequenceNumber, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext) @@ -598,7 +598,7 @@ public IAsyncAction FetchAttributesAsync() /// /// An object that represents the access conditions for the blob. If null, no condition is used. /// A object that specifies additional options for the request. - /// An object that represents the context for the current operation. + /// An object that represents the context for the current operation. /// An that represents an asynchronous action. [DoesServiceRequest] public IAsyncAction FetchAttributesAsync(AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext) @@ -656,7 +656,7 @@ public IAsyncAction SetMetadataAsync() /// /// An object that represents the access conditions for the blob. If null, no condition is used. /// A object that specifies additional options for the request. - /// An object that represents the context for the current operation. + /// An object that represents the context for the current operation. /// An that represents an asynchronous action. [DoesServiceRequest] public IAsyncAction SetMetadataAsync(AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext) @@ -685,7 +685,7 @@ public IAsyncAction SetPropertiesAsync() /// /// An object that represents the access conditions for the blob. If null, no condition is used. /// A object that specifies additional options for the request. - /// An object that represents the context for the current operation. + /// An object that represents the context for the current operation. /// An that represents an asynchronous action. [DoesServiceRequest] public IAsyncAction SetPropertiesAsync(AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext) @@ -715,7 +715,7 @@ public IAsyncAction DeleteAsync() /// Whether to only delete the blob, to delete the blob and all snapshots, or to only delete the snapshots. /// An object that represents the access conditions for the blob. If null, no condition is used. /// A object that specifies additional options for the request. - /// An object that represents the context for the current operation. + /// An object that represents the context for the current operation. /// An that represents an asynchronous action. [DoesServiceRequest] public IAsyncAction DeleteAsync(DeleteSnapshotsOption deleteSnapshotsOption, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext) @@ -805,7 +805,7 @@ public IAsyncOperation CreateSnapshotAsync() /// A collection of name-value pairs defining the metadata of the snapshot. /// An object that represents the access conditions for the blob. If null, no condition is used. /// A object that specifies additional options for the request, or null. - /// An object that represents the context for the current operation. + /// An object that represents the context for the current operation. /// A blob snapshot. [DoesServiceRequest] public IAsyncOperation CreateSnapshotAsync(IDictionary metadata, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext) @@ -1001,7 +1001,7 @@ public IAsyncAction WritePagesAsync(IInputStream pageData, long startOffset, str /// on the blob. May be null or an empty string. /// An object that represents the access conditions for the blob. If null, no condition is used. /// A object that specifies additional options for the request. - /// An object that represents the context for the current operation. + /// An object that represents the context for the current operation. /// An that represents an asynchronous action. [DoesServiceRequest] public IAsyncAction WritePagesAsync(IInputStream pageData, long startOffset, string contentMD5, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext) @@ -1066,7 +1066,7 @@ public IAsyncAction ClearPagesAsync(long startOffset, long length) /// The length of the data range to be cleared, in bytes. The length must be a multiple of 512. /// An object that represents the access conditions for the blob. If null, no condition is used. /// A object that specifies additional options for the request. - /// An object that represents the context for the current operation. + /// An object that represents the context for the current operation. /// An that represents an asynchronous action. [DoesServiceRequest] public IAsyncAction ClearPagesAsync(long startOffset, long length, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext) diff --git a/Lib/WindowsRuntime/Properties/AssemblyInfo.cs b/Lib/WindowsRuntime/Properties/AssemblyInfo.cs index dfd156f42..7a5c03f44 100644 --- a/Lib/WindowsRuntime/Properties/AssemblyInfo.cs +++ b/Lib/WindowsRuntime/Properties/AssemblyInfo.cs @@ -25,8 +25,8 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("3.0.1.0")] -[assembly: AssemblyFileVersion("3.0.1.0")] +[assembly: AssemblyVersion("3.0.2.0")] +[assembly: AssemblyFileVersion("3.0.2.0")] [assembly: ComVisible(false)] #if SIGN diff --git a/Lib/WindowsRuntime/Queue/CloudQueue.cs b/Lib/WindowsRuntime/Queue/CloudQueue.cs index ee184b89b..308c9ed39 100644 --- a/Lib/WindowsRuntime/Queue/CloudQueue.cs +++ b/Lib/WindowsRuntime/Queue/CloudQueue.cs @@ -398,7 +398,7 @@ public IAsyncAction AddMessageAsync(CloudQueueMessage message) /// The length of time from now during which the message will be invisible. /// If null then the message will be visible immediately. /// A object that specifies additional options for the request. - /// An object that represents the context for the current operation. + /// An object that represents the context for the current operation. /// An that represents an asynchronous action. [DoesServiceRequest] public IAsyncAction AddMessageAsync(CloudQueueMessage message, TimeSpan? timeToLive, TimeSpan? initialVisibilityDelay, QueueRequestOptions options, OperationContext operationContext) @@ -433,7 +433,7 @@ public IAsyncAction UpdateMessageAsync(CloudQueueMessage message, TimeSpan visib /// The visibility timeout interval. /// The message update fields. /// A object that specifies additional options for the request. - /// An object that represents the context for the current operation. + /// An object that represents the context for the current operation. /// An that represents an asynchronous action. [DoesServiceRequest] public IAsyncAction UpdateMessageAsync(CloudQueueMessage message, TimeSpan visibilityTimeout, MessageUpdateFields updateFields, QueueRequestOptions options, OperationContext operationContext) diff --git a/Lib/WindowsRuntimeTable/Properties/AssemblyInfo.cs b/Lib/WindowsRuntimeTable/Properties/AssemblyInfo.cs index dbab32ae6..fbb79a5c2 100644 --- a/Lib/WindowsRuntimeTable/Properties/AssemblyInfo.cs +++ b/Lib/WindowsRuntimeTable/Properties/AssemblyInfo.cs @@ -25,8 +25,8 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("3.0.1.0")] -[assembly: AssemblyFileVersion("3.0.1.0")] +[assembly: AssemblyVersion("3.0.2.0")] +[assembly: AssemblyFileVersion("3.0.2.0")] [assembly: ComVisible(false)] #if SIGN diff --git a/Lib/WindowsRuntimeTable/WindowsAzure.Storage.Table-Preview.nuspec b/Lib/WindowsRuntimeTable/WindowsAzure.Storage.Table-Preview.nuspec index ace605332..c2bb15fc5 100644 --- a/Lib/WindowsRuntimeTable/WindowsAzure.Storage.Table-Preview.nuspec +++ b/Lib/WindowsRuntimeTable/WindowsAzure.Storage.Table-Preview.nuspec @@ -2,7 +2,7 @@ WindowsAzure.Storage.Table-Preview - 3.0.1.0-preview + 3.0.2.0-preview Windows Azure Storage Tables Extension for Windows Runtime Microsoft Microsoft @@ -16,7 +16,7 @@ Windows Azure Storage team's blog - http://blogs.msdn.com/b/windowsazurestorage/ A table extension library for Windows Runtime for working with Windows Azure Storage tables. Microsoft, Azure, Storage, Table, Scalable, winrt, windowsazureofficial - + diff --git a/Test/ClassLibraryCommon/Queue/CloudQueueTest.cs b/Test/ClassLibraryCommon/Queue/CloudQueueTest.cs index 6ff336508..724df8e21 100644 --- a/Test/ClassLibraryCommon/Queue/CloudQueueTest.cs +++ b/Test/ClassLibraryCommon/Queue/CloudQueueTest.cs @@ -68,6 +68,7 @@ public void CloudQueueCreateAndDelete() CloudQueueClient client = GenerateCloudQueueClient(); CloudQueue queue = client.GetQueueReference(name); queue.Create(); + queue.Create(); queue.Delete(); } @@ -89,6 +90,10 @@ public void CloudQueueCreateAndDeleteAPM() waitHandle.WaitOne(); queue.EndCreate(result); + result = queue.BeginCreate(ar => waitHandle.Set(), null); + waitHandle.WaitOne(); + queue.EndCreate(result); + result = queue.BeginExists(ar => waitHandle.Set(), null); waitHandle.WaitOne(); Assert.IsTrue(queue.EndExists(result)); @@ -112,7 +117,8 @@ public void CloudQueueCreateAndDeleteTask() CloudQueueClient client = GenerateCloudQueueClient(); CloudQueue queue = client.GetQueueReference(name); queue.CreateAsync().Wait(); - queue.ExistsAsync().Wait(); + queue.CreateAsync().Wait(); + Assert.IsTrue(queue.ExistsAsync().Result); queue.DeleteAsync().Wait(); } #endif diff --git a/Test/ClassLibraryCommon/Table/TableBatchOperationTest.cs b/Test/ClassLibraryCommon/Table/TableBatchOperationTest.cs index 18a73810d..2e305a872 100644 --- a/Test/ClassLibraryCommon/Table/TableBatchOperationTest.cs +++ b/Test/ClassLibraryCommon/Table/TableBatchOperationTest.cs @@ -2836,7 +2836,7 @@ private void DoTableBatchOperationWithRetryHasCorrectNumberOfResults(TablePayloa TableBatchOperation batch = new TableBatchOperation(); for (int i = 0; i < 100; i++) { - DynamicTableEntity insertEntity = new DynamicTableEntity("retry test", i.ToString()); + DynamicTableEntity insertEntity = new DynamicTableEntity("retry test", format.ToString() + i.ToString()); insertEntity.Properties.Add("prop", new EntityProperty(new byte[20 * 1024])); batch.Insert(insertEntity); } @@ -2872,6 +2872,8 @@ private void DoTableBatchOperationWithRetryHasCorrectNumberOfResults(TablePayloa [TestCategory(TenantTypeCategory.DevStore), TestCategory(TenantTypeCategory.DevFabric), TestCategory(TenantTypeCategory.Cloud)] public void TableBatchOnSecondary() { + AssertSecondaryEndpoint(); + CloudTable table = GenerateCloudTableClient().GetTableReference(GenerateRandomTableName()); TableRequestOptions options = new TableRequestOptions() diff --git a/Test/ClassLibraryCommon/TestHelper.cs b/Test/ClassLibraryCommon/TestHelper.cs index e036091f1..76892b454 100644 --- a/Test/ClassLibraryCommon/TestHelper.cs +++ b/Test/ClassLibraryCommon/TestHelper.cs @@ -174,26 +174,24 @@ internal static void ExecuteAPMMethodWithCancellation(int cancellationDelayIn Assert.AreEqual("Unused", storageException.RequestInformation.HttpStatusMessage); } - internal static void ExecuteAPMMethodWithRetry(int ExpectedAttempts, - ProxyBehavior[] behaviors, - Func begin, - Func end) + internal static void ExecuteAPMMethodWithRetry(int expectedAttempts, + ProxyBehavior[] behaviors, + Func begin, + Func end) { string failMessage = null; OperationContext opContext = new OperationContext(); using (HttpMangler proxy = new HttpMangler(false, behaviors)) { - Debug.WriteLine("Begin"); using (ManualResetEvent completedEvent = new ManualResetEvent(false)) { - ICancellableAsyncResult saveResult = begin(null - , opContext, + ICancellableAsyncResult saveResult = begin(null, + opContext, (resp) => { try { - Debug.WriteLine("End"); end(resp); } catch (Exception badEx) @@ -205,10 +203,10 @@ internal static void ExecuteAPMMethodWithRetry(int ExpectedAttempts, completedEvent.Set(); } }, - null); + null); completedEvent.WaitOne(); - TestHelper.AssertNAttempts(opContext, ExpectedAttempts); + TestHelper.AssertNAttempts(opContext, expectedAttempts); } } @@ -217,36 +215,36 @@ internal static void ExecuteAPMMethodWithRetry(int ExpectedAttempts, } #if TASK - internal static void ExecuteTaskMethodWithRetry(int ExpectedAttempts, - ProxyBehavior[] behaviors, - Func> method) + internal static void ExecuteTaskMethodWithRetry(int expectedAttempts, + ProxyBehavior[] behaviors, + Func> method) { OperationContext opContext = new OperationContext(); using (HttpMangler proxy = new HttpMangler(false, behaviors)) { method(null, opContext).Wait(); - TestHelper.AssertNAttempts(opContext, ExpectedAttempts); + TestHelper.AssertNAttempts(opContext, expectedAttempts); } } #endif - internal static void ExecuteMethodWithRetry(int ExpectedAttempts, - ProxyBehavior[] behaviors, - Func method) + internal static void ExecuteMethodWithRetry(int expectedAttempts, + ProxyBehavior[] behaviors, + Func method) { OperationContext opContext = new OperationContext(); using (HttpMangler proxy = new HttpMangler(false, behaviors)) { method(null, opContext); - TestHelper.AssertNAttempts(opContext, ExpectedAttempts); + TestHelper.AssertNAttempts(opContext, expectedAttempts); } } - internal static void ExecuteMethodWithRetryInTryFinally(int ExpectedAttempts, - ProxyBehavior[] behaviors, - Func method) + internal static void ExecuteMethodWithRetryInTryFinally(int expectedAttempts, + ProxyBehavior[] behaviors, + Func method) { OperationContext opContext = new OperationContext(); @@ -258,7 +256,7 @@ internal static void ExecuteMethodWithRetryInTryFinally(int ExpectedAttempts, } finally { - TestHelper.AssertNAttempts(opContext, ExpectedAttempts); + TestHelper.AssertNAttempts(opContext, expectedAttempts); } } } diff --git a/Test/WindowsDesktop/Properties/AssemblyInfo.cs b/Test/WindowsDesktop/Properties/AssemblyInfo.cs index 816b43805..5b6996442 100644 --- a/Test/WindowsDesktop/Properties/AssemblyInfo.cs +++ b/Test/WindowsDesktop/Properties/AssemblyInfo.cs @@ -31,5 +31,5 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("3.0.1.0")] -[assembly: AssemblyFileVersion("3.0.1.0")] +[assembly: AssemblyVersion("3.0.2.0")] +[assembly: AssemblyFileVersion("3.0.2.0")] diff --git a/Test/WindowsPhone/Properties/AssemblyInfo.cs b/Test/WindowsPhone/Properties/AssemblyInfo.cs index 92bacb117..a8b534885 100644 --- a/Test/WindowsPhone/Properties/AssemblyInfo.cs +++ b/Test/WindowsPhone/Properties/AssemblyInfo.cs @@ -32,6 +32,6 @@ // // You can specify all the values or you can default the Revision and Build Numbers // by using the '*' as shown below: -[assembly: AssemblyVersion("3.0.1.0")] -[assembly: AssemblyFileVersion("3.0.1.0")] +[assembly: AssemblyVersion("3.0.2.0")] +[assembly: AssemblyFileVersion("3.0.2.0")] [assembly: NeutralResourcesLanguageAttribute("en-US")] diff --git a/Test/WindowsPhone/Queue/CloudQueueTest.cs b/Test/WindowsPhone/Queue/CloudQueueTest.cs index 41ec86f2e..031631b15 100644 --- a/Test/WindowsPhone/Queue/CloudQueueTest.cs +++ b/Test/WindowsPhone/Queue/CloudQueueTest.cs @@ -61,7 +61,8 @@ public async Task CloudQueueCreateAndDeleteAsync() string name = GenerateNewQueueName(); CloudQueueClient client = GenerateCloudQueueClient(); CloudQueue queue = client.GetQueueReference(name); - + + await queue.CreateAsync(); await queue.CreateAsync(); await queue.DeleteAsync(); } diff --git a/Test/WindowsPhone/Table/TableBatchOperationTaskTest.cs b/Test/WindowsPhone/Table/TableBatchOperationTaskTest.cs index 06f5049e9..418cb11c3 100644 --- a/Test/WindowsPhone/Table/TableBatchOperationTaskTest.cs +++ b/Test/WindowsPhone/Table/TableBatchOperationTaskTest.cs @@ -1145,6 +1145,8 @@ private async Task InsertOrMergeBatchWithNEntities(int n, TablePayloadFormat for [TestCategory(TenantTypeCategory.DevStore), TestCategory(TenantTypeCategory.DevFabric), TestCategory(TenantTypeCategory.Cloud)] public async Task TableBatchOnSecondaryAsync() { + AssertSecondaryEndpoint(); + CloudTable table = GenerateCloudTableClient().GetTableReference(GenerateRandomTableName()); TableRequestOptions options = new TableRequestOptions() diff --git a/Test/WindowsRuntime/Properties/AssemblyInfo.cs b/Test/WindowsRuntime/Properties/AssemblyInfo.cs index cf7d48208..f3be4b1dc 100644 --- a/Test/WindowsRuntime/Properties/AssemblyInfo.cs +++ b/Test/WindowsRuntime/Properties/AssemblyInfo.cs @@ -22,5 +22,5 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("3.0.1.0")] -[assembly: AssemblyFileVersion("3.0.1.0")] +[assembly: AssemblyVersion("3.0.2.0")] +[assembly: AssemblyFileVersion("3.0.2.0")] diff --git a/Test/WindowsRuntime/Queue/CloudQueueTest.cs b/Test/WindowsRuntime/Queue/CloudQueueTest.cs index 395ac9a99..8851f6483 100644 --- a/Test/WindowsRuntime/Queue/CloudQueueTest.cs +++ b/Test/WindowsRuntime/Queue/CloudQueueTest.cs @@ -60,7 +60,8 @@ public async Task CloudQueueCreateAndDeleteAsync() string name = GenerateNewQueueName(); CloudQueueClient client = GenerateCloudQueueClient(); CloudQueue queue = client.GetQueueReference(name); - + + await queue.CreateAsync(); await queue.CreateAsync(); await queue.DeleteAsync(); } diff --git a/Test/WindowsRuntime/Table/TableBatchOperationTest.cs b/Test/WindowsRuntime/Table/TableBatchOperationTest.cs index 7efc25ac7..c51786865 100644 --- a/Test/WindowsRuntime/Table/TableBatchOperationTest.cs +++ b/Test/WindowsRuntime/Table/TableBatchOperationTest.cs @@ -1001,6 +1001,8 @@ private async Task InsertOrMergeBatchWithNEntities(int n) [TestCategory(TenantTypeCategory.DevStore), TestCategory(TenantTypeCategory.DevFabric), TestCategory(TenantTypeCategory.Cloud)] public async Task TableBatchOnSecondaryAsync() { + AssertSecondaryEndpoint(); + CloudTable table = GenerateCloudTableClient().GetTableReference(GenerateRandomTableName()); TableRequestOptions options = new TableRequestOptions() diff --git a/Test/WindowsRuntime/Table/TableOperationUnitTests.cs b/Test/WindowsRuntime/Table/TableOperationUnitTests.cs index 5ef9f2559..98486061b 100644 --- a/Test/WindowsRuntime/Table/TableOperationUnitTests.cs +++ b/Test/WindowsRuntime/Table/TableOperationUnitTests.cs @@ -918,7 +918,7 @@ public async Task TableOperationInsertOver1MBAsync() } catch (Exception) { - TestHelper.ValidateResponse(opContext, 1, (int)HttpStatusCode.BadRequest, new string[] { "EntityTooLarge" }, "The entity is larger than allowed by the Table Service."); + TestHelper.ValidateResponse(opContext, 1, (int)HttpStatusCode.BadRequest, new string[] { "EntityTooLarge" }, "The entity is larger than the maximum allowed size (1MB)."); } } #endregion diff --git a/changelog.txt b/changelog.txt index a3b353063..cb7e1276a 100644 --- a/changelog.txt +++ b/changelog.txt @@ -180,3 +180,10 @@ Issues fixed in 3.0.1.0 : - Tables: Added an explicit reference to Microsoft.Data.Services.Client in the Nuget package. - Tables: Fixed an issue caused by a Json .NET bug that resulted in an error being thrown while parsing a table query response. More details on the bug can be found here: http://james.newtonking.com/archive/2013/11/29/fixing-jarray-getenumerator-method-not-found-bug - Tables (RT): Fixed continuation tokens for queries and listing operations. + +Issues fixed in 3.0.2.0 : + + - All (WP): Fixed an issue causing ArgumentOutOfRangeException in many APIs. + - Queues: Fixed an issue causing NullReferenceException when trying to re-create an existing queue. + - Tables: Fixed an issue with TableServiceContext causing NullReferenceException when the error response cannot be parsed. + - Tables (RT): Do not allow users to set JsonFullMetadata format on RequestOptions in RT, because JSON is not supported on the RT library yet.