Gerenciar máscaras de atualização

Ao atualizar recursos (solicitações PATCH),as APIs Google Cloud geralmente usam uma máscara de atualização (com.google.protobuf.FieldMask). Isso informa ao servidor exatamente quais campos você pretende atualizar, evitando substituições acidentais de outros campos.

Se você não fornecer uma máscara, algumas APIs vão atualizar todos os campos, redefinindo os ausentes para os valores padrão.

Construir um 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);
}