forked from Azure/azure-storage-java
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ChangeLog.txt
372 lines (327 loc) · 29 KB
/
ChangeLog.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
2018.06.26 Version 8.0.0
* Support for 2018-03-28 REST version. Please see our REST API documentation and blogs for information about the related added features.
* Added support for static website properties.
* Added support for the getAccountInfo feature. Sku name and account kind may be retrieved using a CloudBlobClient, CloudBlobContainer, or CloudBlob with SharedKey or SAS.
* Added support for putBlockFromURI. A block may be created with another block blob as its source.
* Upgraded the language version to Java 7.
* Updated the Jackson-Core dependency to version 2.9.4 to pull in security fix.
2018.05.22 Version 7.1.0
* Support for 2017-11-09 REST version. Please see our REST API documentation and blogs for information about the related added features.
* Added OAuth token support for authentication with HTTPS requests.
* Support for write-once read-many containers.
2018.02.05 Version 7.0.0
* Support for 2017-07-29 REST version. Please see our REST api documentation and blogs for information about the related added features.
* Added support for soft delete feature. If a delete retention policy is enabled through the set service properties API, then blobs or snapshots can be deleted softly and retained for a specified number of days, before being permanently removed by garbage collection.
* When a storage request fails, the error code may now be retrieved directly from the RequestResult and StorageException classes. This error code is populated even in cases where there is no StorageExtendedErrorInformation available, such as in calls to FetchAttributes.
* Queue messages may now be inserted with infinite duration by specifying -1 as the timeToLiveInSeconds parameter to addMessage.
* Improved performance of blob uploadFromFile APIs to avoid unnecessary buffering.
* Improved performance when streaming directly from a FileInputStream to avoid unnecessary buffering.
* Switched to using fixed length streaming mode in the HTTP client to avoid unnecessary buffering.
* Upgraded Key Vault dependency to 1.0.
* Fixed a bug preventing openInputStream from working on a blob snapshot.
2017.11.01 Version 6.1.0
* Added support for the last time the tier was modified.
2017.10.06 Version 6.0.0
* Added support for taking a snapshot of a share.
* IOExceptions wrapping StorageExceptions will now contain the StorageException message in the outer exception.
* Connection string support expanded to allow AccountName to be specified with SharedAccessSignature and DefaultEndpointsProtocol. In this case, SharedAccessSignature is used for credentials, while having both DefaultEndpointsProtocol and AccountName allows the library to infer a set of default endpoints. Additionally, we have added support for BlobSecondaryEndpoint, QueueSecondaryEndpoint, TableSecondaryEndpoint, and FileSecondaryEndpoint. Specifying a secondary endpoint requires the specification of the corresponding primary.
* All: The use of DefaultEndpointsProtocol in a connection string is now optional in the case where endpoints would be automatically generated; if missing, a value of https will be inferred. When the parsed account settings in such a case are used to generate a connection string, the value of DefaultEndpointsProtocol will be explicitly included.
2017.08.28 Version 5.5.0
* Fixed a bug when using a SAS token where the token was being omitted from calls to delete a directory in the file service.
* For Standard Storage Accounts only, added the ability to set the tier of individual block blobs. The tier can currently only be set through uploadTier()
2017.07.13 Version 5.4.0
* Support for 2017-04-17 REST version. Please see our REST API documentation and blogs for information about the related added features.
* Added ErrorReceivingResponseEvent which fires when a network error occurs before the responseReceivedEvent fires. If the responseReceivedEvent fires sucessfully, this new event will not fire.
* For Premium Accounts only, added support for getting and setting the tier on a page blob. The tier can also be set when creating or copying from an existing page blob.
* Added support for server side encryption for File Service.
2017.06.21 Version 5.3.1
* Fixed a bug in specific upload case for block blobs. This only affects uploads greater than the max put blob threshold, that have increased the streamWriteSizeInBytes beyond the 4 MB and storeBlobContentMD5 has been disabled.
* In some cases in the above mentioned upload path, fixed a bug where StorageExceptions were being thrown instead of IOExceptions.
2017.06.13 Version 5.3.0
* Fixed a bug where the transactional MD5 check would fail when downloading a range of blob or file and the recovery action is performed on a subsection of the range.
* Fixed leaking connections for table requests.
* Fixed a bug where retries happened immediately when experiencing a network exception uploading data or getting the response.
* Fixed a bug where the response stream was not being closed on nonretryable exceptions.
2017.05.23 Version 5.2.0
* Fixed Exists() calls on Shares and Directories to now populate metadata. This was already being done for Files.
* Changed blob constants to support up to 256 MB on put blob for block blobs. The default value for put blob threshold has also been updated to half of the maximum, or 128 MB currently.
* Fixed a bug that prevented setting content MD5 to true when creating a new file.
* Fixed a bug where access conditions, options, and operation context were not being passed when calling openWriteExisting() on a page blob or a file.
* Fixed a bug where an exception was being thrown on a range get of a blob or file when the options disableContentMD5Validation is set to false and useTransactionalContentMD5 is set to true and there is no overall MD5.
* Fixed a bug where retries were happening immediately if a socket exception was thrown.
* In CloudFileShareProperties, setShareQuota() no longer asserts in bounds. This check has been moved to create() and uploadProperties() in CloudFileShare.
2017.05.14 Version 5.1.1
* Reverted version 5.1.0 due to a regression which was caught after publishing. Version 5.2.0 will be released that contains the fixes from 5.1.0 without the regression.
2017.01.18 Version 5.0.0
* Prefix support for listing files and directories.
* Added support for setting public access when creating a blob container
* The public access setting on a blob container is now a container property returned from downloadProperties.
* Add Message now modifies the PopReceipt, Id, NextVisibleTime, InsertionTime, and ExpirationTime properties of its CloudQueueMessage parameter.
* Populate content MD5 for range gets on Blobs and Files.
* Added support in Page Blob for incremental copy.
* Added large BlockBlob upload support. Blocks can now support sizes up to 100 MB.
* Added a new, memory-optimized upload strategy for the upload* APIs. This algorithm only applies for blocks greater than 4MB and when storeBlobContentMD5 and Client-Side Encryption are disabled.
* getQualifiedUri() has been deprecated for Blobs. Please use getSnapshotQualifiedUri() instead. This new function will return the blob including the snapshot (if present) and no SAS token.
* getQualifiedStorageUri() has been deprecated for Blobs. Please use getSnapshotQualifiedStorageUri() instead. This new function will return the blob including the snapshot (if present) and no SAS token.
* Fixed a bug where copying from a blob that included a SAS token and a snapshot ommitted the SAS token.
2016.08.30 Version 4.4.0
* Fixed a bug in client-side encryption for tables that was preventing the Java client from decrypting entities encrypted with the .NET client, and vice versa.
2016.07.06 Version 4.3.0
* Added support for server-side encryption.
* Added support for getBlobReferenceFromServer methods on CloudBlobContainer to support retrieving a blob without knowing its type.
* Fixed a bug in the retry policies where 300 status codes were being retried when they shouldn't be.
2016.04.07 Version 4.2.0
* Added support for setting a library-wide proxy. The default proxy can be set on OperationContext.
* Added support in Page Blob for getting a list of differing page ranges between snapshot versions.
* Added support in Page Blob for getting ranges of pages.
2016.03.31 Version 4.1.0
* Added support for client side encryption for blobs, queues and tables.
* Since the encryption preview, added functionality where uploading encrypted blobs can be done with just PutBlob, not PutBlock + PutBlockList, if the blob is small enough.
* Since the encryption preview, fixed bugs in the Table Service where APIs such as 'CreateTable' were trying to encrypt their payload. Encryption is only supported on entities.
2015.10.05 Version 4.0.0
* Removed deprecated table AtomPub support.
* Removed deprecated constructors which take service clients in favor of constructors which take credentials.
* Added support for "Add" permissions on Blob SAS.
* Added support for "Create" permissions on Blob and File SAS.
* Added support for IP Restricted SAS and Protocol SAS.
* Added support for Account SAS to all services.
* Added support for Minute and Hour Metrics to FileServiceProperties and added support for File Metrics to CloudAnalyticsClient.
* Removed deprecated startCopyFromBlob() on CloudBlob. Use startCopy() instead.
* Removed deprecated Credentials and StorageKey classes. Please use the appropriate methods on StorageCredentialsAccountAndKey instead.
2015.09.16 Version 3.1.0
* Fixed a bug in table where a select on a non-existent field resulted in a null reference exception if the corresponding field in the TableEntity was not nullable.
* Fixed a bug in table where JsonParser was automatically closing the response stream before it was completely drained causing socket exhaustion.
* Fixed a bug in StorageCredentialsAccountAndKey.updateKey(String) which prevented valid keys from being set.
* Added CloudBlobContainer.listBlobs(final String, final boolean) method.
* Fixed a bug in blob where using AccessConditions on block blob uploads larger than 64MB done with the upload* methods or block blob uploads done openOutputStream with would fail if the blob did not already exist.
* Added support for setting a proxy per request. Proxy can be set on an OperationContext instance and will be used when that instance is passed to the request method.
2015.08.04 Version 3.0.0
* Added support for SAS to the Azure File service.
* Added support for Append Blob.
* Added support for Access Control Lists (ACL) to File Shares.
* Added support for getting and setting of CORS rules to File service.
* Added support for ShareStats to File Shares.
* Added support for copying an Azure File to another Azure File or a Block Blob asynchronously, and aborting Azure File copy operations asynchronously.
* Added support for copying a Blob to an Azure File asynchronously.
* Added support for setting a maximum quota property on a File Share.
* Removed deprecated AuthenticationScheme and its getter and setter. In the future only SharedKey will be used.
* Removed deprecated getter/setters for all request option properties on the service clients. Please use the default request options getter/setters instead.
* Removed getSubDirectoryReference() for blob directories and file directories. Use getDirectoryReference() instead.
* Removed getEntityClass() in TableQuery. Please use getClazzType() instead.
* Added client-side verification for lease duration and break periods.
* Deprecated the setters in table for timestamp as this property is only modifiable by the service.
* Deprecated startCopyFromBlob() on CloudBlob. Use startCopy() instead.
* Deprecated the Credentials and StorageKey classes. Please use the appropriate methods on StorageCredentialsAccountAndKey instead.
* Deprecated constructors which take service clients in favor of constructors which take credentials.
* Fixed a bug where the DateBackwardCompatibility flag was not applied if set on the CloudTableClient default request options.
* Changed library behavior to retry all exceptions thrown when parsing a response object.
* Changed behavior to stop removing query parameters passed in with the resource URI if that URI contains a SAS token. Some query parameters such as comp, restype, snapshot and api-version will still be removed.
* Added support for logging StringToSign to SharedKey and SAS.
* Added a connect timeout to prevent hangs when establishing the network connection.
* Made performance enhancements to the BlobOutputStream class.
2015.05.26 Version 2.2.0
* Fixed a bug where maximum execution time was ignored for file, queue, and table services.
* Changed the socket timeout to be set to the service side timeout plus 5 minutes when maximum execution time is not set.
* Changed the socket timeout to default to 5 minutes rather than infinite when neither service side timeout or maximum execution time are set.
* Fixed a bug where MD5 was calculated for commitBlockList even though UseTransactionalMD5 was set to false.
* Fixed a bug where selecting fields that did not exist returned an error rather than an EntityProperty with a null value.
* Fixed a bug where table entities with a single quote in their partition or row key could be inserted but not operated on in any other way.
2015.04.01 Version 2.1.0
* Fixed a bug for all listing API's where next() would sometimes throw an exception if hasNext() had not been called even if there were more elements to iterate on.
* Added sequence number to the blob properties. This is populated for page blobs.
* Creating a page blob sets its length property.
* Added support for page blob sequence numbers and sequence number access conditions.
* Fixed a bug in abort copy where the lease access condition was not sent to the service.
* Fixed an issue in startCopyFromBlob where if the URI of the source blob contained certain non-ASCII characters they would not be encoded appropriately. This would result in Authorization failures.
* Fixed a small performance issue in XML serialization.
* Fixed a bug in BlobOutputStream and FileOutputStream where flush added data to a request pool rather than immediately committing it to the Azure service.
* Refactored to remove the blob, queue, and file package dependency on table in the error handling code.
* Added additional client-side logging for REST requests, responses, and errors.
2014.12.20 Version 2.0.0
* Deprecated getSubDirectoryReference() for blob directories and file directories. Use getDirectoryReference() instead.
* Fixed a bug where maxResults was not verified to be positive for list operations.
* Fixed a bug where high precision Date values stored on Table Entites were forced to fit into milliseconds resulting in inaccuracies. Precision is limited to 1 millisecond by Java.util.Date. If greater precision is required, the String should be used directly.
* Added TableRequestOptions.dateBackwardCompatibility, which supports reading Date values on Table Entities written using versions of this library prior to 2.0.0. See http://go.microsoft.com/fwlink/?LinkId=523753 for more details.
* Deprecated AuthenticationScheme and its getter and setter. In the future only SharedKey will be used.
2014.11.03 Version 1.3.1
* Reverted timestamp bug fix from 1.3.0 for further consideration.
2014.11.03 Version 1.3.0
* Added support for EndpointSuffix which was previously not accepted in Account Strings.
* Fixed a bug where high precision timestamps were forced to fit into milliseconds resulting in inaccuracies. Precision is limited to 1 millisecond by Java.util.Date. If greater precision is required, the String should be used directly.
2014.08.01 Version 1.2.0
* Added the NameValidator class which contains helpers that check to see if resource names are valid.
* Fixed a bug where the RequestUrl of a LogRecord was not correctly HTML4 decoded. Added a dependency on Apache Commons Lang3.
* Made FileRange class and ListFilesAndDirectories method in the CloudFileDirectory class public.
2014.07.01 Version 1.1.0
* Changed the maven group id and artifact id. The new group id is com.microsoft.azure and the new artifact id is azure-storage.
* Added File Service support. The File Service and the associated SDK APIs are in preview.
* Added CloudAnalyticsClient and related methods to simplify Storage Analytics logging and metrics use case scenarios.
* Fixed a bug where an empty file would be left over during the downloadToFile error case.
* Updated StorageErrorCodeStrings class.
* Requests made using SAS credentials have the api-version query parameter appended to the URI.
* Fixed a null pointer exception that resulted when the first request was made with a blob created using the uri-only constructor (no sas creds appended).
2014.05.12 Version 1.0.0
* Updated service version to 2014-02-14
* Fixed null-reference when null listingDetails are passed to listBlobsSegmented(String, boolean, EnumSet<BlobListingDetails>, int, ResultContinuation, BlobRequestOptions, OperationContext) overload
* StorageUri may contain only a secondary endpoint
2014.05.06 Version 0.7.0
* Created a DefaultRequestOptions object for each service client
* Deprecated getter/setters for all request option properties on the service clients
* Removed server timeout defaults. These are still settable via the DefaultRequestOptions object on the client if desired
* Removed OperationContext getCurrentRequestObject/setCurrentReqestObject methods
* Removed SharedAccess{Blob|Queue|Table}Policy permissionsFromString(String) and permissionsToString(EnumSet) static methods in favor of setPermissionsFromString(String) and permissionsToString() instance methods
* Moved all execute and executeSegmented methods for TableOperations, TableBatchOperations, and TableQueries from CloudTableClient to CloudTable. The CloudTableClient methods are removed
* Deprecated getEntityClass() in TableQuery. Please use getClazzType() instead.
* Removed CloudPageBlob openOutputStream methods in favor of equivalent openWriteNew methods
* Removed reserved methods from StorageCredentials classes
* Made the isUsePathStyleUris() method in ServiceClient protected
* Removed CloudTableClient constructors taking only URI/StorageUri and throw if credentials passed into constructors are null as tables do not allow anonymous access
* Removed extraneous ServiceClient constructors
* Moved LeaseDuration, LeaseState, and LeaseStatus from the storage package to the blob package
* Made the parse(String) methods in LeaseDuration, LeaseState, and LeaseStatus internal
* RetryContext currentRetryCount and lastRequestResult fields must be accessed with their corresponding getters/setters
* BlockEntry searchMode field must be accessed through its getter/setter
* BlockEntry has an additional constructor taking only block id
* Removed BlobType enum parse() method
* Removed CopyStatus enum parse() method
* Removed CloudQueueMessage setExpirationTime(), setNextVisibleTime() and setPopReceipt() methods
* Removed TableConstants class
* Removed some classes/methods originally marked "Internal Use Only": Credentials.getSigningAccountName(), StorageCredentialsAccountAndKey.setSigningAccountName(), DeserializationHelper class, some BlobProperties setter methods
* Applied MaximumExecutionTime to downloadToByteArray and downloadRangeToByteArray methods
* Removed GeoReplicationStats.getGeoReplicationStatus(String)
* Moved SharedAccessPolicy, Permissions base classes (and serializers/deserializers) from core to storage
* Added container/queue/table constructors taking only URI or StorageUri to enable direct instantiation with a SAS token
* Fixed LeaseState so that it is parsed correctly. Previously, a leased blob returned LeaseState.UNSPECIFIED rather than LeaseState.LEASED
* Fixed the CloudTable(URI) method to correctly handle partition key and row key limits for passed in SAS tokens
* Fixed an issue that allowed whitespace metadata values to be set
* Changed package name from com.microsoft.windowsazure.storage to com.microsoft.azure.storage
* Deprecated AtomPub format for tables
* Added support for secondary location access in Azure Storage Emulator
* Removed unnecessary exceptions specified in the throws clause of method declarations
* Fixed issue with path-style uris and sas credentials
* Added CloudAnalyticsClient class to simplify storage account analytics logging and metrics scenarios.
2014.02.19 Version 0.6.0
* Removed OperationContext getCurrentOperationByteCount/setCurrentOperationByteCount and getIntermediateMD5/setIntermediateMD5 methods
* Deprecated OperationContext getCurrentRequestObject/setCurrentReqestObject methods
* Deprecated SharedAccess{Blob|Queue|Table}Policy permissionsFromString(String) and permissionsToString(EnumSet) static methods in favor of setPermissionsFromString(String) and permissionsToString() instance methods
* Moved all execute and executeSegmented methods for TableOperations, TableBatchOperations, and TableQueries from CloudTableClient to CloudTable. The CloudTableClient methods are now marked deprecated.
* Deprecated CloudPageBlob openOutputStream methods in favor of equivalent openWriteNew methods
* container.get{BlockBlob|PageBlob|Directory}Reference, directory.get{BlockBlob, PageBlob, SubDirectory}Reference always treat the string parameter as a relative address
* {CloudBlobContainer|CloudQueue|CloudTable}(String, CloudBlobClient) always treat the string parameter as a relative address
* If the parent of a blob is the container, Cloud{BlockBlob|PageBlob|BlobDirectory}.getParent() returns a valid CloudBlobDirectory with an empty prefix. Similarly, container.getDirectoryReference("") gets a valid CloudBlobDirectory representing the container.
* Blob downloads resume on every retry
* TableOperation(TableEntity, TableOperationType) sets echoContent to false by default
* Fixed translateException to handle 503 along with other special HTTP codes
* Fixed an issue so that the ContentMD5 is only calculated when the length is unknown or is within the single blob upload threshold for block blob uploads.
* Fixed snapshot creates to inherit base blob's metadata/properties unless metadata/properties are specified
* Any exception thrown while parsing an error response is ignored and the original exception is returned
* Added additional constructors to TableServiceEntity and DynamicTableEntity taking partition key, row key, etc
* Added support for Null Retry Policies
* Added a resize method for page blobs
* Added openWriteExisting() and openWriteExisting(AccessCondition, BlobRequestOptions, OperationContext) methods to PageBlob allowing output streams to be opened on existing page blobs.
* Added StorageEventMultiCasters to OperationContext for when a retry occurs ("Retrying") and when the request is complete ("RequestComplete").
* Added static StorageEventMultiCasters for SendingRequest, ResponseReceived, RequestComplete and Retrying to Operation Context
* Added maximum execution time, settable for all requests via Cloud{Blob|Queue|Table}Client.setMaximumExecutionTime(Integer) or for an individual request via {Blob|Queue|Table}RequestOptions.setMaximumExecutionTime(Integer)
2013.12.10 Version 0.5.0
* Fixed content disposition parsing in BlobDeserializationHelper and added it to BlobProperties
* Fixed etag for snapshots, which was previously not set correctly in CloudBlob
* Fixed etag parsing so that quotes around etag are removed
* Added Copy to BlobListingDetails enum and added logic and fixed xml parsers to enable that option when listing blobs
* Fixed blob/container BreakLease so that the breakPeriodInSeconds is honored
* Sending request event on the opContext is now fired before the connection is set up
* Added Json support for tables
* JsonMinimalMetadata is now the default payload format (rather than AtomPub). Payload format can be specified for all table requests by using CloudTableClient.setTablePayloadFormat or for an individual table request by using TableRequestOptions.setTablePayloadFormat
* Added read from secondary support for blobs/queue/tables
* Fixed Canonicalizer to ignore empty header values while signing
* Added additional query parameters for Blob SAS introduced in 2013-08-15
* Enabled echo content (on or off) option for table inserts
* Enabled setting user headers on the operation context
* Moved LeaseAction enum from core package to blob package (internal use only)
* Added support for optional Service Properties
* Blob downloadToByteArray and downloadRangeToByteArray return the number of bytes copied to the byte array
2013.07.03 Version 0.4.4
* Windows Azure China environment support
* Service Bus metadata support updated to the latest version
* Rich Odata entity query support for Service Bus Queue/Topic/Subscription
* Added support for Service Bus message forwarding
* Added support for Service Bus message count details
* Made sure the response stream is drained to prevent socket exhaustion in Storage
* Added support for all flavors of SharedKey and SharedKeyLite message signing through AuthenticationScheme property on client classes in Storage
2013.05.27 Version 0.4.3
* Added support for updating existing Queue/Topic/Subscription for Service Bus
* Added support for message lock renewal to support long running message processing for Service Bus
* Added new properties to Queue/Topic/Subscription/Rule for Service Bus
* Added support for rebinding content key for Media Services
2013.04.16 Version 0.4.2
* Fixed a bunch of GB18030 encoding issues
* Fixed a service bus issue when the locale is not UTC
2013.03.12 Version 0.4.1
* Added "Azure-SDK-For-Java/<version>" To User-Agent HTTP header
* Added connection string support for Service Bus
* Added new methods to break lease for Storage Blob which doesn't require a lease id and returns the result as an object. Deprecated the old breakLease() methods.
* Added a new method to get the historical events for Media Services
* Fixed Storage Table encoding issue for special characters
* BlobOutputStream now commits block list using LATEST instead of UNCOMMITTED
* Added RequestResult to StorageEvents
* Fixed issue when accessing OperationContext RequestResults
* Fixed the return value of BlobInputStream.read
* Fixed CloudPageBlob.downloadPageRanges to retrieve the blob length
* Fixed MD5 validation in BlobInputStream
* Return ETag in TableResult not only for Insert but also for other operations
2013.01.18 Version 0.4.0
* Added support for Windows Azure Media Services
* Updated dependencies to non-beta stable versions
* Added a Sending Request Event to OperationContext in Storage Client code
* Fixed a bug in the Storage client in blob download resume for blobs greater than 2GB
2012.10.29 Version 0.3.3
* In the blob client, fixed a bug which allows users to call write APIs on a blob snapshot reference
* Updated the URL parse method in storage client libraries, to allow users to pass a URL ending with "/"
* Updated the parsing response header code in blob client APIs
* Updated the storage client library user agent version from 0.1.2 to 0.1.3
* Added more test cases in storage client tests
2012.10.16 Version 0.3.2
* Implemented a more graceful timeout Exception
* Implemented a better Exception for an empty header returned by the Azure Storage Service
* Added Fluent setters for Blob Models
2012.09.11 Version 0.3.1
* Added Javadocs to 1.7 Storage Support from 0.3.0 release
* Fixed bug where getqueue for an invalid queue returns 200 and the exception is not wrapped in a ServiceException
* Fixed the error when deleting a blob snapshot in the Service Layer
* Changed the PageBlob length parameter from an int to a long
* Return an Etag for create and copy Blob in Service Layer
* Updated the BlobRestProxy.copyBlob to correctly honor source access conditions
* Updated the BlobRestProxy.getBlob to correctly honor setComputeRangeMD5 option
* Added international support for ServiceBus URIs
* Added encoding for special characters when serializing entity to XML in Table Service Layer
2012.06.02 Version 0.3.0
* Added 1.7 Storage Support
* Added Javadocs for com.microsoft.windowsazure.services.table
2012.05.02 Version 0.2.2
* Added Javadoc comments to Azure Blob Service Layer
* Fixed a URL encoding issue in Table Client Layer
* Made CloudTableClient use Iterator instead of Iterable
2012.04.11 Version 0.2.1
* Added Service Layer support for Azure Table
* Added Javadoc comments to Azure Queue Service Layer
2012.02.28 Version 0.2.0
* Added Support for Azure Table in com.microsoft.windowsazure.services.table
* Added Client Tests for Table
* Added a dependency on apache commons-lang3 3.1
* ResultsSegment exposes an ArrayList instead of an Iterable
* UserAgent updated to v1.1.2
2012.01.31 Version 0.1.3
* Updated User Agent to v0.1.1
* Updated License Headers
* Blob Client Mark update
* Retry Logic updated in Blob and Queue Client to not retry
* Error Response parsing updated for Table compatibility
* MD5 is delay calculated on copy streams
* Date parsing support for various number of fractional decimals
* StorageErrorResponse updated to support lower case xml for tables
2011.12.22 Version 0.1.2
* Fixed CloudBlob.download to lock to ETag during a resume
* Ensured that Client Side Exceptions are not resumed
2011.12.14 Version 0.1.1
* Commenting/documentation changes
2011.12.09 Version 0.1.0
* Initial Release