Class PoliciesClient (1.10.0)

public class PoliciesClient implements BackgroundResource

Service Description: An interface for managing Identity and Access Management (IAM) policies.

This class provides the ability to make remote calls to the backing service through method calls that map to API methods. Sample code to get started:


 // This snippet has been automatically generated and should be regarded as a code template only.
 // It will require modifications to work:
 // - It may require correct/in-range values for request initialization.
 // - It may require specifying regional endpoints when creating the service client as shown in
 // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
 try (PoliciesClient policiesClient = PoliciesClient.create()) {
   String name = "name3373707";
   Policy response = policiesClient.getPolicy(name);
 }
 

Note: close() needs to be called on the PoliciesClient object to clean up resources such as threads. In the example above, try-with-resources is used, which automatically calls close().

The surface of this class includes several types of Java methods for each of the API's methods:

  1. A "flattened" method. With this type of method, the fields of the request type have been converted into function parameters. It may be the case that not all fields are available as parameters, and not every API method will have a flattened method entry point.
  2. A "request object" method. This type of method only takes one parameter, a request object, which must be constructed before the call. Not every API method will have a request object method.
  3. A "callable" method. This type of method takes no parameters and returns an immutable API callable object, which can be used to initiate calls to the service.

See the individual methods for example code.

Many parameters require resource names to be formatted in a particular way. To assist with these names, this class includes a format method for each type of name, and additionally a parse method to extract the individual identifiers contained within names that are returned.

This class can be customized by passing in a custom instance of PoliciesSettings to create(). For example:

To customize credentials:


 // This snippet has been automatically generated and should be regarded as a code template only.
 // It will require modifications to work:
 // - It may require correct/in-range values for request initialization.
 // - It may require specifying regional endpoints when creating the service client as shown in
 // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
 PoliciesSettings policiesSettings =
     PoliciesSettings.newBuilder()
         .setCredentialsProvider(FixedCredentialsProvider.create(myCredentials))
         .build();
 PoliciesClient policiesClient = PoliciesClient.create(policiesSettings);
 

To customize the endpoint:


 // This snippet has been automatically generated and should be regarded as a code template only.
 // It will require modifications to work:
 // - It may require correct/in-range values for request initialization.
 // - It may require specifying regional endpoints when creating the service client as shown in
 // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
 PoliciesSettings policiesSettings =
     PoliciesSettings.newBuilder().setEndpoint(myEndpoint).build();
 PoliciesClient policiesClient = PoliciesClient.create(policiesSettings);
 

To use REST (HTTP1.1/JSON) transport (instead of gRPC) for sending and receiving requests over the wire:


 // This snippet has been automatically generated and should be regarded as a code template only.
 // It will require modifications to work:
 // - It may require correct/in-range values for request initialization.
 // - It may require specifying regional endpoints when creating the service client as shown in
 // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
 PoliciesSettings policiesSettings = PoliciesSettings.newHttpJsonBuilder().build();
 PoliciesClient policiesClient = PoliciesClient.create(policiesSettings);
 

Please refer to the GitHub repository's samples for more quickstart code snippets.

Inheritance

java.lang.Object > PoliciesClient

Implements

BackgroundResource

Static Methods

create()

public static final PoliciesClient create()

Constructs an instance of PoliciesClient with default settings.

Returns
TypeDescription
PoliciesClient
Exceptions
TypeDescription
IOException

create(PoliciesSettings settings)

public static final PoliciesClient create(PoliciesSettings settings)

Constructs an instance of PoliciesClient, using the given settings. The channels are created based on the settings passed in, or defaults for any settings that are not set.

Parameter
NameDescription
settingsPoliciesSettings
Returns
TypeDescription
PoliciesClient
Exceptions
TypeDescription
IOException

create(PoliciesStub stub)

public static final PoliciesClient create(PoliciesStub stub)

Constructs an instance of PoliciesClient, using the given stub for making calls. This is for advanced usage - prefer using create(PoliciesSettings).

Parameter
NameDescription
stubPoliciesStub
Returns
TypeDescription
PoliciesClient

Constructors

PoliciesClient(PoliciesSettings settings)

protected PoliciesClient(PoliciesSettings settings)

