feat: add support for db roles list (#1916) · googleapis/java-spanner@8034c67 (original) (raw)

`@@ -29,6 +29,7 @@

`

29

29

`import com.google.cloud.spanner.spi.v1.SpannerRpc.Paginated;

`

30

30

`import com.google.common.base.MoreObjects;

`

31

31

`import com.google.common.base.Preconditions;

`

``

32

`+

import com.google.iam.v1.GetPolicyOptions;

`

32

33

`import com.google.longrunning.Operation;

`

33

34

`import com.google.protobuf.Empty;

`

34

35

`import com.google.protobuf.FieldMask;

`

`@@ -290,6 +291,43 @@ public Operation fromProto(Operation proto) {

`

290

291

`return pageFetcher.getNextPage();

`

291

292

` }

`

292

293

``

``

294

`+

@Override

`

``

295

`+

public final Page listDatabaseRoles(

`

``

296

`+

String instanceId, String databaseId, ListOption... options) {

`

``

297

`+

final String databaseName = getDatabaseName(instanceId, databaseId);

`

``

298

`+

final Options listOptions = Options.fromListOptions(options);

`

``

299

`+

final int pageSize = listOptions.hasPageSize() ? listOptions.pageSize() : 0;

`

``

300

+

``

301

`+

PageFetcher<DatabaseRole, com.google.spanner.admin.database.v1.DatabaseRole> pageFetcher =

`

``

302

`+

new PageFetcher<DatabaseRole, com.google.spanner.admin.database.v1.DatabaseRole>() {

`

``

303

`+

@Override

`

``

304

`+

public Paginated<com.google.spanner.admin.database.v1.DatabaseRole> getNextPage(

`

``

305

`+

String nextPageToken) {

`

``

306

`+

try {

`

``

307

`+

return rpc.listDatabaseRoles(databaseName, pageSize, nextPageToken);

`

``

308

`+

} catch (SpannerException e) {

`

``

309

`+

throw SpannerExceptionFactory.newSpannerException(

`

``

310

`+

e.getErrorCode(),

`

``

311

`+

String.format(

`

``

312

`+

"Failed to list the databases roles of %s with pageToken %s: %s",

`

``

313

`+

databaseName,

`

``

314

`+

MoreObjects.firstNonNull(nextPageToken, ""),

`

``

315

`+

e.getMessage()),

`

``

316

`+

e);

`

``

317

`+

}

`

``

318

`+

}

`

``

319

+

``

320

`+

@Override

`

``

321

`+

public DatabaseRole fromProto(com.google.spanner.admin.database.v1.DatabaseRole proto) {

`

``

322

`+

return DatabaseRole.fromProto(proto);

`

``

323

`+

}

`

``

324

`+

};

`

``

325

`+

if (listOptions.hasPageToken()) {

`

``

326

`+

pageFetcher.setNextPageToken(listOptions.pageToken());

`

``

327

`+

}

`

``

328

`+

return pageFetcher.getNextPage();

`

``

329

`+

}

`

``

330

+

293

331

`@Override

`

294

332

`public Page listBackups(String instanceId, ListOption... options) {

`

295

333

`final String instanceName = getInstanceName(instanceId);

`

`@@ -463,9 +501,13 @@ public Operation getOperation(String name) {

`

463

501

` }

`

464

502

``

465

503

`@Override

`

466

``

`-

public Policy getDatabaseIAMPolicy(String instanceId, String databaseId) {

`

``

504

`+

public Policy getDatabaseIAMPolicy(String instanceId, String databaseId, int version) {

`

467

505

`final String databaseName = DatabaseId.of(projectId, instanceId, databaseId).getName();

`

468

``

`-

return policyMarshaller.fromPb(rpc.getDatabaseAdminIAMPolicy(databaseName));

`

``

506

`+

GetPolicyOptions options = null;

`

``

507

`+

if (version > 0) {

`

``

508

`+

options = GetPolicyOptions.newBuilder().setRequestedPolicyVersion(version).build();

`

``

509

`+

}

`

``

510

`+

return policyMarshaller.fromPb(rpc.getDatabaseAdminIAMPolicy(databaseName, options));

`

469

511

` }

`

470

512

``

471

513

`@Override

`

`@@ -487,7 +529,7 @@ public Iterable testDatabaseIAMPermissions(

`

487

529

`@Override

`

488

530

`public Policy getBackupIAMPolicy(String instanceId, String backupId) {

`

489

531

`final String databaseName = BackupId.of(projectId, instanceId, backupId).getName();

`

490

``

`-

return policyMarshaller.fromPb(rpc.getDatabaseAdminIAMPolicy(databaseName));

`

``

532

`+

return policyMarshaller.fromPb(rpc.getDatabaseAdminIAMPolicy(databaseName, null));

`

491

533

` }

`

492

534

``

493

535

`@Override

`