12.0.0 (2021-06-11)
Bug fixes
- Fixed issue where clients builders would not throw when calling
buildClient()
orbuildAsyncClient()
if noendpoint
had been set. - Fixed issue where
TableClient
's andTableClientAsync
'ssubmitTransaction()
andsubmitTransactionWithResponse()
could not be called from inside a Reactor thread (e.g. calling it inside a chain of reactive operations, such asmyOtherOperation.then(result -> client.submitTransaction(transactionActions)
). - Fixed issue that would make an exception be raised when calling
submitTransaction()
if Java's SecurityManager was enabled and noReflectPermission
had been granted.
New Features
- Introduced the following classes:
TableAccessPolicies
TableTransactionAction
TableTransactionActionType
TableTransactionFailedException
TableTransactionResult
- Added support for generating SAS tokens at the Account and Table Service level in all clients. Introduced the following related classes:
TableAccountSasPermission
TableAccountSasResourceType
TableAccountSasService
TableAccountSasSignatureValues
TableSasIpRange
TableSasPermission
TableSasSignatureValues
- Added the following methods to
TableClient
,TableAsyncClient
:listAccessPolicies()
setAccessPolicies()
setAccessPoliciesWithResponse()
generateSasToken()
- Added the following methods to
TableServiceClient
,TableServiceAsyncClient
:getProperties()
getPropertiesWithResponse()
setProperties()
setPropertiesWithResponse()
getStatistics()
getStatisticsWithResponse()
generateAccountSasToken()
Breaking Changes
- Removed the
TableBatch
andTableAsyncBatch
types, as well as the methodsTableAsyncClient.createBatch()
andTableClient.createBatch()
. In their place, batch operations can now be submitted via the following methods:TableAsyncClient.submitTransaction(List<TableTransactionAction> transactionalBatch)
TableAsyncClient.submitTransactionWithResponse(List<TableTransactionAction> transactionalBatch)
TableClient.submitTransaction(List<TableTransactionAction> transactionalBatch)
TableClient.submitTransactionWithResponse(List<TableTransactionAction> transactionalBatch, Duration timeout, Context context)
- Renamed
BatchOperationResponse
toTableTransactionActionResponse
deleteEntity()
variants inTableClient
andTableAsyncClient
now accept anifUnchanged
flag instead of aneTag
parameter for conditional operations. When said flag is set totrue
, the ETag of a givenTableEntity
will be matched with the ETag of the entity in the Table service.- Replaced
deleteEntityWithResponse(String partitionKey, String rowKey, String eTag)
withdeleteEntityWithResponse(TableEntity entity, boolean ifUnchanged)
inTableAsyncClient
. - Replaced
deleteEntityWithResponse(String partitionKey, String rowKey, String eTag, Duration timeout, Context context)
withdeleteEntityWithResponse(TableEntity entity, boolean ifUnchanged, Duration timeout, Context context)
inTableClient
. - Removed remaining public APIs supporting the use of
TableEntity
subclasses fromTableAsyncClient
. - Removed the following method overloads from
TableClient
andTableAsyncClient
:upsertEntity(TableEntity entity, TableEntityUpdateMode updateMode)
updateEntity(TableEntity entity, TableEntityUpdateMode updateMode, boolean ifUnchanged)
getEntity(String partitionKey, String rowKey, List<String> select)
- Client builders now also throw an
IllegalStateException
when callingbuildClient()
andbuildAsyncClient()
if multiple forms of authentication are provided, with the exception ofsasToken
+connectionString
; or ifendpoint
and/orsasToken
are set alongside aconnectionString
and the endpoint and/or SAS token in the latter are different than the former, respectively. - The following methods and their
WithResponse
variants inTableClient
andTableAsyncClient
now throw anIllegalArgumentException
instead of anIllegalStateException
when an emptyTableEntity
is provided:createEntity()
upsertEntity()
updateEntity()
deleteEntity()