Constructs an instance of PoliciesClient, using the given settings. This is protected so that it is easy to make a subclass, but otherwise, the static factory methods should be preferred.

Parameter
NameDescription
settingsPoliciesSettings

PoliciesClient(PoliciesStub stub)

protected PoliciesClient(PoliciesStub stub)
Parameter
NameDescription
stubPoliciesStub

Methods

awaitTermination(long duration, TimeUnit unit)

public boolean awaitTermination(long duration, TimeUnit unit)
Parameters
NameDescription
durationlong
unitTimeUnit
Returns
TypeDescription
boolean
Exceptions
TypeDescription
InterruptedException

close()

public final void close()

createPolicyAsync(CreatePolicyRequest request)

public final OperationFuture<Policy,PolicyOperationMetadata> createPolicyAsync(CreatePolicyRequest request)

Creates a policy.

Sample code:


 // This snippet has been automatically generated and should be regarded as a code template only.
 // It will require modifications to work:
 // - It may require correct/in-range values for request initialization.
 // - It may require specifying regional endpoints when creating the service client as shown in
 // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
 try (PoliciesClient policiesClient = PoliciesClient.create()) {
   CreatePolicyRequest request =
       CreatePolicyRequest.newBuilder()
           .setParent("parent-995424086")
           .setPolicy(Policy.newBuilder().build())
           .setPolicyId("policyId546908653")
           .build();
   Policy response = policiesClient.createPolicyAsync(request).get();
 }
 
Parameter
NameDescription
requestCreatePolicyRequest

The request object containing all of the parameters for the API call.

Returns
TypeDescription
OperationFuture<Policy,PolicyOperationMetadata>

createPolicyAsync(String parent, Policy policy, String policyId)

public final OperationFuture<Policy,PolicyOperationMetadata> createPolicyAsync(String parent, Policy policy, String policyId)

Creates a policy.

Sample code:


 // This snippet has been automatically generated and should be regarded as a code template only.
 // It will require modifications to work:
 // - It may require correct/in-range values for request initialization.
 // - It may require specifying regional endpoints when creating the service client as shown in
 // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
 try (PoliciesClient policiesClient = PoliciesClient.create()) {
   String parent = "parent-995424086";
   Policy policy = Policy.newBuilder().build();
   String policyId = "policyId546908653";
   Policy response = policiesClient.createPolicyAsync(parent, policy, policyId).get();
 }
 
Parameters
NameDescription
parentString

Required. The resource that the policy is attached to, along with the kind of policy to create. Format: policies/{attachment_point}/denypolicies

The attachment point is identified by its URL-encoded full resource name, which means that the forward-slash character, /, must be written as %2F. For example, policies/cloudresourcemanager.googleapis.com%2Fprojects%2Fmy-project/denypolicies.

For organizations and folders, use the numeric ID in the full resource name. For projects, you can use the alphanumeric or the numeric ID.

policyPolicy

Required. The policy to create.

policyIdString

The ID to use for this policy, which will become the final component of the policy's resource name. The ID must contain 3 to 63 characters. It can contain lowercase letters and numbers, as well as dashes (-) and periods (.). The first character must be a lowercase letter.

Returns
TypeDescription
OperationFuture<Policy,PolicyOperationMetadata>

createPolicyCallable()

public final UnaryCallable<CreatePolicyRequest,Operation> createPolicyCallable()

Creates a policy.

Sample code:


 // This snippet has been automatically generated and should be regarded as a code template only.
 // It will require modifications to work:
 // - It may require correct/in-range values for request initialization.
 // - It may require specifying regional endpoints when creating the service client as shown in
 // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
 try (PoliciesClient policiesClient = PoliciesClient.create()) {
   CreatePolicyRequest request =
       CreatePolicyRequest.newBuilder()
           .setParent("parent-995424086")
           .setPolicy(Policy.newBuilder().build())
           .setPolicyId("policyId546908653")
           .build();
   ApiFuture<Operation> future = policiesClient.createPolicyCallable().futureCall(request);
   // Do something.
   Operation response = future.get();
 }
 
Returns
TypeDescription
UnaryCallable<CreatePolicyRequest,Operation>

createPolicyOperationCallable()

