Skip to content

Commit 09a12bf

Browse files
authored
Add missing ThreadSafe and Immutable annotations (#5021)
1 parent 7785e38 commit 09a12bf

File tree

9 files changed

+39
-11
lines changed

9 files changed

+39
-11
lines changed

codegen/src/main/java/software/amazon/awssdk/codegen/poet/waiters/BaseWaiterInterfaceSpec.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,9 @@
2828
import java.util.stream.Collectors;
2929
import java.util.stream.Stream;
3030
import javax.lang.model.element.Modifier;
31+
import software.amazon.awssdk.annotations.Immutable;
3132
import software.amazon.awssdk.annotations.SdkPublicApi;
33+
import software.amazon.awssdk.annotations.ThreadSafe;
3234
import software.amazon.awssdk.codegen.docs.WaiterDocs;
3335
import software.amazon.awssdk.codegen.model.intermediate.IntermediateModel;
3436
import software.amazon.awssdk.codegen.model.intermediate.OperationModel;
@@ -57,6 +59,8 @@ public BaseWaiterInterfaceSpec(IntermediateModel model) {
5759
public TypeSpec poetSpec() {
5860
TypeSpec.Builder result = PoetUtils.createInterfaceBuilder(className());
5961
result.addAnnotation(SdkPublicApi.class);
62+
result.addAnnotation(ThreadSafe.class);
63+
result.addAnnotation(Immutable.class);
6064
result.addMethods(waiterOperations());
6165
result.addSuperinterface(SdkAutoCloseable.class);
6266
result.addMethod(MethodSpec.methodBuilder("builder")

codegen/src/test/resources/software/amazon/awssdk/codegen/poet/waiters/query-async-waiter-interface.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44
import java.util.concurrent.ScheduledExecutorService;
55
import java.util.function.Consumer;
66
import software.amazon.awssdk.annotations.Generated;
7+
import software.amazon.awssdk.annotations.Immutable;
78
import software.amazon.awssdk.annotations.SdkPublicApi;
9+
import software.amazon.awssdk.annotations.ThreadSafe;
810
import software.amazon.awssdk.core.waiters.WaiterOverrideConfiguration;
911
import software.amazon.awssdk.core.waiters.WaiterResponse;
1012
import software.amazon.awssdk.services.query.QueryAsyncClient;
@@ -18,6 +20,8 @@
1820
*/
1921
@Generated("software.amazon.awssdk:codegen")
2022
@SdkPublicApi
23+
@ThreadSafe
24+
@Immutable
2125
public interface QueryAsyncWaiter extends SdkAutoCloseable {
2226
/**
2327
* Polls {@link QueryAsyncClient#aPostOperation} API until the desired condition {@code PostOperationSuccess} is
@@ -30,7 +34,7 @@ public interface QueryAsyncWaiter extends SdkAutoCloseable {
3034
* desired state.
3135
*/
3236
default CompletableFuture<WaiterResponse<APostOperationResponse>> waitUntilPostOperationSuccess(
33-
APostOperationRequest aPostOperationRequest) {
37+
APostOperationRequest aPostOperationRequest) {
3438
throw new UnsupportedOperationException();
3539
}
3640

@@ -47,7 +51,7 @@ default CompletableFuture<WaiterResponse<APostOperationResponse>> waitUntilPostO
4751
* with the waiter success condition
4852
*/
4953
default CompletableFuture<WaiterResponse<APostOperationResponse>> waitUntilPostOperationSuccess(
50-
Consumer<APostOperationRequest.Builder> aPostOperationRequest) {
54+
Consumer<APostOperationRequest.Builder> aPostOperationRequest) {
5155
return waitUntilPostOperationSuccess(APostOperationRequest.builder().applyMutation(aPostOperationRequest).build());
5256
}
5357

@@ -63,7 +67,7 @@ default CompletableFuture<WaiterResponse<APostOperationResponse>> waitUntilPostO
6367
* condition
6468
*/
6569
default CompletableFuture<WaiterResponse<APostOperationResponse>> waitUntilPostOperationSuccess(
66-
APostOperationRequest aPostOperationRequest, WaiterOverrideConfiguration overrideConfig) {
70+
APostOperationRequest aPostOperationRequest, WaiterOverrideConfiguration overrideConfig) {
6771
throw new UnsupportedOperationException();
6872
}
6973

@@ -82,10 +86,10 @@ default CompletableFuture<WaiterResponse<APostOperationResponse>> waitUntilPostO
8286
* condition
8387
*/
8488
default CompletableFuture<WaiterResponse<APostOperationResponse>> waitUntilPostOperationSuccess(
85-
Consumer<APostOperationRequest.Builder> aPostOperationRequest,
86-
Consumer<WaiterOverrideConfiguration.Builder> overrideConfig) {
89+
Consumer<APostOperationRequest.Builder> aPostOperationRequest,
90+
Consumer<WaiterOverrideConfiguration.Builder> overrideConfig) {
8791
return waitUntilPostOperationSuccess(APostOperationRequest.builder().applyMutation(aPostOperationRequest).build(),
88-
WaiterOverrideConfiguration.builder().applyMutation(overrideConfig).build());
92+
WaiterOverrideConfiguration.builder().applyMutation(overrideConfig).build());
8993
}
9094

9195
/**

codegen/src/test/resources/software/amazon/awssdk/codegen/poet/waiters/query-sync-waiter-interface.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
import java.util.function.Consumer;
44
import software.amazon.awssdk.annotations.Generated;
5+
import software.amazon.awssdk.annotations.Immutable;
56
import software.amazon.awssdk.annotations.SdkPublicApi;
7+
import software.amazon.awssdk.annotations.ThreadSafe;
68
import software.amazon.awssdk.core.waiters.WaiterOverrideConfiguration;
79
import software.amazon.awssdk.core.waiters.WaiterResponse;
810
import software.amazon.awssdk.services.query.QueryClient;
@@ -16,6 +18,8 @@
1618
*/
1719
@Generated("software.amazon.awssdk:codegen")
1820
@SdkPublicApi
21+
@ThreadSafe
22+
@Immutable
1923
public interface QueryWaiter extends SdkAutoCloseable {
2024
/**
2125
* Polls {@link QueryClient#aPostOperation} API until the desired condition {@code PostOperationSuccess} is met, or
@@ -43,7 +47,7 @@ default WaiterResponse<APostOperationResponse> waitUntilPostOperationSuccess(APo
4347
* condition
4448
*/
4549
default WaiterResponse<APostOperationResponse> waitUntilPostOperationSuccess(
46-
Consumer<APostOperationRequest.Builder> aPostOperationRequest) {
50+
Consumer<APostOperationRequest.Builder> aPostOperationRequest) {
4751
return waitUntilPostOperationSuccess(APostOperationRequest.builder().applyMutation(aPostOperationRequest).build());
4852
}
4953

@@ -59,7 +63,7 @@ default WaiterResponse<APostOperationResponse> waitUntilPostOperationSuccess(
5963
* condition
6064
*/
6165
default WaiterResponse<APostOperationResponse> waitUntilPostOperationSuccess(APostOperationRequest aPostOperationRequest,
62-
WaiterOverrideConfiguration overrideConfig) {
66+
WaiterOverrideConfiguration overrideConfig) {
6367
throw new UnsupportedOperationException();
6468
}
6569

@@ -78,10 +82,10 @@ default WaiterResponse<APostOperationResponse> waitUntilPostOperationSuccess(APo
7882
* condition
7983
*/
8084
default WaiterResponse<APostOperationResponse> waitUntilPostOperationSuccess(
81-
Consumer<APostOperationRequest.Builder> aPostOperationRequest,
82-
Consumer<WaiterOverrideConfiguration.Builder> overrideConfig) {
85+
Consumer<APostOperationRequest.Builder> aPostOperationRequest,
86+
Consumer<WaiterOverrideConfiguration.Builder> overrideConfig) {
8387
return waitUntilPostOperationSuccess(APostOperationRequest.builder().applyMutation(aPostOperationRequest).build(),
84-
WaiterOverrideConfiguration.builder().applyMutation(overrideConfig).build());
88+
WaiterOverrideConfiguration.builder().applyMutation(overrideConfig).build());
8589
}
8690

8791
/**

core/imds/src/main/java/software/amazon/awssdk/imds/Ec2MetadataAsyncClient.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@
1818
import java.util.concurrent.CompletableFuture;
1919
import java.util.concurrent.Executors;
2020
import java.util.concurrent.ScheduledExecutorService;
21+
import software.amazon.awssdk.annotations.Immutable;
2122
import software.amazon.awssdk.annotations.SdkPublicApi;
23+
import software.amazon.awssdk.annotations.ThreadSafe;
2224
import software.amazon.awssdk.core.exception.SdkClientException;
2325
import software.amazon.awssdk.http.async.SdkAsyncHttpClient;
2426
import software.amazon.awssdk.imds.internal.DefaultEc2MetadataAsyncClient;
@@ -56,6 +58,8 @@
5658
* <br/>Note: A single client instance should be reused for multiple requests when possible.
5759
*/
5860
@SdkPublicApi
61+
@ThreadSafe
62+
@Immutable
5963
public interface Ec2MetadataAsyncClient extends SdkAutoCloseable {
6064

6165
/**

core/imds/src/main/java/software/amazon/awssdk/imds/Ec2MetadataClient.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@
1515

1616
package software.amazon.awssdk.imds;
1717

18+
import software.amazon.awssdk.annotations.Immutable;
1819
import software.amazon.awssdk.annotations.SdkPublicApi;
20+
import software.amazon.awssdk.annotations.ThreadSafe;
1921
import software.amazon.awssdk.core.exception.SdkClientException;
2022
import software.amazon.awssdk.http.SdkHttpClient;
2123
import software.amazon.awssdk.imds.internal.DefaultEc2MetadataClient;
@@ -54,6 +56,8 @@
5456
* <br/>Note: A single client instance should be reused for multiple requests when possible.
5557
*/
5658
@SdkPublicApi
59+
@ThreadSafe
60+
@Immutable
5761
public interface Ec2MetadataClient extends SdkAutoCloseable {
5862

5963
/**

services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/DynamoDbEnhancedAsyncClient.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import java.util.List;
1919
import java.util.concurrent.CompletableFuture;
2020
import java.util.function.Consumer;
21+
import software.amazon.awssdk.annotations.Immutable;
2122
import software.amazon.awssdk.annotations.NotThreadSafe;
2223
import software.amazon.awssdk.annotations.SdkPublicApi;
2324
import software.amazon.awssdk.annotations.ThreadSafe;
@@ -45,6 +46,7 @@
4546
*/
4647
@SdkPublicApi
4748
@ThreadSafe
49+
@Immutable
4850
public interface DynamoDbEnhancedAsyncClient extends DynamoDbEnhancedResource {
4951

5052
/**

services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/DynamoDbEnhancedClient.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import java.util.List;
1919
import java.util.function.Consumer;
20+
import software.amazon.awssdk.annotations.Immutable;
2021
import software.amazon.awssdk.annotations.NotThreadSafe;
2122
import software.amazon.awssdk.annotations.SdkPublicApi;
2223
import software.amazon.awssdk.annotations.ThreadSafe;
@@ -45,6 +46,7 @@
4546
*/
4647
@SdkPublicApi
4748
@ThreadSafe
49+
@Immutable
4850
public interface DynamoDbEnhancedClient extends DynamoDbEnhancedResource {
4951

5052
/**

services-custom/iam-policy-builder/src/main/java/software/amazon/awssdk/policybuilder/iam/IamPolicy.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import java.util.Collection;
1919
import java.util.List;
2020
import java.util.function.Consumer;
21+
import software.amazon.awssdk.annotations.Immutable;
2122
import software.amazon.awssdk.annotations.SdkPublicApi;
2223
import software.amazon.awssdk.annotations.ThreadSafe;
2324
import software.amazon.awssdk.policybuilder.iam.internal.DefaultIamPolicy;
@@ -99,6 +100,7 @@
99100
*/
100101
@SdkPublicApi
101102
@ThreadSafe
103+
@Immutable
102104
public interface IamPolicy extends ToCopyableBuilder<IamPolicy.Builder, IamPolicy> {
103105
/**
104106
* Create an {@code IamPolicy} from an IAM policy in JSON form.

services/s3/src/main/java/software/amazon/awssdk/services/s3/S3Utilities.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import software.amazon.awssdk.annotations.Immutable;
3232
import software.amazon.awssdk.annotations.SdkInternalApi;
3333
import software.amazon.awssdk.annotations.SdkPublicApi;
34+
import software.amazon.awssdk.annotations.ThreadSafe;
3435
import software.amazon.awssdk.awscore.AwsExecutionAttribute;
3536
import software.amazon.awssdk.awscore.client.config.AwsClientOption;
3637
import software.amazon.awssdk.awscore.defaultsmode.DefaultsMode;
@@ -98,6 +99,7 @@
9899
*/
99100
@Immutable
100101
@SdkPublicApi
102+
@ThreadSafe
101103
public final class S3Utilities {
102104
private static final String SERVICE_NAME = "s3";
103105
private static final Pattern ENDPOINT_PATTERN = Pattern.compile("^(.+\\.)?s3[.-]([a-z0-9-]+)\\.");

0 commit comments

Comments
 (0)