Skip to content

Commit c6d82d4

Browse files
arpan14olavloite
andauthored
chore: replace client creation methods for all new samples with auto-generated admin clients (#2927)
* fix: prevent illegal negative timeout values into thread sleep() method while retrying exceptions in unit tests. * For details on issue see - #2206 * Fixing lint issues. * chore: remove unused imports. * chore: replace with new client creation methods. * Update samples/snippets/src/main/java/com/example/spanner/admin/generated/AddAndDropDatabaseRole.java Co-authored-by: Knut Olav Løite <koloite@gmail.com> * chore: address comments. * chore: replace with new client creation methods. --------- Co-authored-by: Knut Olav Løite <koloite@gmail.com>
1 parent cd34c1d commit c6d82d4

38 files changed

+422
-320
lines changed

samples/snippets/src/main/java/com/example/spanner/admin/generated/AddAndDropDatabaseRole.java

+11-6
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,18 @@
1818

1919
// [START spanner_add_and_drop_database_role]
2020

21+
import com.google.cloud.spanner.Spanner;
22+
import com.google.cloud.spanner.SpannerOptions;
2123
import com.google.cloud.spanner.admin.database.v1.DatabaseAdminClient;
2224
import com.google.common.collect.ImmutableList;
2325
import com.google.spanner.admin.database.v1.DatabaseName;
24-
import java.io.IOException;
2526
import java.util.concurrent.ExecutionException;
2627
import java.util.concurrent.TimeUnit;
2728
import java.util.concurrent.TimeoutException;
2829

2930
public class AddAndDropDatabaseRole {
3031

31-
static void addAndDropDatabaseRole() throws IOException {
32+
static void addAndDropDatabaseRole() {
3233
// TODO(developer): Replace these variables before running the sample.
3334
String projectId = "my-project";
3435
String instanceId = "my-instance";
@@ -39,10 +40,14 @@ static void addAndDropDatabaseRole() throws IOException {
3940
}
4041

4142
static void addAndDropDatabaseRole(
42-
String projectId, String instanceId, String databaseId, String parentRole, String childRole)
43-
throws IOException {
44-
final DatabaseAdminClient databaseAdminClient = DatabaseAdminClient.create();
45-
try {
43+
String projectId, String instanceId, String databaseId,
44+
String parentRole, String childRole) {
45+
try (Spanner spanner =
46+
SpannerOptions.newBuilder()
47+
.setProjectId(projectId)
48+
.build()
49+
.getService();
50+
DatabaseAdminClient databaseAdminClient = spanner.createDatabaseAdminClient()) {
4651
System.out.println("Waiting for role create operation to complete...");
4752
databaseAdminClient.updateDatabaseDdlAsync(
4853
DatabaseName.of(projectId, instanceId, databaseId),

samples/snippets/src/main/java/com/example/spanner/admin/generated/AddJsonColumnSample.java

+18-11
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,17 @@
1717
package com.example.spanner.admin.generated;
1818

1919
// [START spanner_add_json_column]
20+
21+
import com.google.cloud.spanner.Spanner;
22+
import com.google.cloud.spanner.SpannerOptions;
2023
import com.google.cloud.spanner.admin.database.v1.DatabaseAdminClient;
2124
import com.google.common.collect.ImmutableList;
2225
import com.google.spanner.admin.database.v1.DatabaseName;
23-
import java.io.IOException;
2426
import java.util.concurrent.ExecutionException;
2527

2628
class AddJsonColumnSample {
2729

28-
static void addJsonColumn() throws InterruptedException, ExecutionException, IOException {
30+
static void addJsonColumn() throws InterruptedException, ExecutionException {
2931
// TODO(developer): Replace these variables before running the sample.
3032
String projectId = "my-project";
3133
String instanceId = "my-instance";
@@ -35,15 +37,20 @@ static void addJsonColumn() throws InterruptedException, ExecutionException, IOE
3537
}
3638

3739
static void addJsonColumn(String projectId, String instanceId, String databaseId)
38-
throws InterruptedException, ExecutionException, IOException {
39-
final DatabaseAdminClient databaseAdminClient = DatabaseAdminClient.create();
40-
41-
// Wait for the operation to finish.
42-
// This will throw an ExecutionException if the operation fails.
43-
databaseAdminClient.updateDatabaseDdlAsync(
44-
DatabaseName.of(projectId, instanceId, databaseId),
45-
ImmutableList.of("ALTER TABLE Venues ADD COLUMN VenueDetails JSON")).get();
46-
System.out.printf("Successfully added column `VenueDetails`%n");
40+
throws InterruptedException, ExecutionException {
41+
try (Spanner spanner =
42+
SpannerOptions.newBuilder()
43+
.setProjectId(projectId)
44+
.build()
45+
.getService();
46+
DatabaseAdminClient databaseAdminClient = spanner.createDatabaseAdminClient()) {
47+
// Wait for the operation to finish.
48+
// This will throw an ExecutionException if the operation fails.
49+
databaseAdminClient.updateDatabaseDdlAsync(
50+
DatabaseName.of(projectId, instanceId, databaseId),
51+
ImmutableList.of("ALTER TABLE Venues ADD COLUMN VenueDetails JSON")).get();
52+
System.out.printf("Successfully added column `VenueDetails`%n");
53+
}
4754
}
4855
}
4956
// [END spanner_add_json_column]

samples/snippets/src/main/java/com/example/spanner/admin/generated/AddJsonbColumnSample.java

+19-12
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,17 @@
1717
package com.example.spanner.admin.generated;
1818

1919
// [START spanner_postgresql_jsonb_add_column]
20+
21+
import com.google.cloud.spanner.Spanner;
22+
import com.google.cloud.spanner.SpannerOptions;
2023
import com.google.cloud.spanner.admin.database.v1.DatabaseAdminClient;
2124
import com.google.common.collect.ImmutableList;
2225
import com.google.spanner.admin.database.v1.DatabaseName;
23-
import java.io.IOException;
2426
import java.util.concurrent.ExecutionException;
2527

2628
class AddJsonbColumnSample {
2729

28-
static void addJsonbColumn() throws InterruptedException, ExecutionException, IOException {
30+
static void addJsonbColumn() throws InterruptedException, ExecutionException {
2931
// TODO(developer): Replace these variables before running the sample.
3032
String projectId = "my-project";
3133
String instanceId = "my-instance";
@@ -35,16 +37,21 @@ static void addJsonbColumn() throws InterruptedException, ExecutionException, IO
3537
}
3638

3739
static void addJsonbColumn(String projectId, String instanceId, String databaseId)
38-
throws InterruptedException, ExecutionException, IOException {
39-
final DatabaseAdminClient databaseAdminClient = DatabaseAdminClient.create();
40-
41-
// JSONB datatype is only supported with PostgreSQL-dialect databases.
42-
// Wait for the operation to finish.
43-
// This will throw an ExecutionException if the operation fails.
44-
databaseAdminClient.updateDatabaseDdlAsync(
45-
DatabaseName.of(projectId, instanceId, databaseId),
46-
ImmutableList.of("ALTER TABLE Venues ADD COLUMN VenueDetails JSONB")).get();
47-
System.out.printf("Successfully added column `VenueDetails`%n");
40+
throws InterruptedException, ExecutionException {
41+
try (Spanner spanner =
42+
SpannerOptions.newBuilder()
43+
.setProjectId(projectId)
44+
.build()
45+
.getService();
46+
DatabaseAdminClient databaseAdminClient = spanner.createDatabaseAdminClient()) {
47+
// JSONB datatype is only supported with PostgreSQL-dialect databases.
48+
// Wait for the operation to finish.
49+
// This will throw an ExecutionException if the operation fails.
50+
databaseAdminClient.updateDatabaseDdlAsync(
51+
DatabaseName.of(projectId, instanceId, databaseId),
52+
ImmutableList.of("ALTER TABLE Venues ADD COLUMN VenueDetails JSONB")).get();
53+
System.out.printf("Successfully added column `VenueDetails`%n");
54+
}
4855
}
4956
}
5057
// [END spanner_postgresql_jsonb_add_column]

samples/snippets/src/main/java/com/example/spanner/admin/generated/AddNumericColumnSample.java

+17-11
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,16 @@
1818

1919
// [START spanner_add_numeric_column]
2020

21+
import com.google.cloud.spanner.Spanner;
22+
import com.google.cloud.spanner.SpannerOptions;
2123
import com.google.cloud.spanner.admin.database.v1.DatabaseAdminClient;
2224
import com.google.common.collect.ImmutableList;
2325
import com.google.spanner.admin.database.v1.DatabaseName;
24-
import java.io.IOException;
2526
import java.util.concurrent.ExecutionException;
2627

2728
class AddNumericColumnSample {
2829

29-
static void addNumericColumn() throws InterruptedException, ExecutionException, IOException {
30+
static void addNumericColumn() throws InterruptedException, ExecutionException {
3031
// TODO(developer): Replace these variables before running the sample.
3132
String projectId = "my-project";
3233
String instanceId = "my-instance";
@@ -36,15 +37,20 @@ static void addNumericColumn() throws InterruptedException, ExecutionException,
3637
}
3738

3839
static void addNumericColumn(String projectId, String instanceId, String databaseId)
39-
throws InterruptedException, ExecutionException, IOException {
40-
final DatabaseAdminClient databaseAdminClient = DatabaseAdminClient.create();
41-
42-
// Wait for the operation to finish.
43-
// This will throw an ExecutionException if the operation fails.
44-
databaseAdminClient.updateDatabaseDdlAsync(
45-
DatabaseName.of(projectId, instanceId, databaseId),
46-
ImmutableList.of("ALTER TABLE Venues ADD COLUMN Revenue NUMERIC")).get();
47-
System.out.printf("Successfully added column `Revenue`%n");
40+
throws InterruptedException, ExecutionException {
41+
try (Spanner spanner =
42+
SpannerOptions.newBuilder()
43+
.setProjectId(projectId)
44+
.build()
45+
.getService();
46+
DatabaseAdminClient databaseAdminClient = spanner.createDatabaseAdminClient()) {
47+
// Wait for the operation to finish.
48+
// This will throw an ExecutionException if the operation fails.
49+
databaseAdminClient.updateDatabaseDdlAsync(
50+
DatabaseName.of(projectId, instanceId, databaseId),
51+
ImmutableList.of("ALTER TABLE Venues ADD COLUMN Revenue NUMERIC")).get();
52+
System.out.printf("Successfully added column `Revenue`%n");
53+
}
4854
}
4955
}
5056
// [END spanner_add_numeric_column]

samples/snippets/src/main/java/com/example/spanner/admin/generated/AlterSequenceSample.java

+4-6
Original file line numberDiff line numberDiff line change
@@ -28,27 +28,25 @@
2828
import com.google.cloud.spanner.admin.database.v1.DatabaseAdminClient;
2929
import com.google.common.collect.ImmutableList;
3030
import com.google.spanner.admin.database.v1.DatabaseName;
31-
import java.io.IOException;
3231
import java.util.Objects;
3332
import java.util.concurrent.ExecutionException;
3433
import java.util.concurrent.TimeUnit;
3534
import java.util.concurrent.TimeoutException;
3635

3736
public class AlterSequenceSample {
3837

39-
static void alterSequence() throws IOException {
38+
static void alterSequence() {
4039
// TODO(developer): Replace these variables before running the sample.
4140
final String projectId = "my-project";
4241
final String instanceId = "my-instance";
4342
final String databaseId = "my-database";
4443
alterSequence(projectId, instanceId, databaseId);
4544
}
4645

47-
static void alterSequence(String projectId, String instanceId, String databaseId)
48-
throws IOException {
49-
DatabaseAdminClient databaseAdminClient = DatabaseAdminClient.create();
46+
static void alterSequence(String projectId, String instanceId, String databaseId) {
5047
try (Spanner spanner =
51-
SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) {
48+
SpannerOptions.newBuilder().setProjectId(projectId).build().getService();
49+
DatabaseAdminClient databaseAdminClient = spanner.createDatabaseAdminClient()) {
5250

5351
databaseAdminClient
5452
.updateDatabaseDdlAsync(DatabaseName.of(projectId, instanceId, databaseId),

samples/snippets/src/main/java/com/example/spanner/admin/generated/AlterTableWithForeignKeyDeleteCascadeSample.java

+21-18
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,15 @@
1818

1919
// [START spanner_alter_table_with_foreign_key_delete_cascade]
2020

21+
import com.google.cloud.spanner.Spanner;
22+
import com.google.cloud.spanner.SpannerOptions;
2123
import com.google.cloud.spanner.admin.database.v1.DatabaseAdminClient;
2224
import com.google.common.collect.ImmutableList;
2325
import com.google.spanner.admin.database.v1.DatabaseName;
24-
import java.io.IOException;
2526

2627
class AlterTableWithForeignKeyDeleteCascadeSample {
2728

28-
static void alterForeignKeyDeleteCascadeConstraint() throws IOException {
29+
static void alterForeignKeyDeleteCascadeConstraint() {
2930
// TODO(developer): Replace these variables before running the sample.
3031
String projectId = "my-project";
3132
String instanceId = "my-instance";
@@ -35,22 +36,24 @@ static void alterForeignKeyDeleteCascadeConstraint() throws IOException {
3536
}
3637

3738
static void alterForeignKeyDeleteCascadeConstraint(
38-
String projectId, String instanceId, String databaseId) throws IOException {
39-
DatabaseAdminClient databaseAdminClient = DatabaseAdminClient.create();
40-
41-
databaseAdminClient.updateDatabaseDdlAsync(DatabaseName.of(projectId, instanceId,
42-
databaseId),
43-
ImmutableList.of(
44-
"ALTER TABLE ShoppingCarts\n"
45-
+ " ADD CONSTRAINT FKShoppingCartsCustomerName\n"
46-
+ " FOREIGN KEY (CustomerName)\n"
47-
+ " REFERENCES Customers(CustomerName)\n"
48-
+ " ON DELETE CASCADE\n"));
49-
System.out.printf(
50-
String.format(
51-
"Altered ShoppingCarts table with FKShoppingCartsCustomerName\n"
52-
+ "foreign key constraint on database %s on instance %s",
53-
databaseId, instanceId));
39+
String projectId, String instanceId, String databaseId) {
40+
try (Spanner spanner =
41+
SpannerOptions.newBuilder().setProjectId(projectId).build().getService();
42+
DatabaseAdminClient databaseAdminClient = spanner.createDatabaseAdminClient()) {
43+
databaseAdminClient.updateDatabaseDdlAsync(DatabaseName.of(projectId, instanceId,
44+
databaseId),
45+
ImmutableList.of(
46+
"ALTER TABLE ShoppingCarts\n"
47+
+ " ADD CONSTRAINT FKShoppingCartsCustomerName\n"
48+
+ " FOREIGN KEY (CustomerName)\n"
49+
+ " REFERENCES Customers(CustomerName)\n"
50+
+ " ON DELETE CASCADE\n"));
51+
System.out.printf(
52+
String.format(
53+
"Altered ShoppingCarts table with FKShoppingCartsCustomerName\n"
54+
+ "foreign key constraint on database %s on instance %s",
55+
databaseId, instanceId));
56+
}
5457
}
5558
}
5659
// [END spanner_alter_table_with_foreign_key_delete_cascade]

samples/snippets/src/main/java/com/example/spanner/admin/generated/CopyBackupSample.java

+6-3
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,14 @@
1919
// [START spanner_copy_backup]
2020

2121
import com.google.cloud.Timestamp;
22+
import com.google.cloud.spanner.Spanner;
2223
import com.google.cloud.spanner.SpannerException;
2324
import com.google.cloud.spanner.SpannerExceptionFactory;
25+
import com.google.cloud.spanner.SpannerOptions;
2426
import com.google.cloud.spanner.admin.database.v1.DatabaseAdminClient;
2527
import com.google.spanner.admin.database.v1.Backup;
2628
import com.google.spanner.admin.database.v1.BackupName;
2729
import com.google.spanner.admin.database.v1.InstanceName;
28-
import java.io.IOException;
2930
import java.time.Instant;
3031
import java.time.OffsetDateTime;
3132
import java.time.ZoneId;
@@ -34,14 +35,16 @@
3435

3536
public class CopyBackupSample {
3637

37-
static void copyBackup() throws IOException {
38+
static void copyBackup() {
3839
// TODO(developer): Replace these variables before running the sample.
3940
String projectId = "my-project";
4041
String instanceId = "my-instance";
4142
String sourceBackupId = "my-backup";
4243
String destinationBackupId = "my-destination-backup";
4344

44-
try (DatabaseAdminClient databaseAdminClient = DatabaseAdminClient.create()) {
45+
try (Spanner spanner =
46+
SpannerOptions.newBuilder().setProjectId(projectId).build().getService();
47+
DatabaseAdminClient databaseAdminClient = spanner.createDatabaseAdminClient()) {
4548
copyBackup(databaseAdminClient, projectId, instanceId, sourceBackupId, destinationBackupId);
4649
}
4750
}

samples/snippets/src/main/java/com/example/spanner/admin/generated/CreateBackupWithEncryptionKey.java

+6-5
Original file line numberDiff line numberDiff line change
@@ -18,19 +18,18 @@
1818

1919
// [START spanner_create_backup_with_encryption_key]
2020

21+
import com.google.cloud.spanner.Spanner;
2122
import com.google.cloud.spanner.SpannerExceptionFactory;
23+
import com.google.cloud.spanner.SpannerOptions;
2224
import com.google.cloud.spanner.admin.database.v1.DatabaseAdminClient;
23-
import com.google.cloud.spanner.encryption.EncryptionConfigs;
2425
import com.google.protobuf.Timestamp;
2526
import com.google.spanner.admin.database.v1.Backup;
2627
import com.google.spanner.admin.database.v1.BackupName;
2728
import com.google.spanner.admin.database.v1.CreateBackupEncryptionConfig;
2829
import com.google.spanner.admin.database.v1.CreateBackupEncryptionConfig.EncryptionType;
29-
import com.google.spanner.admin.database.v1.CreateBackupMetadata;
3030
import com.google.spanner.admin.database.v1.CreateBackupRequest;
3131
import com.google.spanner.admin.database.v1.DatabaseName;
3232
import com.google.spanner.admin.database.v1.InstanceName;
33-
import java.io.IOException;
3433
import java.util.concurrent.ExecutionException;
3534
import java.util.concurrent.TimeUnit;
3635
import java.util.concurrent.TimeoutException;
@@ -39,7 +38,7 @@
3938

4039
public class CreateBackupWithEncryptionKey {
4140

42-
static void createBackupWithEncryptionKey() throws IOException {
41+
static void createBackupWithEncryptionKey() {
4342
// TODO(developer): Replace these variables before running the sample.
4443
String projectId = "my-project";
4544
String instanceId = "my-instance";
@@ -48,7 +47,9 @@ static void createBackupWithEncryptionKey() throws IOException {
4847
String kmsKeyName =
4948
"projects/" + projectId + "/locations/<location>/keyRings/<keyRing>/cryptoKeys/<keyId>";
5049

51-
try (DatabaseAdminClient adminClient = DatabaseAdminClient.create()) {
50+
try (Spanner spanner =
51+
SpannerOptions.newBuilder().setProjectId(projectId).build().getService();
52+
DatabaseAdminClient adminClient = spanner.createDatabaseAdminClient()) {
5253
createBackupWithEncryptionKey(
5354
adminClient,
5455
projectId,

samples/snippets/src/main/java/com/example/spanner/admin/generated/CreateDatabaseWithEncryptionKey.java

+6-3
Original file line numberDiff line numberDiff line change
@@ -18,29 +18,32 @@
1818

1919
// [START spanner_create_database_with_encryption_key]
2020

21+
import com.google.cloud.spanner.Spanner;
2122
import com.google.cloud.spanner.SpannerExceptionFactory;
23+
import com.google.cloud.spanner.SpannerOptions;
2224
import com.google.cloud.spanner.admin.database.v1.DatabaseAdminClient;
2325
import com.google.common.collect.ImmutableList;
2426
import com.google.spanner.admin.database.v1.CreateDatabaseRequest;
2527
import com.google.spanner.admin.database.v1.Database;
2628
import com.google.spanner.admin.database.v1.EncryptionConfig;
2729
import com.google.spanner.admin.database.v1.InstanceName;
28-
import java.io.IOException;
2930
import java.util.concurrent.ExecutionException;
3031
import java.util.concurrent.TimeUnit;
3132
import java.util.concurrent.TimeoutException;
3233

3334
public class CreateDatabaseWithEncryptionKey {
3435

35-
static void createDatabaseWithEncryptionKey() throws IOException {
36+
static void createDatabaseWithEncryptionKey() {
3637
// TODO(developer): Replace these variables before running the sample.
3738
String projectId = "my-project";
3839
String instanceId = "my-instance";
3940
String databaseId = "my-database";
4041
String kmsKeyName =
4142
"projects/" + projectId + "/locations/<location>/keyRings/<keyRing>/cryptoKeys/<keyId>";
4243

43-
try (DatabaseAdminClient adminClient = DatabaseAdminClient.create()) {
44+
try (Spanner spanner =
45+
SpannerOptions.newBuilder().setProjectId(projectId).build().getService();
46+
DatabaseAdminClient adminClient = spanner.createDatabaseAdminClient()) {
4447
createDatabaseWithEncryptionKey(
4548
adminClient,
4649
projectId,

0 commit comments

Comments
 (0)