public final OperationCallable<CreatePolicyRequest,Policy,PolicyOperationMetadata> createPolicyOperationCallable()

Creates a policy.

Sample code:


 // This snippet has been automatically generated and should be regarded as a code template only.
 // It will require modifications to work:
 // - It may require correct/in-range values for request initialization.
 // - It may require specifying regional endpoints when creating the service client as shown in
 // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
 try (PoliciesClient policiesClient = PoliciesClient.create()) {
   CreatePolicyRequest request =
       CreatePolicyRequest.newBuilder()
           .setParent("parent-995424086")
           .setPolicy(Policy.newBuilder().build())
           .setPolicyId("policyId546908653")
           .build();
   OperationFuture<Policy, PolicyOperationMetadata> future =
       policiesClient.createPolicyOperationCallable().futureCall(request);
   // Do something.
   Policy response = future.get();
 }
 
Returns
TypeDescription
OperationCallable<CreatePolicyRequest,Policy,PolicyOperationMetadata>

deletePolicyAsync(DeletePolicyRequest request)

public final OperationFuture<Policy,PolicyOperationMetadata> deletePolicyAsync(DeletePolicyRequest request)

Deletes a policy. This action is permanent.

Sample code:


 // This snippet has been automatically generated and should be regarded as a code template only.
 // It will require modifications to work:
 // - It may require correct/in-range values for request initialization.
 // - It may require specifying regional endpoints when creating the service client as shown in
 // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
 try (PoliciesClient policiesClient = PoliciesClient.create()) {
   DeletePolicyRequest request =
       DeletePolicyRequest.newBuilder().setName("name3373707").setEtag("etag3123477").build();
   Policy response = policiesClient.deletePolicyAsync(request).get();
 }
 
Parameter
NameDescription
requestDeletePolicyRequest

The request object containing all of the parameters for the API call.

Returns
TypeDescription
OperationFuture<Policy,PolicyOperationMetadata>

deletePolicyAsync(String name)

public final OperationFuture<Policy,PolicyOperationMetadata> deletePolicyAsync(String name)

Deletes a policy. This action is permanent.

Sample code:


 // This snippet has been automatically generated and should be regarded as a code template only.
 // It will require modifications to work:
 // - It may require correct/in-range values for request initialization.
 // - It may require specifying regional endpoints when creating the service client as shown in
 // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
 try (PoliciesClient policiesClient = PoliciesClient.create()) {
   String name = "name3373707";
   Policy response = policiesClient.deletePolicyAsync(name).get();
 }
 
Parameter
NameDescription
nameString

Required. The resource name of the policy to delete. Format: policies/{attachment_point}/denypolicies/{policy_id}

Use the URL-encoded full resource name, which means that the forward-slash character, /, must be written as %2F. For example, policies/cloudresourcemanager.googleapis.com%2Fprojects%2Fmy-project/denypolicies/my-policy.

For organizations and folders, use the numeric ID in the full resource name. For projects, you can use the alphanumeric or the numeric ID.

Returns
TypeDescription
OperationFuture<Policy,PolicyOperationMetadata>

deletePolicyCallable()

public final UnaryCallable<DeletePolicyRequest,Operation> deletePolicyCallable()

Deletes a policy. This action is permanent.

Sample code:


 // This snippet has been automatically generated and should be regarded as a code template only.
 // It will require modifications to work:
 // - It may require correct/in-range values for request initialization.
 // - It may require specifying regional endpoints when creating the service client as shown in
 // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
 try (PoliciesClient policiesClient = PoliciesClient.create()) {
   DeletePolicyRequest request =
       DeletePolicyRequest.newBuilder().setName("name3373707").setEtag("etag3123477").build();
   ApiFuture<Operation> future = policiesClient.deletePolicyCallable().futureCall(request);
   // Do something.
   Operation response = future.get();
 }
 
Returns
TypeDescription
UnaryCallable<DeletePolicyRequest,Operation>

deletePolicyOperationCallable()

public final OperationCallable<DeletePolicyRequest,Policy,PolicyOperationMetadata> deletePolicyOperationCallable()

Deletes a policy. This action is permanent.

