public static BeginTransactionRequest begin(@Nullable ByteString previousTransactionId) { BeginTransactionRequest.Builder begin = BeginTransactionRequest.newBuilder(); begin.setDatabase(DATABASE_NAME); if (previousTransactionId != null) { begin.getOptionsBuilder().getReadWriteBuilder().setRetryTransaction(previousTransactionId); } return begin.build(); }
/** Starts a transaction and obtains the transaction id from the server. */ ApiFuture<Void> begin() { BeginTransactionRequest.Builder beginTransaction = BeginTransactionRequest.newBuilder(); beginTransaction.setDatabase(firestore.getDatabaseName()); if (previousTransactionId != null) { beginTransaction .getOptionsBuilder() .getReadWriteBuilder() .setRetryTransaction(previousTransactionId); } ApiFuture<BeginTransactionResponse> transactionBeginFuture = firestore.sendRequest( beginTransaction.build(), firestore.getClient().beginTransactionCallable()); return ApiFutures.transform( transactionBeginFuture, new ApiFunction<BeginTransactionResponse, Void>() { @Override public Void apply(BeginTransactionResponse beginTransactionResponse) { transactionId = beginTransactionResponse.getTransaction(); pending = true; return null; } }); }
/** * Starts a new transaction. * * <p>Sample code: * * <pre><code> * try (FirestoreClient firestoreClient = FirestoreClient.create()) { * String formattedDatabase = FirestoreClient.formatDatabaseRootName("[PROJECT]", "[DATABASE]"); * BeginTransactionResponse response = firestoreClient.beginTransaction(formattedDatabase); * } * </code></pre> * * @param database The database name. In the format: * `projects/{project_id}/databases/{database_id}`. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ public final BeginTransactionResponse beginTransaction(String database) { DATABASE_ROOT_PATH_TEMPLATE.validate(database, "beginTransaction"); BeginTransactionRequest request = BeginTransactionRequest.newBuilder().setDatabase(database).build(); return beginTransaction(request); }
/** Starts a transaction and obtains the transaction id from the server. */ ApiFuture<Void> begin() { BeginTransactionRequest.Builder beginTransaction = BeginTransactionRequest.newBuilder(); beginTransaction.setDatabase(firestore.getDatabaseName()); if (previousTransactionId != null) { beginTransaction .getOptionsBuilder() .getReadWriteBuilder() .setRetryTransaction(previousTransactionId); } ApiFuture<BeginTransactionResponse> transactionBeginFuture = firestore.sendRequest( beginTransaction.build(), firestore.getClient().beginTransactionCallable()); return ApiFutures.transform( transactionBeginFuture, new ApiFunction<BeginTransactionResponse, Void>() { @Override public Void apply(BeginTransactionResponse beginTransactionResponse) { transactionId = beginTransactionResponse.getTransaction(); pending = true; return null; } }); }
/** * Starts a new transaction. * * <p>Sample code: * * <pre><code> * try (FirestoreClient firestoreClient = FirestoreClient.create()) { * String formattedDatabase = FirestoreClient.formatDatabaseRootName("[PROJECT]", "[DATABASE]"); * BeginTransactionResponse response = firestoreClient.beginTransaction(formattedDatabase); * } * </code></pre> * * @param database The database name. In the format: * `projects/{project_id}/databases/{database_id}`. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ public final BeginTransactionResponse beginTransaction(String database) { DATABASE_ROOT_PATH_TEMPLATE.validate(database, "beginTransaction"); BeginTransactionRequest request = BeginTransactionRequest.newBuilder().setDatabase(database).build(); return beginTransaction(request); }