Skip to content

Commit b00c2f3

Browse files
authored
Merge pull request #639 from abrooksv/stsRequestProvider
Add the ability to provide a Supplier<AssumeRoleRequest> to StsAssume…
2 parents 231a3b6 + a690ea9 commit b00c2f3

File tree

2 files changed

+26
-6
lines changed

2 files changed

+26
-6
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"category": "AWS STS",
3+
"type": "feature",
4+
"description": "Add the ability to provide a Supplier<AssumeRoleRequest> to StsAssumeRoleCredentialsProvider"
5+
}

services/sts/src/main/java/software/amazon/awssdk/services/sts/auth/StsAssumeRoleCredentialsProvider.java

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
package software.amazon.awssdk.services.sts.auth;
1717

1818
import java.util.function.Consumer;
19+
import java.util.function.Supplier;
20+
1921
import software.amazon.awssdk.annotations.NotThreadSafe;
2022
import software.amazon.awssdk.annotations.ThreadSafe;
2123
import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider;
@@ -38,16 +40,16 @@
3840
*/
3941
@ThreadSafe
4042
public class StsAssumeRoleCredentialsProvider extends StsCredentialsProvider {
41-
private final AssumeRoleRequest assumeRoleRequest;
43+
private Supplier<AssumeRoleRequest> assumeRoleRequestSupplier;
4244

4345
/**
4446
* @see #builder()
4547
*/
4648
private StsAssumeRoleCredentialsProvider(Builder builder) {
4749
super(builder, "sts-assume-role-credentials-provider");
48-
Validate.notNull(builder.assumeRoleRequest, "Assume role request must not be null.");
50+
Validate.notNull(builder.assumeRoleRequestSupplier, "Assume role request must not be null.");
4951

50-
this.assumeRoleRequest = builder.assumeRoleRequest;
52+
this.assumeRoleRequestSupplier = builder.assumeRoleRequestSupplier;
5153
}
5254

5355
/**
@@ -59,13 +61,15 @@ public static Builder builder() {
5961

6062
@Override
6163
protected Credentials getUpdatedCredentials(StsClient stsClient) {
64+
AssumeRoleRequest assumeRoleRequest = assumeRoleRequestSupplier.get();
65+
Validate.notNull(assumeRoleRequest, "Assume role request must not be null.");
6266
return stsClient.assumeRole(assumeRoleRequest).credentials();
6367
}
6468

6569
@Override
6670
public String toString() {
6771
return ToString.builder("StsAssumeRoleCredentialsProvider")
68-
.add("refreshRequest", assumeRoleRequest)
72+
.add("refreshRequest", assumeRoleRequestSupplier)
6973
.build();
7074
}
7175

@@ -75,7 +79,7 @@ public String toString() {
7579
*/
7680
@NotThreadSafe
7781
public static final class Builder extends BaseBuilder<Builder, StsAssumeRoleCredentialsProvider> {
78-
private AssumeRoleRequest assumeRoleRequest;
82+
private Supplier<AssumeRoleRequest> assumeRoleRequestSupplier;
7983

8084
private Builder() {
8185
super(StsAssumeRoleCredentialsProvider::new);
@@ -89,7 +93,18 @@ private Builder() {
8993
* @return This object for chained calls.
9094
*/
9195
public Builder refreshRequest(AssumeRoleRequest assumeRoleRequest) {
92-
this.assumeRoleRequest = assumeRoleRequest;
96+
return refreshRequest(() -> assumeRoleRequest);
97+
}
98+
99+
/**
100+
* Similar to {@link #refreshRequest(AssumeRoleRequest)}, but takes a {@link Supplier} to supply the request to
101+
* STS.
102+
*
103+
* @param assumeRoleRequestSupplier A supplier
104+
* @return This object for chained calls.
105+
*/
106+
public Builder refreshRequest(Supplier<AssumeRoleRequest> assumeRoleRequestSupplier) {
107+
this.assumeRoleRequestSupplier = assumeRoleRequestSupplier;
93108
return this;
94109
}
95110

0 commit comments

Comments
 (0)