Sample code:


 // This snippet has been automatically generated and should be regarded as a code template only.
 // It will require modifications to work:
 // - It may require correct/in-range values for request initialization.
 // - It may require specifying regional endpoints when creating the service client as shown in
 // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
 try (PoliciesClient policiesClient = PoliciesClient.create()) {
   DeletePolicyRequest request =
       DeletePolicyRequest.newBuilder().setName("name3373707").setEtag("etag3123477").build();
   OperationFuture<Policy, PolicyOperationMetadata> future =
       policiesClient.deletePolicyOperationCallable().futureCall(request);
   // Do something.
   Policy response = future.get();
 }
 
Returns
TypeDescription
OperationCallable<DeletePolicyRequest,Policy,PolicyOperationMetadata>

getHttpJsonOperationsClient()

public final OperationsClient getHttpJsonOperationsClient()

Returns the OperationsClient that can be used to query the status of a long-running operation returned by another API method call.

Returns
TypeDescription
OperationsClient

getOperationsClient()

public final OperationsClient getOperationsClient()

Returns the OperationsClient that can be used to query the status of a long-running operation returned by another API method call.

Returns
TypeDescription
OperationsClient

getPolicy(GetPolicyRequest request)

public final Policy getPolicy(GetPolicyRequest request)

Gets a policy.

Sample code:


 // This snippet has been automatically generated and should be regarded as a code template only.
 // It will require modifications to work:
 // - It may require correct/in-range values for request initialization.
 // - It may require specifying regional endpoints when creating the service client as shown in
 // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
 try (PoliciesClient policiesClient = PoliciesClient.create()) {
   GetPolicyRequest request = GetPolicyRequest.newBuilder().setName("name3373707").build();
   Policy response = policiesClient.getPolicy(request);
 }
 
Parameter
NameDescription
requestGetPolicyRequest

The request object containing all of the parameters for the API call.

Returns
TypeDescription
Policy

getPolicy(String name)

public final Policy getPolicy(String name)

Gets a policy.

Sample code:


 // This snippet has been automatically generated and should be regarded as a code template only.
 // It will require modifications to work:
 // - It may require correct/in-range values for request initialization.
 // - It may require specifying regional endpoints when creating the service client as shown in
 // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
 try (PoliciesClient policiesClient = PoliciesClient.create()) {
   String name = "name3373707";
   Policy response = policiesClient.getPolicy(name);
 }
 
Parameter
NameDescription
nameString

Required. The resource name of the policy to retrieve. Format: policies/{attachment_point}/denypolicies/{policy_id}

Use the URL-encoded full resource name, which means that the forward-slash character, /, must be written as %2F. For example, policies/cloudresourcemanager.googleapis.com%2Fprojects%2Fmy-project/denypolicies/my-policy.

For organizations and folders, use the numeric ID in the full resource name. For projects, you can use the alphanumeric or the numeric ID.

Returns
TypeDescription
Policy

getPolicyCallable()

public final UnaryCallable<GetPolicyRequest,Policy> getPolicyCallable()

Gets a policy.

Sample code:


 // This snippet has been automatically generated and should be regarded as a code template only.
 // It will require modifications to work:
 // - It may require correct/in-range values for request initialization.
 // - It may require specifying regional endpoints when creating the service client as shown in
 // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
 try (PoliciesClient policiesClient = PoliciesClient.create()) {
   GetPolicyRequest request = GetPolicyRequest.newBuilder().setName("name3373707").build();
   ApiFuture<Policy> future = policiesClient.getPolicyCallable().futureCall(request);
   // Do something.
   Policy response = future.get();
 }
 
Returns
TypeDescription
UnaryCallable<GetPolicyRequest,Policy>

getSettings()

public final PoliciesSettings getSettings()
Returns
TypeDescription
PoliciesSettings

getStub()

public PoliciesStub getStub()
Returns
TypeDescription
PoliciesStub

isShutdown()

public boolean isShutdown()
Returns
TypeDescription
boolean

isTerminated()

public boolean isTerminated()
Returns
TypeDescription
boolean

listPolicies(ListPoliciesRequest request)

public final PoliciesClient.ListPoliciesPagedResponse listPolicies(ListPoliciesRequest request)

