Gestire le maschere di aggiornamento

Quando aggiornano le risorse (richieste PATCH), Google Cloud le API utilizzano spesso una maschera di aggiornamento (com.google.protobuf.FieldMask). In questo modo, il server sa esattamente quali campi intendi aggiornare, evitando la sovrascrittura accidentale di altri campi.

Se non fornisci una maschera, alcune API aggiornano tutti i campi, reimpostando quelli mancanti sui valori predefiniti.

Costruire una FieldMask

import com.google.cloud.secretmanager.v1.Secret;
import com.google.cloud.secretmanager.v1.SecretManagerServiceClient;
import com.google.cloud.secretmanager.v1.UpdateSecretRequest;
import com.google.protobuf.FieldMask;

try (SecretManagerServiceClient client = SecretManagerServiceClient.create()) {
    // Prepare the resource with NEW values
    Secret secret = Secret.newBuilder()
        .setName("projects/my-project/secrets/my-secret")
        .putLabels("env", "production") // We only want to update this field
        .build();

    // Create the FieldMask
    // Paths MUST match the protobuf field names (snake_case)
    FieldMask updateMask = FieldMask.newBuilder()
        .addPaths("labels")
        .build();

    // Prepare the Request object
    UpdateSecretRequest request = UpdateSecretRequest.newBuilder()
        .setSecret(secret)
        .setUpdateMask(updateMask)
        .build();

    // Call the API
    client.updateSecret(request);
}