Class TableAsyncClient
Overview
The client encapsulates the URL for the table within the Tables service endpoint, the name of the table, and the credentials for accessing the storage or CosmosDB table API account. It provides methods to create and delete the table itself, as well as methods to create, upsert, update, delete, list, and get entities within the table. These methods invoke REST API operations to make the requests and obtain the results that are returned.
Getting Started
Authenticating and building instances of this client are handled by TableClientBuilder.
This sample shows how to authenticate and build a TableClient instance using the TableClientBuilder and
a connection string.
TableAsyncClient tableAsyncClient = new TableClientBuilder()
.connectionString("connectionstring")
.tableName("myTable")
.buildAsyncClient();
For more information on building and authenticating, see the TableClientBuilder documentation.
The following code samples provide examples of common operations preformed with this client.
Create a TableEntity
The createEntity method can be used to create a table entity within a table in your Azure Storage or Azure Cosmos account.
The sample below creates a TableEntity with a partition key of "partitionKey" and a row key of "rowKey".
TableEntity tableEntity = new TableEntity("partitionKey", "rowKey")
.addProperty("Property", "Value");
tableAsyncClient.createEntity(tableEntity)
.contextWrite(Context.of("key1", "value1", "key2", "value2"))
.subscribe(unused ->
System.out.printf("Table entity with partition key '%s' and row key '%s' was created.", "partitionKey",
"rowKey"));
Note: for a synchronous sample, refer to the synchronous client
Retrieve a TableEntity
The getEntity method can be used to retrieve a table entity within a table in your Azure Storage or Azure Cosmos account.
The sample below retrieves a TableEntity with a partition key of "partitionKey" and a row key of "rowKey".
tableAsyncClient.getEntity("partitionKey", "rowKey")
.contextWrite(Context.of("key1", "value1", "key2", "value2"))
.subscribe(tableEntity ->
System.out.printf("Retrieved entity with partition key '%s' and row key '%s'.",
tableEntity.getPartitionKey(), tableEntity.getRowKey()));
Note: for a synchronous sample, refer to the synchronous client
Update a TableEntity
The updateEntity method can be used to update a table entity within a table in your Azure Storage or Azure Cosmos account.
The sample below updates a TableEntity with a partition key of "partitionKey" and a row key of "rowKey", adding a new property with a key of "Property" and a value of "Value".
TableEntity myTableEntity = new TableEntity("partitionKey", "rowKey")
.addProperty("Property", "Value");
tableAsyncClient.updateEntity(myTableEntity, TableEntityUpdateMode.REPLACE)
.contextWrite(Context.of("key1", "value1", "key2", "value2"))
.subscribe(unused ->
System.out.printf("Table entity with partition key '%s' and row key '%s' was updated/created.",
"partitionKey", "rowKey"));
Note: for a synchronous sample, refer to the synchronous client
Listing TableEntities
The listEntities method can be used to list the entities within a table in your Azure Storage or Azure Cosmos account.
The sample below lists all TableEntities within the table without filtering out any entities.
tableAsyncClient.listEntities()
.subscribe(tableEntity ->
System.out.printf("Retrieved entity with partition key '%s' and row key '%s'.%n",
tableEntity.getPartitionKey(), tableEntity.getRowKey()));
List TableEntities with filtering and selecting
The sample below lists TableEntities within the table, filtering out any entities that do not have a partition key of "partitionKey" and a row key of "rowKey"
and only selects the "name", "lastname", and "age" properties.
List<String> propertiesToSelect = new ArrayList<>();
propertiesToSelect.add("name");
propertiesToSelect.add("lastname");
propertiesToSelect.add("age");
ListEntitiesOptions listEntitiesOptions = new ListEntitiesOptions()
.setTop(15)
.setFilter("PartitionKey eq 'MyPartitionKey' and RowKey eq 'MyRowKey'")
.setSelect(propertiesToSelect);
tableAsyncClient.listEntities(listEntitiesOptions)
.subscribe(tableEntity -> {
System.out.printf("Retrieved entity with partition key '%s', row key '%s' and properties:%n",
tableEntity.getPartitionKey(), tableEntity.getRowKey());
tableEntity.getProperties().forEach((key, value) ->
System.out.printf("Name: '%s'. Value: '%s'.%n", key, value));
});
Note: for a synchronous sample, refer to the synchronous client
Delete a TableEntity
The deleteEntity method can be used to delete a table entity within a table in your Azure Storage or Azure Cosmos account.
The sample below deletes a TableEntity with a partition key of "partitionKey" and a row key of "rowKey".
tableAsyncClient.deleteEntity("partitionKey", "rowKey")
.contextWrite(Context.of("key1", "value1", "key2", "value2"))
.subscribe(unused ->
System.out.printf("Table entity with partition key '%s' and row key '%s' was deleted.", "partitionKey",
"rowKey"));
Note: for a synchronous sample, refer to the synchronous client
Submit a transactional batch
The submitTransaction method can be used to submit a transactional batch of actions to perform on the table in your Azure Storage or Azure Cosmos account.
The sample below shows how to prepare and submit a transactional batch with multiple actions.
List<TableTransactionAction> transactionActions = new ArrayList<>();
String partitionKey = "markers";
String firstEntityRowKey = "m001";
String secondEntityRowKey = "m002";
TableEntity firstEntity = new TableEntity(partitionKey, firstEntityRowKey)
.addProperty("Type", "Dry")
.addProperty("Color", "Red");
transactionActions.add(new TableTransactionAction(TableTransactionActionType.CREATE, firstEntity));
System.out.printf("Added create action for entity with partition key '%s', and row key '%s'.%n", partitionKey,
firstEntityRowKey);
TableEntity secondEntity = new TableEntity(partitionKey, secondEntityRowKey)
.addProperty("Type", "Wet")
.addProperty("Color", "Blue");
transactionActions.add(new TableTransactionAction(TableTransactionActionType.CREATE, secondEntity));
System.out.printf("Added create action for entity with partition key '%s', and row key '%s'.%n", partitionKey,
secondEntityRowKey);
tableAsyncClient.submitTransaction(transactionActions)
.contextWrite(Context.of("key1", "value1", "key2", "value2"))
.subscribe(tableTransactionResult -> {
System.out.print("Submitted transaction. The ordered response status codes for the actions are:");
tableTransactionResult.getTransactionActionResponses().forEach(tableTransactionActionResponse ->
System.out.printf("%n%d", tableTransactionActionResponse.getStatusCode()));
});
Note: for a synchronous sample, refer to the synchronous client- See Also:
-
Method Summary
Modifier and TypeMethodDescriptioncreateEntity(TableEntity entity) Inserts anentityinto the table.createEntityWithResponse(TableEntity entity) Inserts anentityinto the table.Creates the table within the Tables service.Creates the table within the Tables service.deleteEntity(TableEntity entity) Deletes anentityfrom the table.deleteEntity(String partitionKey, String rowKey) Deletes anentityfrom the table.deleteEntityWithResponse(TableEntity entity, boolean ifUnchanged) Deletes anentityfrom the table.Deletes the table within the Tables service.Deletes the table within the Tables service.generateSas(TableSasSignatureValues tableSasSignatureValues) Generates a service SAS for the table using the specifiedTableSasSignatureValues.Retrieves details about any storedaccess policiesspecified on the table that may be used with Shared Access Signatures.Mono<com.azure.core.http.rest.Response<TableAccessPolicies>> Retrieves details about any storedaccess policiesspecified on the table that may be used with Shared Access Signatures.Gets the name of the account containing the table.Gets a singleentityfrom the table.Mono<com.azure.core.http.rest.Response<TableEntity>> getEntityWithResponse(String partitionKey, String rowKey, List<String> select) Gets a singleentityfrom the table.Gets the REST API version used by this client.Gets the endpoint for this table.Gets the name of the table.com.azure.core.http.rest.PagedFlux<TableEntity> Lists allentitieswithin the table.com.azure.core.http.rest.PagedFlux<TableEntity> listEntities(ListEntitiesOptions options) Listsentitiesusing the parameters in the provided options.setAccessPolicies(List<TableSignedIdentifier> tableSignedIdentifiers) Sets storedaccess policiesfor the table that may be used with Shared Access Signatures.setAccessPoliciesWithResponse(List<TableSignedIdentifier> tableSignedIdentifiers) Sets storedaccess policiesfor the table that may be used with Shared Access Signatures.submitTransaction(List<TableTransactionAction> transactionActions) Executes allactionswithin the list inside a transaction.Mono<com.azure.core.http.rest.Response<TableTransactionResult>> submitTransactionWithResponse(List<TableTransactionAction> transactionActions) Executes allactionswithin the list inside a transaction.updateEntity(TableEntity entity) updateEntity(TableEntity entity, TableEntityUpdateMode updateMode) Updates an existingentityusing the specifiedupdate mode.updateEntityWithResponse(TableEntity entity, TableEntityUpdateMode updateMode, boolean ifUnchanged) Updates an existingentityusing the specifiedupdate mode.upsertEntity(TableEntity entity) upsertEntityWithResponse(TableEntity entity, TableEntityUpdateMode updateMode) Inserts anentityinto the table if it does not exist, or updates the existingentityusing the specifiedupdate modeotherwise.
-
Method Details
-
getTableName
Gets the name of the table.- Returns:
- The name of the table.
-
getAccountName
Gets the name of the account containing the table.- Returns:
- The name of the account containing the table.
-
getTableEndpoint
Gets the endpoint for this table.- Returns:
- The endpoint for this table.
-
getServiceVersion
Gets the REST API version used by this client.- Returns:
- The REST API version used by this client.
-
generateSas
Generates a service SAS for the table using the specifiedTableSasSignatureValues.Note: The client must be authenticated via
AzureNamedKeyCredential.See
TableSasSignatureValuesfor more information on how to construct a service SAS.- Parameters:
tableSasSignatureValues-TableSasSignatureValues.- Returns:
- A
Stringrepresenting the SAS query parameters. - Throws:
IllegalStateException- If thisTableAsyncClientis not authenticated with anAzureNamedKeyCredential.
-
createTable
Creates the table within the Tables service.Code Samples
Creates a table. Prints out the details of the created table.
tableAsyncClient.createTable() .contextWrite(Context.of("key1", "value1", "key2", "value2")) .subscribe(tableItem -> System.out.printf("Table with name '%s' was created.", tableItem.getName()));- Returns:
- A
Monocontaining aTableItemthat represents the table. - Throws:
TableServiceException- If a table with the same name already exists within the service.
-
createTableWithResponse
Creates the table within the Tables service.Code Samples
Creates a table. Prints out the details of the
HTTP responseand the created table.tableAsyncClient.createTableWithResponse() .contextWrite(Context.of("key1", "value1", "key2", "value2")) .subscribe(response -> System.out.printf("Response successful with status code: %d. Table with name '%s' was created.", response.getStatusCode(), response.getValue().getName()));- Returns:
- A
Monocontaining theHTTP responsethat in turn contains aTableItemthat represents the table. - Throws:
TableServiceException- If a table with the same name already exists within the service.
-
deleteTable
Deletes the table within the Tables service.Code Samples
Deletes a table.
tableAsyncClient.deleteTable() .contextWrite(Context.of("key1", "value1", "key2", "value2")) .subscribe(unused -> System.out.print("Table was deleted."));- Returns:
- An empty
Mono. - Throws:
TableServiceException- If the request is rejected by the service.
-
deleteTableWithResponse
Deletes the table within the Tables service.Code Samples
Deletes a table. Prints out the details of the
HTTP response.tableAsyncClient.deleteTableWithResponse() .contextWrite(Context.of("key1", "value1", "key2", "value2")) .subscribe(response -> System.out.printf("Table was deleted successfully with status code: %d.", response.getStatusCode()));- Returns:
- A
Monocontaining theHTTP response. - Throws:
TableServiceException- If the request is rejected by the service.
-
createEntity
Inserts anentityinto the table.Code Samples
Inserts an
entityinto the table. Prints out the details of the createdentity.TableEntity tableEntity = new TableEntity("partitionKey", "rowKey") .addProperty("Property", "Value"); tableAsyncClient.createEntity(tableEntity) .contextWrite(Context.of("key1", "value1", "key2", "value2")) .subscribe(unused -> System.out.printf("Table entity with partition key '%s' and row key '%s' was created.", "partitionKey", "rowKey"));- Parameters:
entity- Theentityto insert.- Returns:
- An empty
Mono. - Throws:
TableServiceException- If anentitywith the same partition key and row key already exists within the table.IllegalArgumentException- If the providedentityisnull.
-
createEntityWithResponse
Inserts anentityinto the table.Code Samples
Inserts an
entityinto the table. Prints out the details of theHTTP responseand the createdentity.TableEntity myTableEntity = new TableEntity("partitionKey", "rowKey") .addProperty("Property", "Value"); tableAsyncClient.createEntityWithResponse(myTableEntity) .contextWrite(Context.of("key1", "value1", "key2", "value2")) .subscribe(response -> System.out.printf("Response successful with status code: %d. Table entity with partition key '%s' and" + " row key '%s' was created.", response.getStatusCode(), "partitionKey", "rowKey"));- Parameters:
entity- Theentityto insert.- Returns:
- A
Monocontaining theHTTP response. - Throws:
TableServiceException- If anentitywith the same partition key and row key already exists within the table.IllegalArgumentException- If the providedentityisnull.
-
upsertEntity
Inserts anentityinto the table if it does not exist, or merges theentitywith the existingentityotherwise.Code Samples
Upserts an
entityinto the table. Prints out the details of the upsertedentity.TableEntity tableEntity = new TableEntity("partitionKey", "rowKey") .addProperty("Property", "Value"); tableAsyncClient.upsertEntity(tableEntity) .contextWrite(Context.of("key1", "value1", "key2", "value2")) .subscribe(unused -> System.out.printf("Table entity with partition key '%s' and row key '%s' was updated/created.", "partitionKey", "rowKey"));- Parameters:
entity- Theentityto upsert.- Returns:
- An empty
Mono. - Throws:
IllegalArgumentException- If the providedentityisnull.TableServiceException- If the request is rejected by the service.
-
upsertEntityWithResponse
public Mono<com.azure.core.http.rest.Response<Void>> upsertEntityWithResponse(TableEntity entity, TableEntityUpdateMode updateMode) Inserts anentityinto the table if it does not exist, or updates the existingentityusing the specifiedupdate modeotherwise. The defaultupdate modeisMERGE.When the
update modeisMERGE, the providedentity's properties will be merged into the existingentity. When theupdate modeisREPLACE, the providedentity's properties will completely replace those in the existingentity.Code Samples
Upserts an
entityinto the table with the specifiedupdate modeif saidentityalready exists. Prints out the details of theHTTP responseand the upsertedentity.TableEntity myTableEntity = new TableEntity("partitionKey", "rowKey") .addProperty("Property", "Value"); tableAsyncClient.upsertEntityWithResponse(myTableEntity, TableEntityUpdateMode.REPLACE) .contextWrite(Context.of("key1", "value1", "key2", "value2")) .subscribe(response -> System.out.printf("Response successful with status code: %d. Table entity with partition key '%s' and" + " row key '%s' was updated/created.", response.getStatusCode(), "partitionKey", "rowKey"));- Parameters:
entity- Theentityto upsert.updateMode- The type of update to perform if theentityalready exits.- Returns:
- A
Monocontaining theHTTP response. - Throws:
IllegalArgumentException- If the providedentityisnull.TableServiceException- If the request is rejected by the service.
-
updateEntity
Updates an existingentityby merging the providedentitywith the existingentity.Code Samples
Updates a
entityon the table. Prints out the details of the updatedentity.TableEntity tableEntity = new TableEntity("partitionKey", "rowKey") .addProperty("Property", "Value"); tableAsyncClient.updateEntity(tableEntity) .contextWrite(Context.of("key1", "value1", "key2", "value2")) .subscribe(unused -> System.out.printf("Table entity with partition key '%s' and row key '%s' was updated/created.", "partitionKey", "rowKey"));- Parameters:
entity- Theentityto update.- Returns:
- An empty
Mono. - Throws:
IllegalArgumentException- If the providedentityisnull.TableServiceException- If noentitywith the same partition key and row key exists within the table.
-
updateEntity
Updates an existingentityusing the specifiedupdate mode. The defaultupdate modeisMERGE.When the
update modeisMERGE, the providedentity's properties will be merged into the existingentity. When theupdate modeisREPLACE, the providedentity's properties will completely replace those in the existingentity.Code Samples
Updates a
entityon the table with the specifiedupdate mode. Prints out the details of the updatedentity.TableEntity myTableEntity = new TableEntity("partitionKey", "rowKey") .addProperty("Property", "Value"); tableAsyncClient.updateEntity(myTableEntity, TableEntityUpdateMode.REPLACE) .contextWrite(Context.of("key1", "value1", "key2", "value2")) .subscribe(unused -> System.out.printf("Table entity with partition key '%s' and row key '%s' was updated/created.", "partitionKey", "rowKey"));- Parameters:
entity- Theentityto update.updateMode- The type of update to perform.- Returns:
- An empty
Mono. - Throws:
IllegalArgumentException- If the providedentityisnull.TableServiceException- If noentitywith the same partition key and row key exists within the table.
-
updateEntityWithResponse
public Mono<com.azure.core.http.rest.Response<Void>> updateEntityWithResponse(TableEntity entity, TableEntityUpdateMode updateMode, boolean ifUnchanged) Updates an existingentityusing the specifiedupdate mode. The defaultupdate modeisMERGE.When the
update modeisMERGE, the providedentity's properties will be merged into the existingentity. When theupdate modeisREPLACE, the providedentity's properties will completely replace those in the existingentity.Code Samples
Updates a
entityon the table with the specifiedupdate modeif theETagson bothentitiesmatch. Prints out the details of theHTTP responseupdatedentity.TableEntity someTableEntity = new TableEntity("partitionKey", "rowKey") .addProperty("Property", "Value"); tableAsyncClient.updateEntityWithResponse(someTableEntity, TableEntityUpdateMode.REPLACE, true) .contextWrite(Context.of("key1", "value1", "key2", "value2")) .subscribe(response -> System.out.printf("Response successful with status code: %d. Table entity with partition key '%s' and" + " row key '%s' was updated.", response.getStatusCode(), "partitionKey", "rowKey"));- Parameters:
entity- Theentityto update.updateMode- The type of update to perform.ifUnchanged- When true, the ETag of the providedentitymust match the ETag of theentityin the Table service. If the values do not match, the update will not occur and an exception will be thrown.- Returns:
- A
Monocontaining theHTTP response. - Throws:
IllegalArgumentException- If the providedentityisnull.TableServiceException- If noentitywith the same partition key and row key exists within the table, or ififUnchangedistrueand the existingentity's ETag does not match that of the providedentity.
-
deleteEntity
Deletes anentityfrom the table.Code Samples
Deletes an
entityon the table. Prints out the entity'spartitionKeyandrowKey.tableAsyncClient.deleteEntity("partitionKey", "rowKey") .contextWrite(Context.of("key1", "value1", "key2", "value2")) .subscribe(unused -> System.out.printf("Table entity with partition key '%s' and row key '%s' was deleted.", "partitionKey", "rowKey"));- Parameters:
partitionKey- The partition key of theentity.rowKey- The row key of theentity.- Returns:
- An empty
Mono. - Throws:
IllegalArgumentException- If the providedpartitionKeyorrowKeyarenullor empty.TableServiceException- If the request is rejected by the service.
-
deleteEntity
Deletes anentityfrom the table.Code Samples
Deletes a
entityon the table. Prints out the details of the deletedentity.TableEntity myTableEntity = new TableEntity("partitionKey", "rowKey") .addProperty("Property", "Value"); tableAsyncClient.deleteEntity(myTableEntity) .contextWrite(Context.of("key1", "value1", "key2", "value2")) .subscribe(unused -> System.out.printf("Table entity with partition key '%s' and row key '%s' was created.", "partitionKey", "rowKey"));- Parameters:
entity- Theentityto delete.- Returns:
- An empty
Mono. - Throws:
TableServiceException- If the request is rejected by the service.
-
deleteEntityWithResponse
public Mono<com.azure.core.http.rest.Response<Void>> deleteEntityWithResponse(TableEntity entity, boolean ifUnchanged) Deletes anentityfrom the table.Code Samples
Deletes a
entityon the table. Prints out the details of theHTTP responseand the deletedentity.TableEntity someTableEntity = new TableEntity("partitionKey", "rowKey") .addProperty("Property", "Value"); tableAsyncClient.deleteEntityWithResponse(someTableEntity, true) .contextWrite(Context.of("key1", "value1", "key2", "value2")) .subscribe(response -> System.out.printf("Response successful with status code: %d. Table entity with partition key '%s' and" + " row key '%s' was deleted.", response.getStatusCode(), "partitionKey", "rowKey"));- Parameters:
entity- The tableentityto delete.ifUnchanged- When true, the ETag of the providedentitymust match the ETag of theentityin the Table service. If the values do not match, the update will not occur and an exception will be thrown.- Returns:
- A
Monocontaining theHTTP response. - Throws:
TableServiceException- If the request is rejected by the service.IllegalArgumentException- If 'partitionKey' or 'rowKey' is null.
-
listEntities
Lists allentitieswithin the table.Code Samples
Lists all
entitieson the table. Prints out the details of the retrievedentities.tableAsyncClient.listEntities() .subscribe(tableEntity -> System.out.printf("Retrieved entity with partition key '%s' and row key '%s'.%n", tableEntity.getPartitionKey(), tableEntity.getRowKey()));- Returns:
- A
PagedFluxcontaining allentitieswithin the table. - Throws:
TableServiceException- If the request is rejected by the service.
-
listEntities
Listsentitiesusing the parameters in the provided options.If the
filterparameter in the options is set, onlyentitiesmatching the filter will be returned. If theselectparameter is set, only the properties included in the select parameter will be returned for eachentity. If thetopparameter is set, the maximum number of returnedentitiesper page will be limited to that value.Code Samples
Lists all
entitieson the table. Prints out the details of theHTTP responseand all the retrievedentities.List<String> propertiesToSelect = new ArrayList<>(); propertiesToSelect.add("name"); propertiesToSelect.add("lastname"); propertiesToSelect.add("age"); ListEntitiesOptions listEntitiesOptions = new ListEntitiesOptions() .setTop(15) .setFilter("PartitionKey eq 'MyPartitionKey' and RowKey eq 'MyRowKey'") .setSelect(propertiesToSelect); tableAsyncClient.listEntities(listEntitiesOptions) .subscribe(tableEntity -> { System.out.printf("Retrieved entity with partition key '%s', row key '%s' and properties:%n", tableEntity.getPartitionKey(), tableEntity.getRowKey()); tableEntity.getProperties().forEach((key, value) -> System.out.printf("Name: '%s'. Value: '%s'.%n", key, value)); });- Parameters:
options- Thefilter,select, andtopOData query options to apply to this operation.- Returns:
- A
PagedFluxcontaining matchingentitieswithin the table. - Throws:
IllegalArgumentException- If one or more of the OData query options inoptionsis malformed.TableServiceException- If the request is rejected by the service.
-
getEntity
Gets a singleentityfrom the table.Code Samples
Gets an
entityon the table. Prints out the details of the retrievedentity.tableAsyncClient.getEntity("partitionKey", "rowKey") .contextWrite(Context.of("key1", "value1", "key2", "value2")) .subscribe(tableEntity -> System.out.printf("Retrieved entity with partition key '%s' and row key '%s'.", tableEntity.getPartitionKey(), tableEntity.getRowKey()));- Parameters:
partitionKey- The partition key of theentity.rowKey- The partition key of theentity.- Returns:
- A
Monocontaining theentity. - Throws:
IllegalArgumentException- If the providedpartitionKeyorrowKeyarenullor empty.TableServiceException- If noentitywith the providedpartitionKeyandrowKeyexists within the table.
-
getEntityWithResponse
public Mono<com.azure.core.http.rest.Response<TableEntity>> getEntityWithResponse(String partitionKey, String rowKey, List<String> select) Gets a singleentityfrom the table.Code Samples
Gets an
entityon the table. Prints out the details of theHTTP responseretrievedentity.List<String> propertiesToSelect = new ArrayList<>(); propertiesToSelect.add("name"); propertiesToSelect.add("lastname"); propertiesToSelect.add("age"); tableAsyncClient.getEntityWithResponse("partitionKey", "rowKey", propertiesToSelect) .contextWrite(Context.of("key1", "value1", "key2", "value2")) .subscribe(response -> { TableEntity tableEntity = response.getValue(); System.out.printf("Response successful with status code: %d. Retrieved entity with partition key '%s'," + " row key '%s' and properties:", response.getStatusCode(), tableEntity.getPartitionKey(), tableEntity.getRowKey()); tableEntity.getProperties().forEach((key, value) -> System.out.printf("%nName: '%s'. Value: '%s'.", key, value)); });- Parameters:
partitionKey- The partition key of theentity.rowKey- The partition key of theentity.select- A list of properties to select on theentity.- Returns:
- A
Monocontaining theHTTP responsethat in turn contains theentity. - Throws:
IllegalArgumentException- If the providedpartitionKeyorrowKeyarenullor if theselectOData query option is malformed.TableServiceException- If noentitywith the providedpartitionKeyandrowKeyexists within the table.
-
getAccessPolicies
Retrieves details about any storedaccess policiesspecified on the table that may be used with Shared Access Signatures.This operation is only supported on Azure Storage endpoints.
Code Samples
Gets a table's
access policies. Prints out the details of the retrievedaccess policies.tableAsyncClient.getAccessPolicies() .contextWrite(Context.of("key1", "value1", "key2", "value2")) .subscribe(accessPolicies -> accessPolicies.getIdentifiers().forEach(signedIdentifier -> System.out.printf("Retrieved table access policy with id '%s'.", signedIdentifier.getId())));- Returns:
- A
Monocontaining the table'saccess policies. - Throws:
TableServiceException- If the request is rejected by the service.
-
getAccessPoliciesWithResponse
Retrieves details about any storedaccess policiesspecified on the table that may be used with Shared Access Signatures.This operation is only supported on Azure Storage endpoints.
Code Samples
Gets a table's
access policies. Prints out the details of theHTTP responseand the retrievedaccess policies.List<String> propertiesToSelect = new ArrayList<>(); propertiesToSelect.add("name"); propertiesToSelect.add("lastname"); propertiesToSelect.add("age"); tableAsyncClient.getAccessPoliciesWithResponse() .contextWrite(Context.of("key1", "value1", "key2", "value2")) .subscribe(response -> { System.out.printf("Response successful with status code: %d. Retrieved table access policies with the" + " following IDs:", response.getStatusCode()); response.getValue().getIdentifiers().forEach(signedIdentifier -> System.out.printf("%n%s", signedIdentifier.getId())); });- Returns:
- A
Monocontaining anHTTP responsethat in turn contains the table'saccess policies. - Throws:
TableServiceException- If the request is rejected by the service.
-
setAccessPolicies
Sets storedaccess policiesfor the table that may be used with Shared Access Signatures.This operation is only supported on Azure Storage endpoints.
Code Samples
Sets stored
access policieson a table.List<TableSignedIdentifier> signedIdentifiers = new ArrayList<>(); signedIdentifiers.add(new TableSignedIdentifier("id1") .setAccessPolicy(new TableAccessPolicy() .setStartsOn(OffsetDateTime.of(2021, 1, 1, 0, 0, 0, 0, ZoneOffset.UTC)) .setExpiresOn(OffsetDateTime.of(2022, 1, 1, 0, 0, 0, 0, ZoneOffset.UTC)) .setPermissions("r"))); signedIdentifiers.add(new TableSignedIdentifier("id2") .setAccessPolicy(new TableAccessPolicy() .setStartsOn(OffsetDateTime.of(2021, 1, 1, 0, 0, 0, 0, ZoneOffset.UTC)) .setExpiresOn(OffsetDateTime.of(2021, 1, 2, 0, 0, 0, 0, ZoneOffset.UTC)) .setPermissions("raud"))); tableAsyncClient.setAccessPolicies(signedIdentifiers) .contextWrite(Context.of("key1", "value1", "key2", "value2")) .subscribe(unused -> System.out.print("Set table access policies."));- Parameters:
tableSignedIdentifiers- Theaccess policiesfor the table.- Returns:
- An empty
Mono. - Throws:
TableServiceException- If the request is rejected by the service.
-
setAccessPoliciesWithResponse
public Mono<com.azure.core.http.rest.Response<Void>> setAccessPoliciesWithResponse(List<TableSignedIdentifier> tableSignedIdentifiers) Sets storedaccess policiesfor the table that may be used with Shared Access Signatures.This operation is only supported on Azure Storage endpoints.
Code Samples
Sets stored
access policieson a table. Prints out details of theHTTP response.List<TableSignedIdentifier> mySignedIdentifiers = new ArrayList<>(); mySignedIdentifiers.add(new TableSignedIdentifier("id1") .setAccessPolicy(new TableAccessPolicy() .setStartsOn(OffsetDateTime.of(2021, 1, 1, 0, 0, 0, 0, ZoneOffset.UTC)) .setExpiresOn(OffsetDateTime.of(2022, 1, 1, 0, 0, 0, 0, ZoneOffset.UTC)) .setPermissions("r"))); mySignedIdentifiers.add(new TableSignedIdentifier("id2") .setAccessPolicy(new TableAccessPolicy() .setStartsOn(OffsetDateTime.of(2021, 1, 1, 0, 0, 0, 0, ZoneOffset.UTC)) .setExpiresOn(OffsetDateTime.of(2021, 1, 2, 0, 0, 0, 0, ZoneOffset.UTC)) .setPermissions("raud"))); tableAsyncClient.setAccessPoliciesWithResponse(mySignedIdentifiers) .contextWrite(Context.of("key1", "value1", "key2", "value2")) .subscribe(response -> System.out.printf("Set table access policies successfully with status code: %d.", response.getStatusCode()));- Parameters:
tableSignedIdentifiers- Theaccess policiesfor the table.- Returns:
- A
Monocontaining theHTTP response. - Throws:
TableServiceException- If the request is rejected by the service.
-
submitTransaction
public Mono<TableTransactionResult> submitTransaction(List<TableTransactionAction> transactionActions) Executes allactionswithin the list inside a transaction. When the call completes, either allactionsin the transaction will succeed, or if a failure occurs, allactionsin the transaction will be rolled back. Eachactionmust operate on a distinct row key. Attempting to pass multipleactionsthat share the same row key will cause an error.Code Samples
Submits a transaction that contains multiple
actionsto be applied toentitieson a table. Prints out details of eachaction'sHTTP response.List<TableTransactionAction> transactionActions = new ArrayList<>(); String partitionKey = "markers"; String firstEntityRowKey = "m001"; String secondEntityRowKey = "m002"; TableEntity firstEntity = new TableEntity(partitionKey, firstEntityRowKey) .addProperty("Type", "Dry") .addProperty("Color", "Red"); transactionActions.add(new TableTransactionAction(TableTransactionActionType.CREATE, firstEntity)); System.out.printf("Added create action for entity with partition key '%s', and row key '%s'.%n", partitionKey, firstEntityRowKey); TableEntity secondEntity = new TableEntity(partitionKey, secondEntityRowKey) .addProperty("Type", "Wet") .addProperty("Color", "Blue"); transactionActions.add(new TableTransactionAction(TableTransactionActionType.CREATE, secondEntity)); System.out.printf("Added create action for entity with partition key '%s', and row key '%s'.%n", partitionKey, secondEntityRowKey); tableAsyncClient.submitTransaction(transactionActions) .contextWrite(Context.of("key1", "value1", "key2", "value2")) .subscribe(tableTransactionResult -> { System.out.print("Submitted transaction. The ordered response status codes for the actions are:"); tableTransactionResult.getTransactionActionResponses().forEach(tableTransactionActionResponse -> System.out.printf("%n%d", tableTransactionActionResponse.getStatusCode())); });Shows how to handle a transaction with a failing
actionvia the providedexception, which contains the index of the first failing action in the transaction.try { TableTransactionResult transactionResult = tableClient.submitTransaction(transactionActions); System.out.print("Submitted transaction. The ordered response status codes for the actions are:"); transactionResult.getTransactionActionResponses().forEach(tableTransactionActionResponse -> System.out.printf("%n%d", tableTransactionActionResponse.getStatusCode())); } catch (TableTransactionFailedException e) { // If the transaction fails, the resulting exception contains the index of the first action that failed. int failedActionIndex = e.getFailedTransactionActionIndex(); // You can use this index to modify the offending action or remove it from the list of actions to send in // the transaction, for example. transactionActions.remove(failedActionIndex); // And then retry submitting the transaction. }- Parameters:
transactionActions- AListofactionsto perform onentitiesin a table.- Returns:
- A
Monocontaining aListofsub-responsesthat correspond to eachactionin the transaction. - Throws:
IllegalArgumentException- If noactionshave been added to the list.TableServiceException- If the request is rejected by the service.TableTransactionFailedException- If anyactionwithin the transaction fails. See the documentation for the client methods inTableClientto understand the conditions that may cause a givenactionto fail.
-
submitTransactionWithResponse
public Mono<com.azure.core.http.rest.Response<TableTransactionResult>> submitTransactionWithResponse(List<TableTransactionAction> transactionActions) Executes allactionswithin the list inside a transaction. When the call completes, either allactionsin the transaction will succeed, or if a failure occurs, allactionsin the transaction will be rolled back. Eachactionmust operate on a distinct row key. Attempting to pass multipleactionsthat share the same row key will cause an error.Code Samples
Submits a transaction that contains multiple
actionsto be applied toentitieson a table. Prints out details of theHTTP responsefor the operation, as well as eachaction's correspondingHTTP response.List<TableTransactionAction> myTransactionActions = new ArrayList<>(); String myPartitionKey = "markers"; String myFirstEntityRowKey = "m001"; String mySecondEntityRowKey = "m002"; TableEntity myFirstEntity = new TableEntity(myPartitionKey, myFirstEntityRowKey) .addProperty("Type", "Dry") .addProperty("Color", "Red"); myTransactionActions.add(new TableTransactionAction(TableTransactionActionType.CREATE, myFirstEntity)); System.out.printf("Added create action for entity with partition key '%s', and row key '%s'.%n", myPartitionKey, myFirstEntityRowKey); TableEntity mySecondEntity = new TableEntity(myPartitionKey, mySecondEntityRowKey) .addProperty("Type", "Wet") .addProperty("Color", "Blue"); myTransactionActions.add(new TableTransactionAction(TableTransactionActionType.CREATE, mySecondEntity)); System.out.printf("Added create action for entity with partition key '%s', and row key '%s'.%n", myPartitionKey, mySecondEntityRowKey); tableAsyncClient.submitTransactionWithResponse(myTransactionActions) .contextWrite(Context.of("key1", "value1", "key2", "value2")) .subscribe(response -> { System.out.printf("Response successful with status code: %d. The ordered response status codes of the" + " submitted actions are:", response.getStatusCode()); response.getValue().getTransactionActionResponses().forEach(tableTransactionActionResponse -> System.out.printf("%n%d", tableTransactionActionResponse.getStatusCode())); });Shows how to handle a transaction with a failing
actionvia the providedexception, which contains the index of the first failing action in the transaction.tableAsyncClient.submitTransactionWithResponse(myTransactionActions) .contextWrite(Context.of("key1", "value1", "key2", "value2")) .doOnError(TableTransactionFailedException.class, e -> { // If the transaction fails, the resulting exception contains the index of the first action that failed. int failedActionIndex = e.getFailedTransactionActionIndex(); // You can use this index to modify the offending action or remove it from the list of actions to send // in the transaction, for example. transactionActions.remove(failedActionIndex); // And then retry submitting the transaction. }) .subscribe(response -> { System.out.printf("Response successful with status code: %d. The ordered response status codes of the" + " submitted actions are:", response.getStatusCode()); response.getValue().getTransactionActionResponses().forEach(tableTransactionActionResponse -> System.out.printf("%n%d", tableTransactionActionResponse.getStatusCode())); });- Parameters:
transactionActions- AListoftransaction actionsto perform onentitiesin a table.- Returns:
- A
Monocontaining theHTTP responseproduced for the transaction itself. The response's value will contain aListofsub-responsesthat correspond to eachactionin the transaction. - Throws:
IllegalArgumentException- If noactionshave been added to the list.TableServiceException- If the request is rejected by the service.TableTransactionFailedException- If anyactionwithin the transaction fails. See the documentation for the client methods inTableClientto understand the conditions that may cause a givenactionto fail.
-