Retrieves the policies of the specified kind that are attached to a resource.

The response lists only policy metadata. In particular, policy rules are omitted.

Sample code:


 // This snippet has been automatically generated and should be regarded as a code template only.
 // It will require modifications to work:
 // - It may require correct/in-range values for request initialization.
 // - It may require specifying regional endpoints when creating the service client as shown in
 // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
 try (PoliciesClient policiesClient = PoliciesClient.create()) {
   ListPoliciesRequest request =
       ListPoliciesRequest.newBuilder()
           .setParent("parent-995424086")
           .setPageSize(883849137)
           .setPageToken("pageToken873572522")
           .build();
   for (Policy element : policiesClient.listPolicies(request).iterateAll()) {
     // doThingsWith(element);
   }
 }
 
Parameter
NameDescription
requestListPoliciesRequest

The request object containing all of the parameters for the API call.

Returns
TypeDescription
PoliciesClient.ListPoliciesPagedResponse

listPolicies(String parent)

public final PoliciesClient.ListPoliciesPagedResponse listPolicies(String parent)

Retrieves the policies of the specified kind that are attached to a resource.

The response lists only policy metadata. In particular, policy rules are omitted.

Sample code:


 // This snippet has been automatically generated and should be regarded as a code template only.
 // It will require modifications to work:
 // - It may require correct/in-range values for request initialization.
 // - It may require specifying regional endpoints when creating the service client as shown in
 // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
 try (PoliciesClient policiesClient = PoliciesClient.create()) {
   String parent = "parent-995424086";
   for (Policy element : policiesClient.listPolicies(parent).iterateAll()) {
     // doThingsWith(element);
   }
 }
 
Parameter
NameDescription
parentString

Required. The resource that the policy is attached to, along with the kind of policy to list. Format: policies/{attachment_point}/denypolicies

The attachment point is identified by its URL-encoded full resource name, which means that the forward-slash character, /, must be written as %2F. For example, policies/cloudresourcemanager.googleapis.com%2Fprojects%2Fmy-project/denypolicies.

For organizations and folders, use the numeric ID in the full resource name. For projects, you can use the alphanumeric or the numeric ID.

Returns
TypeDescription
PoliciesClient.ListPoliciesPagedResponse

listPoliciesCallable()

public final UnaryCallable<ListPoliciesRequest,ListPoliciesResponse> listPoliciesCallable()

Retrieves the policies of the specified kind that are attached to a resource.

The response lists only policy metadata. In particular, policy rules are omitted.

Sample code:


 // This snippet has been automatically generated and should be regarded as a code template only.
 // It will require modifications to work:
 // - It may require correct/in-range values for request initialization.
 // - It may require specifying regional endpoints when creating the service client as shown in
 // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
 try (PoliciesClient policiesClient = PoliciesClient.create()) {
   ListPoliciesRequest request =
       ListPoliciesRequest.newBuilder()
           .setParent("parent-995424086")
           .setPageSize(883849137)
           .setPageToken("pageToken873572522")
           .build();
   while (true) {
     ListPoliciesResponse response = policiesClient.listPoliciesCallable().call(request);
     for (Policy element : response.getPoliciesList()) {
       // doThingsWith(element);
     }
     String nextPageToken = response.getNextPageToken();
     if (!Strings.isNullOrEmpty(nextPageToken)) {
       request = request.toBuilder().setPageToken(nextPageToken).build();
     } else {
       break;
     }
   }
 }
 
Returns
TypeDescription
UnaryCallable<ListPoliciesRequest,ListPoliciesResponse>

listPoliciesPagedCallable()

public final UnaryCallable<ListPoliciesRequest,PoliciesClient.ListPoliciesPagedResponse> listPoliciesPagedCallable()

Retrieves the policies of the specified kind that are attached to a resource.

The response lists only policy metadata. In particular, policy rules are omitted.

