Skip to content

Commit 1ec82e4

Browse files
authored
Add @threadsafe or @NotThreadSafe annotations to each @SdkPublicApi in dynamodb-enhanced. (#3136)
1 parent 7fcc7ae commit 1ec82e4

File tree

80 files changed

+246
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

80 files changed

+246
-0
lines changed

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

+2
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package software.amazon.awssdk.enhanced.dynamodb;
1717

1818
import software.amazon.awssdk.annotations.SdkPublicApi;
19+
import software.amazon.awssdk.annotations.ThreadSafe;
1920
import software.amazon.awssdk.enhanced.dynamodb.internal.converter.ConverterProviderResolver;
2021
import software.amazon.awssdk.services.dynamodb.model.AttributeValue;
2122

@@ -24,6 +25,7 @@
2425
* converting a given {@link EnhancedType}.
2526
*/
2627
@SdkPublicApi
28+
@ThreadSafe
2729
public interface AttributeConverterProvider {
2830

2931
/**

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

+2
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,11 @@
1616
package software.amazon.awssdk.enhanced.dynamodb;
1717

1818
import software.amazon.awssdk.annotations.SdkPublicApi;
19+
import software.amazon.awssdk.annotations.ThreadSafe;
1920
import software.amazon.awssdk.services.dynamodb.model.ScalarAttributeType;
2021

2122
@SdkPublicApi
23+
@ThreadSafe
2224
public enum AttributeValueType {
2325
B(ScalarAttributeType.B), // binary
2426
BOOL, // boolean

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

+2
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import java.util.Set;
2323
import java.util.concurrent.ConcurrentHashMap;
2424
import software.amazon.awssdk.annotations.Immutable;
25+
import software.amazon.awssdk.annotations.NotThreadSafe;
2526
import software.amazon.awssdk.annotations.SdkPublicApi;
2627
import software.amazon.awssdk.annotations.ThreadSafe;
2728
import software.amazon.awssdk.enhanced.dynamodb.internal.converter.PrimitiveConverter;
@@ -249,6 +250,7 @@ private static Builder getDefaultBuilder() {
249250
/**
250251
* A builder for configuring and creating {@link DefaultAttributeConverterProvider}s.
251252
*/
253+
@NotThreadSafe
252254
public static class Builder {
253255
private List<AttributeConverter<?>> converters = new ArrayList<>();
254256

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

+2
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,15 @@
1616
package software.amazon.awssdk.enhanced.dynamodb;
1717

1818
import software.amazon.awssdk.annotations.SdkPublicApi;
19+
import software.amazon.awssdk.annotations.ThreadSafe;
1920

2021
/**
2122
* A document representing a table item in the form of a map containing attributes and values.
2223
* <p>
2324
* Use the {@link #getItem(MappedTableResource)} method to transform the collection of attributes into a typed item.
2425
*/
2526
@SdkPublicApi
27+
@ThreadSafe
2628
public interface Document {
2729

2830
/**

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

+2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import java.util.function.Consumer;
1919
import software.amazon.awssdk.annotations.SdkPublicApi;
20+
import software.amazon.awssdk.annotations.ThreadSafe;
2021
import software.amazon.awssdk.core.async.SdkPublisher;
2122
import software.amazon.awssdk.enhanced.dynamodb.model.Page;
2223
import software.amazon.awssdk.enhanced.dynamodb.model.QueryConditional;
@@ -33,6 +34,7 @@
3334
* @param <T> The type of the modelled object.
3435
*/
3536
@SdkPublicApi
37+
@ThreadSafe
3638
public interface DynamoDbAsyncIndex<T> {
3739

3840
/**

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

+2
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import java.util.concurrent.CompletableFuture;
1919
import java.util.function.Consumer;
2020
import software.amazon.awssdk.annotations.SdkPublicApi;
21+
import software.amazon.awssdk.annotations.ThreadSafe;
2122
import software.amazon.awssdk.enhanced.dynamodb.model.CreateTableEnhancedRequest;
2223
import software.amazon.awssdk.enhanced.dynamodb.model.DeleteItemEnhancedRequest;
2324
import software.amazon.awssdk.enhanced.dynamodb.model.DeleteItemEnhancedResponse;
@@ -47,6 +48,7 @@
4748
* @param <T> The type of the modelled object.
4849
*/
4950
@SdkPublicApi
51+
@ThreadSafe
5052
public interface DynamoDbAsyncTable<T> extends MappedTableResource<T> {
5153
/**
5254
* Returns a mapped index that can be used to execute commands against a secondary index belonging to the table

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

+4
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@
1818
import java.util.List;
1919
import java.util.concurrent.CompletableFuture;
2020
import java.util.function.Consumer;
21+
import software.amazon.awssdk.annotations.NotThreadSafe;
2122
import software.amazon.awssdk.annotations.SdkPublicApi;
23+
import software.amazon.awssdk.annotations.ThreadSafe;
2224
import software.amazon.awssdk.core.async.SdkPublisher;
2325
import software.amazon.awssdk.enhanced.dynamodb.internal.client.DefaultDynamoDbEnhancedAsyncClient;
2426
import software.amazon.awssdk.enhanced.dynamodb.model.BatchGetItemEnhancedRequest;
@@ -42,6 +44,7 @@
4244
* implementing classes.
4345
*/
4446
@SdkPublicApi
47+
@ThreadSafe
4548
public interface DynamoDbEnhancedAsyncClient extends DynamoDbEnhancedResource {
4649

4750
/**
@@ -441,6 +444,7 @@ static DynamoDbEnhancedAsyncClient create() {
441444
/**
442445
* The builder definition for a {@link DynamoDbEnhancedAsyncClient}.
443446
*/
447+
@NotThreadSafe
444448
interface Builder extends DynamoDbEnhancedResource.Builder {
445449
/**
446450
* The regular low-level SDK client to use with the enhanced client.

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

+4
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@
1717

1818
import java.util.List;
1919
import java.util.function.Consumer;
20+
import software.amazon.awssdk.annotations.NotThreadSafe;
2021
import software.amazon.awssdk.annotations.SdkPublicApi;
22+
import software.amazon.awssdk.annotations.ThreadSafe;
2123
import software.amazon.awssdk.core.pagination.sync.SdkIterable;
2224
import software.amazon.awssdk.enhanced.dynamodb.internal.client.DefaultDynamoDbEnhancedClient;
2325
import software.amazon.awssdk.enhanced.dynamodb.model.BatchGetItemEnhancedRequest;
@@ -42,6 +44,7 @@
4244
* implementing classes.
4345
*/
4446
@SdkPublicApi
47+
@ThreadSafe
4548
public interface DynamoDbEnhancedClient extends DynamoDbEnhancedResource {
4649

4750
/**
@@ -443,6 +446,7 @@ static DynamoDbEnhancedClient create() {
443446
/**
444447
* The builder definition for a {@link DynamoDbEnhancedClient}.
445448
*/
449+
@NotThreadSafe
446450
interface Builder extends DynamoDbEnhancedResource.Builder {
447451
/**
448452
* The regular low-level SDK client to use with the enhanced client.

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

+2
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package software.amazon.awssdk.enhanced.dynamodb;
1717

1818
import software.amazon.awssdk.annotations.SdkPublicApi;
19+
import software.amazon.awssdk.annotations.ThreadSafe;
1920
import software.amazon.awssdk.enhanced.dynamodb.extensions.ReadModification;
2021
import software.amazon.awssdk.enhanced.dynamodb.extensions.WriteModification;
2122

@@ -29,6 +30,7 @@
2930
* calculation.
3031
*/
3132
@SdkPublicApi
33+
@ThreadSafe
3234
public interface DynamoDbEnhancedClientExtension {
3335
/**
3436
* This hook is called just before an operation is going to write data to the database. The extension that

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

+4
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,22 @@
1616
package software.amazon.awssdk.enhanced.dynamodb;
1717

1818
import java.util.List;
19+
import software.amazon.awssdk.annotations.NotThreadSafe;
1920
import software.amazon.awssdk.annotations.SdkPublicApi;
21+
import software.amazon.awssdk.annotations.ThreadSafe;
2022

2123
/**
2224
* Shared interface components for {@link DynamoDbEnhancedClient} and {@link DynamoDbEnhancedAsyncClient}. Any common
2325
* methods implemented by both of those classes or their builders are declared here.
2426
*/
2527
@SdkPublicApi
28+
@ThreadSafe
2629
public interface DynamoDbEnhancedResource {
2730
/**
2831
* Shared interface components for the builders of {@link DynamoDbEnhancedClient} and
2932
* {@link DynamoDbEnhancedAsyncClient}
3033
*/
34+
@NotThreadSafe
3135
interface Builder {
3236
/**
3337
* Specifies the extensions to load with the enhanced client. The extensions will be loaded in the strict order

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

+5
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,21 @@
1717

1818
import java.util.Map;
1919
import software.amazon.awssdk.annotations.SdkPublicApi;
20+
import software.amazon.awssdk.annotations.ThreadSafe;
2021
import software.amazon.awssdk.enhanced.dynamodb.internal.operations.OperationName;
2122
import software.amazon.awssdk.services.dynamodb.model.AttributeValue;
2223

2324
/**
2425
* A wrapper for the immutable context objects that are visible to the {@link DynamoDbEnhancedClientExtension}s.
2526
*/
2627
@SdkPublicApi
28+
@ThreadSafe
2729
public final class DynamoDbExtensionContext {
2830
private DynamoDbExtensionContext() {
2931
}
3032

3133
@SdkPublicApi
34+
@ThreadSafe
3235
public interface Context {
3336
/**
3437
* @return The {@link AttributeValue} map of the items that is about to be written or has just been read.
@@ -57,6 +60,7 @@ default TableSchema<?> tableSchema() {
5760
* The state of the execution when the {@link DynamoDbEnhancedClientExtension#beforeWrite} method is invoked.
5861
*/
5962
@SdkPublicApi
63+
@ThreadSafe
6064
public interface BeforeWrite extends Context {
6165

6266
/**
@@ -69,6 +73,7 @@ public interface BeforeWrite extends Context {
6973
* The state of the execution when the {@link DynamoDbEnhancedClientExtension#afterRead} method is invoked.
7074
*/
7175
@SdkPublicApi
76+
@ThreadSafe
7277
public interface AfterRead extends Context {
7378
}
7479
}

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

+2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import java.util.function.Consumer;
1919
import software.amazon.awssdk.annotations.SdkPublicApi;
20+
import software.amazon.awssdk.annotations.ThreadSafe;
2021
import software.amazon.awssdk.core.pagination.sync.SdkIterable;
2122
import software.amazon.awssdk.enhanced.dynamodb.model.Page;
2223
import software.amazon.awssdk.enhanced.dynamodb.model.QueryConditional;
@@ -33,6 +34,7 @@
3334
* @param <T> The type of the modelled object.
3435
*/
3536
@SdkPublicApi
37+
@ThreadSafe
3638
public interface DynamoDbIndex<T> {
3739

3840
/**

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

+2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import java.util.function.Consumer;
1919
import software.amazon.awssdk.annotations.SdkPublicApi;
20+
import software.amazon.awssdk.annotations.ThreadSafe;
2021
import software.amazon.awssdk.core.pagination.sync.SdkIterable;
2122
import software.amazon.awssdk.enhanced.dynamodb.model.CreateTableEnhancedRequest;
2223
import software.amazon.awssdk.enhanced.dynamodb.model.DeleteItemEnhancedRequest;
@@ -47,6 +48,7 @@
4748
* @param <T> The type of the modelled object.
4849
*/
4950
@SdkPublicApi
51+
@ThreadSafe
5052
public interface DynamoDbTable<T> extends MappedTableResource<T> {
5153
/**
5254
* Returns a mapped index that can be used to execute commands against a secondary index belonging to the table

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

+4
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,17 @@
1616
package software.amazon.awssdk.enhanced.dynamodb;
1717

1818

19+
import software.amazon.awssdk.annotations.NotThreadSafe;
1920
import software.amazon.awssdk.annotations.SdkPublicApi;
21+
import software.amazon.awssdk.annotations.ThreadSafe;
2022
import software.amazon.awssdk.utils.builder.CopyableBuilder;
2123
import software.amazon.awssdk.utils.builder.ToCopyableBuilder;
2224

2325
/**
2426
* Configuration for {@link EnhancedType} of document type
2527
*/
2628
@SdkPublicApi
29+
@ThreadSafe
2730
public final class EnhancedTypeDocumentConfiguration implements ToCopyableBuilder<EnhancedTypeDocumentConfiguration.Builder,
2831
EnhancedTypeDocumentConfiguration> {
2932
private final boolean preserveEmptyObject;
@@ -82,6 +85,7 @@ public static Builder builder() {
8285
return new Builder();
8386
}
8487

88+
@NotThreadSafe
8589
public static final class Builder implements CopyableBuilder<Builder, EnhancedTypeDocumentConfiguration> {
8690
private Boolean preserveEmptyObject;
8791
private Boolean ignoreNulls;

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

+4
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@
1818
import java.util.Collections;
1919
import java.util.HashMap;
2020
import java.util.Map;
21+
import software.amazon.awssdk.annotations.NotThreadSafe;
2122
import software.amazon.awssdk.annotations.SdkPublicApi;
23+
import software.amazon.awssdk.annotations.ThreadSafe;
2224
import software.amazon.awssdk.services.dynamodb.model.AttributeValue;
2325

2426
/**
@@ -42,6 +44,7 @@
4244
* }
4345
*/
4446
@SdkPublicApi
47+
@ThreadSafe
4548
public final class Expression {
4649
private final String expression;
4750
private final Map<String, AttributeValue> expressionValues;
@@ -218,6 +221,7 @@ public int hashCode() {
218221
/**
219222
* A builder for {@link Expression}
220223
*/
224+
@NotThreadSafe
221225
public static final class Builder {
222226
private String expression;
223227
private Map<String, AttributeValue> expressionValues;

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

+2
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,13 @@
1717

1818
import java.util.Optional;
1919
import software.amazon.awssdk.annotations.SdkPublicApi;
20+
import software.amazon.awssdk.annotations.ThreadSafe;
2021

2122
/**
2223
* A metadata class that stores information about an index
2324
*/
2425
@SdkPublicApi
26+
@ThreadSafe
2527
public interface IndexMetadata {
2628
/**
2729
* The name of the index

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

+4
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@
2121
import java.util.HashMap;
2222
import java.util.Map;
2323
import java.util.Optional;
24+
import software.amazon.awssdk.annotations.NotThreadSafe;
2425
import software.amazon.awssdk.annotations.SdkPublicApi;
26+
import software.amazon.awssdk.annotations.ThreadSafe;
2527
import software.amazon.awssdk.core.SdkBytes;
2628
import software.amazon.awssdk.enhanced.dynamodb.internal.AttributeValues;
2729
import software.amazon.awssdk.services.dynamodb.model.AttributeValue;
@@ -36,6 +38,7 @@
3638
* The names of the keys themselves are not part of this object.
3739
*/
3840
@SdkPublicApi
41+
@ThreadSafe
3942
public final class Key {
4043
private final AttributeValue partitionValue;
4144
private final AttributeValue sortValue;
@@ -111,6 +114,7 @@ public Builder toBuilder() {
111114
/**
112115
* Builder for {@link Key}
113116
*/
117+
@NotThreadSafe
114118
public static final class Builder {
115119
private AttributeValue partitionValue;
116120
private AttributeValue sortValue;

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

+2
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,13 @@
1616
package software.amazon.awssdk.enhanced.dynamodb;
1717

1818
import software.amazon.awssdk.annotations.SdkPublicApi;
19+
import software.amazon.awssdk.annotations.ThreadSafe;
1920

2021
/**
2122
* A metadata class that stores information about a key attribute
2223
*/
2324
@SdkPublicApi
25+
@ThreadSafe
2426
public interface KeyAttributeMetadata {
2527
/**
2628
* The name of the key attribute

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

+2
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package software.amazon.awssdk.enhanced.dynamodb;
1717

1818
import software.amazon.awssdk.annotations.SdkPublicApi;
19+
import software.amazon.awssdk.annotations.ThreadSafe;
1920

2021
/**
2122
* Interface for a resource object that is part of either a {@link DynamoDbTable} or {@link DynamoDbAsyncTable}. This
@@ -26,6 +27,7 @@
2627
* @param <T> The type of the modelled object.
2728
*/
2829
@SdkPublicApi
30+
@ThreadSafe
2931
public interface MappedTableResource<T> {
3032
/**
3133
* Gets the {@link DynamoDbEnhancedClientExtension} associated with this mapped resource.

0 commit comments

Comments
 (0)