Sample code:


 // This snippet has been automatically generated and should be regarded as a code template only.
 // It will require modifications to work:
 // - It may require correct/in-range values for request initialization.
 // - It may require specifying regional endpoints when creating the service client as shown in
 // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
 try (PoliciesClient policiesClient = PoliciesClient.create()) {
   ListPoliciesRequest request =
       ListPoliciesRequest.newBuilder()
           .setParent("parent-995424086")
           .setPageSize(883849137)
           .setPageToken("pageToken873572522")
           .build();
   ApiFuture<Policy> future = policiesClient.listPoliciesPagedCallable().futureCall(request);
   // Do something.
   for (Policy element : future.get().iterateAll()) {
     // doThingsWith(element);
   }
 }
 
Returns
TypeDescription
UnaryCallable<ListPoliciesRequest,ListPoliciesPagedResponse>

shutdown()

public void shutdown()

shutdownNow()

public void shutdownNow()

updatePolicyAsync(UpdatePolicyRequest request)

public final OperationFuture<Policy,PolicyOperationMetadata> updatePolicyAsync(UpdatePolicyRequest request)

Updates the specified policy.

You can update only the rules and the display name for the policy.

To update a policy, you should use a read-modify-write loop:

1. Use GetPolicy to read the current version of the policy. 2. Modify the policy as needed. 3. Use UpdatePolicy to write the updated policy.

This pattern helps prevent conflicts between concurrent updates.

Sample code:


 // This snippet has been automatically generated and should be regarded as a code template only.
 // It will require modifications to work:
 // - It may require correct/in-range values for request initialization.
 // - It may require specifying regional endpoints when creating the service client as shown in
 // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
 try (PoliciesClient policiesClient = PoliciesClient.create()) {
   UpdatePolicyRequest request =
       UpdatePolicyRequest.newBuilder().setPolicy(Policy.newBuilder().build()).build();
   Policy response = policiesClient.updatePolicyAsync(request).get();
 }
 
Parameter
NameDescription
requestUpdatePolicyRequest

The request object containing all of the parameters for the API call.

Returns
TypeDescription
OperationFuture<Policy,PolicyOperationMetadata>

updatePolicyCallable()

public final UnaryCallable<UpdatePolicyRequest,Operation> updatePolicyCallable()

Updates the specified policy.

You can update only the rules and the display name for the policy.

To update a policy, you should use a read-modify-write loop:

1. Use GetPolicy to read the current version of the policy. 2. Modify the policy as needed. 3. Use UpdatePolicy to write the updated policy.

This pattern helps prevent conflicts between concurrent updates.

Sample code:


 // This snippet has been automatically generated and should be regarded as a code template only.
 // It will require modifications to work:
 // - It may require correct/in-range values for request initialization.
 // - It may require specifying regional endpoints when creating the service client as shown in
 // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
 try (PoliciesClient policiesClient = PoliciesClient.create()) {
   UpdatePolicyRequest request =
       UpdatePolicyRequest.newBuilder().setPolicy(Policy.newBuilder().build()).build();
   ApiFuture<Operation> future = policiesClient.updatePolicyCallable().futureCall(request);
   // Do something.
   Operation response = future.get();
 }
 
Returns
TypeDescription
UnaryCallable<UpdatePolicyRequest,Operation>

updatePolicyOperationCallable()

public final OperationCallable<UpdatePolicyRequest,Policy,PolicyOperationMetadata> updatePolicyOperationCallable()

Updates the specified policy.

You can update only the rules and the display name for the policy.

To update a policy, you should use a read-modify-write loop:

1. Use GetPolicy to read the current version of the policy. 2. Modify the policy as needed. 3. Use UpdatePolicy to write the updated policy.

This pattern helps prevent conflicts between concurrent updates.

Sample code:


 // This snippet has been automatically generated and should be regarded as a code template only.
 // It will require modifications to work:
 // - It may require correct/in-range values for request initialization.
 // - It may require specifying regional endpoints when creating the service client as shown in
 // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
 try (PoliciesClient policiesClient = PoliciesClient.create()) {
   UpdatePolicyRequest request =
       UpdatePolicyRequest.newBuilder().setPolicy(Policy.newBuilder().build()).build();
   OperationFuture<Policy, PolicyOperationMetadata> future =
       policiesClient.updatePolicyOperationCallable().futureCall(request);
   // Do something.
   Policy response = future.get();
 }
 
Returns
TypeDescription
OperationCallable<UpdatePolicyRequest,Policy,PolicyOperationMetadata>