From 0f4858b440108a615277d650485802e09de585a2 Mon Sep 17 00:00:00 2001 From: Matthew Miller Date: Tue, 29 Mar 2022 16:08:32 -0700 Subject: [PATCH] Add @ThreadSafe or @NotThreadSafe annotations to each @SdkPublicApi in dynamodb-enhanced. --- .../awssdk/enhanced/dynamodb/AttributeConverterProvider.java | 2 ++ .../amazon/awssdk/enhanced/dynamodb/AttributeValueType.java | 2 ++ .../enhanced/dynamodb/DefaultAttributeConverterProvider.java | 2 ++ .../software/amazon/awssdk/enhanced/dynamodb/Document.java | 2 ++ .../amazon/awssdk/enhanced/dynamodb/DynamoDbAsyncIndex.java | 2 ++ .../amazon/awssdk/enhanced/dynamodb/DynamoDbAsyncTable.java | 2 ++ .../enhanced/dynamodb/DynamoDbEnhancedAsyncClient.java | 4 ++++ .../awssdk/enhanced/dynamodb/DynamoDbEnhancedClient.java | 4 ++++ .../enhanced/dynamodb/DynamoDbEnhancedClientExtension.java | 2 ++ .../awssdk/enhanced/dynamodb/DynamoDbEnhancedResource.java | 4 ++++ .../awssdk/enhanced/dynamodb/DynamoDbExtensionContext.java | 5 +++++ .../amazon/awssdk/enhanced/dynamodb/DynamoDbIndex.java | 2 ++ .../amazon/awssdk/enhanced/dynamodb/DynamoDbTable.java | 2 ++ .../enhanced/dynamodb/EnhancedTypeDocumentConfiguration.java | 4 ++++ .../software/amazon/awssdk/enhanced/dynamodb/Expression.java | 4 ++++ .../amazon/awssdk/enhanced/dynamodb/IndexMetadata.java | 2 ++ .../java/software/amazon/awssdk/enhanced/dynamodb/Key.java | 4 ++++ .../awssdk/enhanced/dynamodb/KeyAttributeMetadata.java | 2 ++ .../amazon/awssdk/enhanced/dynamodb/MappedTableResource.java | 2 ++ .../amazon/awssdk/enhanced/dynamodb/NestedAttributeName.java | 4 ++++ .../amazon/awssdk/enhanced/dynamodb/OperationContext.java | 2 ++ .../amazon/awssdk/enhanced/dynamodb/TableMetadata.java | 2 ++ .../amazon/awssdk/enhanced/dynamodb/TableSchema.java | 2 ++ .../extensions/AutoGeneratedTimestampRecordExtension.java | 4 ++++ .../enhanced/dynamodb/extensions/ReadModification.java | 4 ++++ .../dynamodb/extensions/VersionedRecordExtension.java | 4 ++++ .../enhanced/dynamodb/extensions/WriteModification.java | 4 ++++ .../enhanced/dynamodb/internal/AttributeConfiguration.java | 2 ++ .../internal/client/DefaultDynamoDbEnhancedAsyncClient.java | 2 ++ .../internal/client/DefaultDynamoDbEnhancedClient.java | 2 ++ .../internal/converter/attribute/ListAttributeConverter.java | 2 ++ .../internal/converter/attribute/MapAttributeConverter.java | 2 ++ .../internal/converter/attribute/SetAttributeConverter.java | 2 ++ .../converter/string/DefaultStringConverterProvider.java | 2 ++ .../internal/extensions/DefaultDynamoDbExtensionContext.java | 2 ++ .../enhanced/dynamodb/internal/immutable/ImmutableInfo.java | 2 ++ .../dynamodb/internal/mapper/StaticIndexMetadata.java | 2 ++ .../awssdk/enhanced/dynamodb/mapper/BeanTableSchema.java | 2 ++ .../awssdk/enhanced/dynamodb/mapper/ImmutableAttribute.java | 4 ++++ .../enhanced/dynamodb/mapper/ImmutableTableSchema.java | 2 ++ .../awssdk/enhanced/dynamodb/mapper/StaticAttribute.java | 4 ++++ .../awssdk/enhanced/dynamodb/mapper/StaticAttributeTag.java | 2 ++ .../awssdk/enhanced/dynamodb/mapper/StaticAttributeTags.java | 2 ++ .../enhanced/dynamodb/mapper/StaticImmutableTableSchema.java | 4 ++++ .../awssdk/enhanced/dynamodb/mapper/StaticTableMetadata.java | 4 ++++ .../awssdk/enhanced/dynamodb/mapper/StaticTableSchema.java | 4 ++++ .../awssdk/enhanced/dynamodb/mapper/StaticTableTag.java | 2 ++ .../awssdk/enhanced/dynamodb/mapper/UpdateBehavior.java | 2 ++ .../awssdk/enhanced/dynamodb/mapper/WrappedTableSchema.java | 2 ++ .../enhanced/dynamodb/model/BatchGetItemEnhancedRequest.java | 4 ++++ .../awssdk/enhanced/dynamodb/model/BatchGetResultPage.java | 4 ++++ .../enhanced/dynamodb/model/BatchGetResultPageIterable.java | 2 ++ .../enhanced/dynamodb/model/BatchGetResultPagePublisher.java | 2 ++ .../dynamodb/model/BatchWriteItemEnhancedRequest.java | 4 ++++ .../awssdk/enhanced/dynamodb/model/BatchWriteResult.java | 4 ++++ .../awssdk/enhanced/dynamodb/model/ConditionCheck.java | 4 ++++ .../enhanced/dynamodb/model/CreateTableEnhancedRequest.java | 4 ++++ .../enhanced/dynamodb/model/DeleteItemEnhancedRequest.java | 4 ++++ .../enhanced/dynamodb/model/DeleteItemEnhancedResponse.java | 4 ++++ .../dynamodb/model/DescribeTableEnhancedResponse.java | 4 ++++ .../dynamodb/model/EnhancedGlobalSecondaryIndex.java | 4 ++++ .../enhanced/dynamodb/model/EnhancedLocalSecondaryIndex.java | 4 ++++ .../enhanced/dynamodb/model/GetItemEnhancedRequest.java | 4 ++++ .../software/amazon/awssdk/enhanced/dynamodb/model/Page.java | 2 ++ .../amazon/awssdk/enhanced/dynamodb/model/PageIterable.java | 2 ++ .../amazon/awssdk/enhanced/dynamodb/model/PagePublisher.java | 2 ++ .../enhanced/dynamodb/model/PutItemEnhancedRequest.java | 4 ++++ .../enhanced/dynamodb/model/PutItemEnhancedResponse.java | 4 ++++ .../awssdk/enhanced/dynamodb/model/QueryConditional.java | 2 ++ .../awssdk/enhanced/dynamodb/model/QueryEnhancedRequest.java | 4 ++++ .../amazon/awssdk/enhanced/dynamodb/model/ReadBatch.java | 5 +++++ .../awssdk/enhanced/dynamodb/model/ScanEnhancedRequest.java | 4 ++++ .../dynamodb/model/TransactDeleteItemEnhancedRequest.java | 4 ++++ .../dynamodb/model/TransactGetItemsEnhancedRequest.java | 4 ++++ .../dynamodb/model/TransactPutItemEnhancedRequest.java | 4 ++++ .../dynamodb/model/TransactUpdateItemEnhancedRequest.java | 4 ++++ .../dynamodb/model/TransactWriteItemsEnhancedRequest.java | 4 ++++ .../enhanced/dynamodb/model/UpdateItemEnhancedRequest.java | 4 ++++ .../enhanced/dynamodb/model/UpdateItemEnhancedResponse.java | 4 ++++ .../amazon/awssdk/enhanced/dynamodb/model/WriteBatch.java | 4 ++++ 80 files changed, 246 insertions(+) diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/AttributeConverterProvider.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/AttributeConverterProvider.java index a20608535895..00e57562d9d0 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/AttributeConverterProvider.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/AttributeConverterProvider.java @@ -16,6 +16,7 @@ package software.amazon.awssdk.enhanced.dynamodb; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.enhanced.dynamodb.internal.converter.ConverterProviderResolver; import software.amazon.awssdk.services.dynamodb.model.AttributeValue; @@ -24,6 +25,7 @@ * converting a given {@link EnhancedType}. */ @SdkPublicApi +@ThreadSafe public interface AttributeConverterProvider { /** diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/AttributeValueType.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/AttributeValueType.java index 13e6bdb4d174..0808292b04dc 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/AttributeValueType.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/AttributeValueType.java @@ -16,9 +16,11 @@ package software.amazon.awssdk.enhanced.dynamodb; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.services.dynamodb.model.ScalarAttributeType; @SdkPublicApi +@ThreadSafe public enum AttributeValueType { B(ScalarAttributeType.B), // binary BOOL, // boolean diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/DefaultAttributeConverterProvider.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/DefaultAttributeConverterProvider.java index 8b8b6c5ccd1c..2fe8ab00d2a4 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/DefaultAttributeConverterProvider.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/DefaultAttributeConverterProvider.java @@ -22,6 +22,7 @@ import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import software.amazon.awssdk.annotations.Immutable; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkPublicApi; import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.enhanced.dynamodb.internal.converter.PrimitiveConverter; @@ -249,6 +250,7 @@ private static Builder getDefaultBuilder() { /** * A builder for configuring and creating {@link DefaultAttributeConverterProvider}s. */ + @NotThreadSafe public static class Builder { private List> converters = new ArrayList<>(); diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/Document.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/Document.java index db7c6493156a..0cc519e3734a 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/Document.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/Document.java @@ -16,6 +16,7 @@ package software.amazon.awssdk.enhanced.dynamodb; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; /** * A document representing a table item in the form of a map containing attributes and values. @@ -23,6 +24,7 @@ * Use the {@link #getItem(MappedTableResource)} method to transform the collection of attributes into a typed item. */ @SdkPublicApi +@ThreadSafe public interface Document { /** diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/DynamoDbAsyncIndex.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/DynamoDbAsyncIndex.java index a4c2bce7d9b8..cdf6047770ff 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/DynamoDbAsyncIndex.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/DynamoDbAsyncIndex.java @@ -17,6 +17,7 @@ import java.util.function.Consumer; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.core.async.SdkPublisher; import software.amazon.awssdk.enhanced.dynamodb.model.Page; import software.amazon.awssdk.enhanced.dynamodb.model.QueryConditional; @@ -33,6 +34,7 @@ * @param The type of the modelled object. */ @SdkPublicApi +@ThreadSafe public interface DynamoDbAsyncIndex { /** diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/DynamoDbAsyncTable.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/DynamoDbAsyncTable.java index d23d9d584c34..4516848ad18e 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/DynamoDbAsyncTable.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/DynamoDbAsyncTable.java @@ -18,6 +18,7 @@ import java.util.concurrent.CompletableFuture; import java.util.function.Consumer; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.enhanced.dynamodb.model.CreateTableEnhancedRequest; import software.amazon.awssdk.enhanced.dynamodb.model.DeleteItemEnhancedRequest; import software.amazon.awssdk.enhanced.dynamodb.model.DeleteItemEnhancedResponse; @@ -47,6 +48,7 @@ * @param The type of the modelled object. */ @SdkPublicApi +@ThreadSafe public interface DynamoDbAsyncTable extends MappedTableResource { /** * Returns a mapped index that can be used to execute commands against a secondary index belonging to the table diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/DynamoDbEnhancedAsyncClient.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/DynamoDbEnhancedAsyncClient.java index e7cb9ff746b7..d198326a8853 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/DynamoDbEnhancedAsyncClient.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/DynamoDbEnhancedAsyncClient.java @@ -18,7 +18,9 @@ import java.util.List; import java.util.concurrent.CompletableFuture; import java.util.function.Consumer; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.core.async.SdkPublisher; import software.amazon.awssdk.enhanced.dynamodb.internal.client.DefaultDynamoDbEnhancedAsyncClient; import software.amazon.awssdk.enhanced.dynamodb.model.BatchGetItemEnhancedRequest; @@ -42,6 +44,7 @@ * implementing classes. */ @SdkPublicApi +@ThreadSafe public interface DynamoDbEnhancedAsyncClient extends DynamoDbEnhancedResource { /** @@ -441,6 +444,7 @@ static DynamoDbEnhancedAsyncClient create() { /** * The builder definition for a {@link DynamoDbEnhancedAsyncClient}. */ + @NotThreadSafe interface Builder extends DynamoDbEnhancedResource.Builder { /** * The regular low-level SDK client to use with the enhanced client. diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/DynamoDbEnhancedClient.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/DynamoDbEnhancedClient.java index fe9dd66d09b4..94c86996943b 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/DynamoDbEnhancedClient.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/DynamoDbEnhancedClient.java @@ -17,7 +17,9 @@ import java.util.List; import java.util.function.Consumer; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.core.pagination.sync.SdkIterable; import software.amazon.awssdk.enhanced.dynamodb.internal.client.DefaultDynamoDbEnhancedClient; import software.amazon.awssdk.enhanced.dynamodb.model.BatchGetItemEnhancedRequest; @@ -42,6 +44,7 @@ * implementing classes. */ @SdkPublicApi +@ThreadSafe public interface DynamoDbEnhancedClient extends DynamoDbEnhancedResource { /** @@ -443,6 +446,7 @@ static DynamoDbEnhancedClient create() { /** * The builder definition for a {@link DynamoDbEnhancedClient}. */ + @NotThreadSafe interface Builder extends DynamoDbEnhancedResource.Builder { /** * The regular low-level SDK client to use with the enhanced client. diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/DynamoDbEnhancedClientExtension.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/DynamoDbEnhancedClientExtension.java index 13fbd52f16a2..b66f493bdac8 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/DynamoDbEnhancedClientExtension.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/DynamoDbEnhancedClientExtension.java @@ -16,6 +16,7 @@ package software.amazon.awssdk.enhanced.dynamodb; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.enhanced.dynamodb.extensions.ReadModification; import software.amazon.awssdk.enhanced.dynamodb.extensions.WriteModification; @@ -29,6 +30,7 @@ * calculation. */ @SdkPublicApi +@ThreadSafe public interface DynamoDbEnhancedClientExtension { /** * This hook is called just before an operation is going to write data to the database. The extension that diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/DynamoDbEnhancedResource.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/DynamoDbEnhancedResource.java index 0b63d1172139..af0d917f83e3 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/DynamoDbEnhancedResource.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/DynamoDbEnhancedResource.java @@ -16,18 +16,22 @@ package software.amazon.awssdk.enhanced.dynamodb; import java.util.List; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; /** * Shared interface components for {@link DynamoDbEnhancedClient} and {@link DynamoDbEnhancedAsyncClient}. Any common * methods implemented by both of those classes or their builders are declared here. */ @SdkPublicApi +@ThreadSafe public interface DynamoDbEnhancedResource { /** * Shared interface components for the builders of {@link DynamoDbEnhancedClient} and * {@link DynamoDbEnhancedAsyncClient} */ + @NotThreadSafe interface Builder { /** * Specifies the extensions to load with the enhanced client. The extensions will be loaded in the strict order diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/DynamoDbExtensionContext.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/DynamoDbExtensionContext.java index 61df7a7e80a1..851c23a35cf7 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/DynamoDbExtensionContext.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/DynamoDbExtensionContext.java @@ -17,6 +17,7 @@ import java.util.Map; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.enhanced.dynamodb.internal.operations.OperationName; import software.amazon.awssdk.services.dynamodb.model.AttributeValue; @@ -24,11 +25,13 @@ * A wrapper for the immutable context objects that are visible to the {@link DynamoDbEnhancedClientExtension}s. */ @SdkPublicApi +@ThreadSafe public final class DynamoDbExtensionContext { private DynamoDbExtensionContext() { } @SdkPublicApi + @ThreadSafe public interface Context { /** * @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() { * The state of the execution when the {@link DynamoDbEnhancedClientExtension#beforeWrite} method is invoked. */ @SdkPublicApi + @ThreadSafe public interface BeforeWrite extends Context { /** @@ -69,6 +73,7 @@ public interface BeforeWrite extends Context { * The state of the execution when the {@link DynamoDbEnhancedClientExtension#afterRead} method is invoked. */ @SdkPublicApi + @ThreadSafe public interface AfterRead extends Context { } } diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/DynamoDbIndex.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/DynamoDbIndex.java index a9725ae1557c..e36451278e26 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/DynamoDbIndex.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/DynamoDbIndex.java @@ -17,6 +17,7 @@ import java.util.function.Consumer; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.core.pagination.sync.SdkIterable; import software.amazon.awssdk.enhanced.dynamodb.model.Page; import software.amazon.awssdk.enhanced.dynamodb.model.QueryConditional; @@ -33,6 +34,7 @@ * @param The type of the modelled object. */ @SdkPublicApi +@ThreadSafe public interface DynamoDbIndex { /** diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/DynamoDbTable.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/DynamoDbTable.java index 16f2ac2cd3be..9c1a3e070724 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/DynamoDbTable.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/DynamoDbTable.java @@ -17,6 +17,7 @@ import java.util.function.Consumer; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.core.pagination.sync.SdkIterable; import software.amazon.awssdk.enhanced.dynamodb.model.CreateTableEnhancedRequest; import software.amazon.awssdk.enhanced.dynamodb.model.DeleteItemEnhancedRequest; @@ -47,6 +48,7 @@ * @param The type of the modelled object. */ @SdkPublicApi +@ThreadSafe public interface DynamoDbTable extends MappedTableResource { /** * Returns a mapped index that can be used to execute commands against a secondary index belonging to the table diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/EnhancedTypeDocumentConfiguration.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/EnhancedTypeDocumentConfiguration.java index 3c173f6dd75e..990f1a9b5af8 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/EnhancedTypeDocumentConfiguration.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/EnhancedTypeDocumentConfiguration.java @@ -16,7 +16,9 @@ package software.amazon.awssdk.enhanced.dynamodb; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.utils.builder.CopyableBuilder; import software.amazon.awssdk.utils.builder.ToCopyableBuilder; @@ -24,6 +26,7 @@ * Configuration for {@link EnhancedType} of document type */ @SdkPublicApi +@ThreadSafe public final class EnhancedTypeDocumentConfiguration implements ToCopyableBuilder { private final boolean preserveEmptyObject; @@ -82,6 +85,7 @@ public static Builder builder() { return new Builder(); } + @NotThreadSafe public static final class Builder implements CopyableBuilder { private Boolean preserveEmptyObject; private Boolean ignoreNulls; diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/Expression.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/Expression.java index 5f302849a766..a03fb188ac35 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/Expression.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/Expression.java @@ -18,7 +18,9 @@ import java.util.Collections; import java.util.HashMap; import java.util.Map; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** @@ -42,6 +44,7 @@ * } */ @SdkPublicApi +@ThreadSafe public final class Expression { private final String expression; private final Map expressionValues; @@ -218,6 +221,7 @@ public int hashCode() { /** * A builder for {@link Expression} */ + @NotThreadSafe public static final class Builder { private String expression; private Map expressionValues; diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/IndexMetadata.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/IndexMetadata.java index f38058102e14..a92941e174c2 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/IndexMetadata.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/IndexMetadata.java @@ -17,11 +17,13 @@ import java.util.Optional; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; /** * A metadata class that stores information about an index */ @SdkPublicApi +@ThreadSafe public interface IndexMetadata { /** * The name of the index diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/Key.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/Key.java index a3406787a42b..91ed7b1d924f 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/Key.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/Key.java @@ -21,7 +21,9 @@ import java.util.HashMap; import java.util.Map; import java.util.Optional; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.core.SdkBytes; import software.amazon.awssdk.enhanced.dynamodb.internal.AttributeValues; import software.amazon.awssdk.services.dynamodb.model.AttributeValue; @@ -36,6 +38,7 @@ * The names of the keys themselves are not part of this object. */ @SdkPublicApi +@ThreadSafe public final class Key { private final AttributeValue partitionValue; private final AttributeValue sortValue; @@ -111,6 +114,7 @@ public Builder toBuilder() { /** * Builder for {@link Key} */ + @NotThreadSafe public static final class Builder { private AttributeValue partitionValue; private AttributeValue sortValue; diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/KeyAttributeMetadata.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/KeyAttributeMetadata.java index b5b0826d30b8..b8680e5550da 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/KeyAttributeMetadata.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/KeyAttributeMetadata.java @@ -16,11 +16,13 @@ package software.amazon.awssdk.enhanced.dynamodb; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; /** * A metadata class that stores information about a key attribute */ @SdkPublicApi +@ThreadSafe public interface KeyAttributeMetadata { /** * The name of the key attribute diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/MappedTableResource.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/MappedTableResource.java index 528589e8fa85..6687e6b54308 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/MappedTableResource.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/MappedTableResource.java @@ -16,6 +16,7 @@ package software.amazon.awssdk.enhanced.dynamodb; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; /** * Interface for a resource object that is part of either a {@link DynamoDbTable} or {@link DynamoDbAsyncTable}. This @@ -26,6 +27,7 @@ * @param The type of the modelled object. */ @SdkPublicApi +@ThreadSafe public interface MappedTableResource { /** * Gets the {@link DynamoDbEnhancedClientExtension} associated with this mapped resource. diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/NestedAttributeName.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/NestedAttributeName.java index cdf9497878f7..4bab096b957a 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/NestedAttributeName.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/NestedAttributeName.java @@ -20,7 +20,9 @@ import java.util.Collections; import java.util.List; import java.util.stream.Collectors; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.enhanced.dynamodb.model.QueryEnhancedRequest; import software.amazon.awssdk.enhanced.dynamodb.model.ScanEnhancedRequest; import software.amazon.awssdk.utils.Validate; @@ -45,6 +47,7 @@ * */ @SdkPublicApi +@ThreadSafe public final class NestedAttributeName { private final List elements; @@ -147,6 +150,7 @@ public String toString() { /** * A builder for {@link NestedAttributeName}. */ + @NotThreadSafe public static class Builder { private List elements = null; diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/OperationContext.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/OperationContext.java index f0e48375bd8e..c22995112926 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/OperationContext.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/OperationContext.java @@ -16,6 +16,7 @@ package software.amazon.awssdk.enhanced.dynamodb; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; /** * A context object that is associated with a specific operation and identifies the resources that the operation is @@ -24,6 +25,7 @@ * This context is passed to and can be read by extension hooks (see {@link DynamoDbEnhancedClientExtension}). */ @SdkPublicApi +@ThreadSafe public interface OperationContext { /** * The name of the table being operated on diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/TableMetadata.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/TableMetadata.java index a7249a5a7bfa..ee3ad5b46ba8 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/TableMetadata.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/TableMetadata.java @@ -19,12 +19,14 @@ import java.util.Map; import java.util.Optional; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.services.dynamodb.model.ScalarAttributeType; /** * Interface for an object the stores structural information about a DynamoDb table. */ @SdkPublicApi +@ThreadSafe public interface TableMetadata { /** * Returns the attribute name of the partition key for an index. diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/TableSchema.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/TableSchema.java index f260becf3611..90d07361c88f 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/TableSchema.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/TableSchema.java @@ -19,6 +19,7 @@ import java.util.List; import java.util.Map; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.enhanced.dynamodb.mapper.BeanTableSchema; import software.amazon.awssdk.enhanced.dynamodb.mapper.ImmutableTableSchema; import software.amazon.awssdk.enhanced.dynamodb.mapper.StaticImmutableTableSchema; @@ -36,6 +37,7 @@ * @param The type of model object that is being mapped to records in the DynamoDb table. */ @SdkPublicApi +@ThreadSafe public interface TableSchema { /** * Returns a builder for the {@link StaticTableSchema} implementation of this interface which allows all attributes, diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/extensions/AutoGeneratedTimestampRecordExtension.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/extensions/AutoGeneratedTimestampRecordExtension.java index 475968341acd..2ac27d918202 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/extensions/AutoGeneratedTimestampRecordExtension.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/extensions/AutoGeneratedTimestampRecordExtension.java @@ -22,7 +22,9 @@ import java.util.HashMap; import java.util.Map; import java.util.function.Consumer; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.enhanced.dynamodb.AttributeConverter; import software.amazon.awssdk.enhanced.dynamodb.AttributeValueType; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedClientExtension; @@ -64,6 +66,7 @@ * be automatically updated. This extension applies the conversions as defined in the attribute convertor. */ @SdkPublicApi +@ThreadSafe public final class AutoGeneratedTimestampRecordExtension implements DynamoDbEnhancedClientExtension { private static final String CUSTOM_METADATA_KEY = "AutoGeneratedTimestampExtension:AutoGeneratedTimestampAttribute"; private static final AutoGeneratedTimestampAttribute @@ -148,6 +151,7 @@ private void insertTimestampInItemToTransform(Map itemTo /** * Builder for a {@link AutoGeneratedTimestampRecordExtension} */ + @NotThreadSafe public static final class Builder { private Clock baseClock; diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/extensions/ReadModification.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/extensions/ReadModification.java index cc2e1920c559..f3d3ce90f880 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/extensions/ReadModification.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/extensions/ReadModification.java @@ -16,7 +16,9 @@ package software.amazon.awssdk.enhanced.dynamodb.extensions; import java.util.Map; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** @@ -24,6 +26,7 @@ * be completely substituted in place of the item that was actually read. */ @SdkPublicApi +@ThreadSafe public final class ReadModification { private final Map transformedItem; @@ -58,6 +61,7 @@ public int hashCode() { return transformedItem != null ? transformedItem.hashCode() : 0; } + @NotThreadSafe public static final class Builder { private Map transformedItem; diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/extensions/VersionedRecordExtension.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/extensions/VersionedRecordExtension.java index e618b57f66c4..fa444fa2292f 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/extensions/VersionedRecordExtension.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/extensions/VersionedRecordExtension.java @@ -23,7 +23,9 @@ import java.util.Optional; import java.util.function.Consumer; import java.util.function.Function; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.enhanced.dynamodb.AttributeValueType; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedClientExtension; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbExtensionContext; @@ -52,6 +54,7 @@ * written to the database, the record version number will be automatically incremented. */ @SdkPublicApi +@ThreadSafe public final class VersionedRecordExtension implements DynamoDbEnhancedClientExtension { private static final Function EXPRESSION_KEY_MAPPER = key -> ":old_" + key + "_value"; private static final String CUSTOM_METADATA_KEY = "VersionedRecordExtension:VersionAttribute"; @@ -135,6 +138,7 @@ public WriteModification beforeWrite(DynamoDbExtensionContext.BeforeWrite contex .build(); } + @NotThreadSafe public static final class Builder { private Builder() { } diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/extensions/WriteModification.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/extensions/WriteModification.java index 85297f0352b6..6a34a1e632e3 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/extensions/WriteModification.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/extensions/WriteModification.java @@ -16,7 +16,9 @@ package software.amazon.awssdk.enhanced.dynamodb.extensions; import java.util.Map; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.enhanced.dynamodb.Expression; import software.amazon.awssdk.services.dynamodb.model.AttributeValue; @@ -30,6 +32,7 @@ * and added as a parameter to the write operation. */ @SdkPublicApi +@ThreadSafe public final class WriteModification { private final Map transformedItem; private final Expression additionalConditionalExpression; @@ -77,6 +80,7 @@ public int hashCode() { return result; } + @NotThreadSafe public static final class Builder { private Map transformedItem; private Expression additionalConditionalExpression; diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/AttributeConfiguration.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/AttributeConfiguration.java index 53df0f2c54cd..27d59efb917c 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/AttributeConfiguration.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/AttributeConfiguration.java @@ -15,6 +15,7 @@ package software.amazon.awssdk.enhanced.dynamodb.internal; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkInternalApi; /** @@ -42,6 +43,7 @@ public static Builder builder() { return new Builder(); } + @NotThreadSafe public static final class Builder { private boolean preserveEmptyObject; private boolean ignoreNulls; diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/client/DefaultDynamoDbEnhancedAsyncClient.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/client/DefaultDynamoDbEnhancedAsyncClient.java index 0e8090718407..4e0c5dea83c6 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/client/DefaultDynamoDbEnhancedAsyncClient.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/client/DefaultDynamoDbEnhancedAsyncClient.java @@ -20,6 +20,7 @@ import java.util.List; import java.util.concurrent.CompletableFuture; import java.util.function.Consumer; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkInternalApi; import software.amazon.awssdk.enhanced.dynamodb.Document; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedAsyncClient; @@ -153,6 +154,7 @@ public int hashCode() { return result; } + @NotThreadSafe public static final class Builder implements DynamoDbEnhancedAsyncClient.Builder { private DynamoDbAsyncClient dynamoDbClient; private List dynamoDbEnhancedClientExtensions = diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/client/DefaultDynamoDbEnhancedClient.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/client/DefaultDynamoDbEnhancedClient.java index c68bccef057f..48cbd5a616ab 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/client/DefaultDynamoDbEnhancedClient.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/client/DefaultDynamoDbEnhancedClient.java @@ -19,6 +19,7 @@ import java.util.Arrays; import java.util.List; import java.util.function.Consumer; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkInternalApi; import software.amazon.awssdk.enhanced.dynamodb.Document; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedClient; @@ -148,6 +149,7 @@ public int hashCode() { return result; } + @NotThreadSafe public static final class Builder implements DynamoDbEnhancedClient.Builder { private DynamoDbClient dynamoDbClient; private List dynamoDbEnhancedClientExtensions = diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/converter/attribute/ListAttributeConverter.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/converter/attribute/ListAttributeConverter.java index 40984c049334..eeda7e035621 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/converter/attribute/ListAttributeConverter.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/converter/attribute/ListAttributeConverter.java @@ -23,6 +23,7 @@ import java.util.function.Function; import java.util.function.Supplier; import software.amazon.awssdk.annotations.Immutable; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkInternalApi; import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.core.SdkBytes; @@ -190,6 +191,7 @@ private T convertCollection(Collection collection, } } + @NotThreadSafe public static final class Builder, U> { private final EnhancedType collectionType; private Supplier collectionConstructor; diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/converter/attribute/MapAttributeConverter.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/converter/attribute/MapAttributeConverter.java index 54a683acbcd9..edaa999ac98b 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/converter/attribute/MapAttributeConverter.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/converter/attribute/MapAttributeConverter.java @@ -24,6 +24,7 @@ import java.util.concurrent.ConcurrentMap; import java.util.function.Supplier; import software.amazon.awssdk.annotations.Immutable; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkInternalApi; import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.enhanced.dynamodb.AttributeConverter; @@ -181,6 +182,7 @@ public T convertMap(Map value) { } } + @NotThreadSafe public static final class Builder, K, V> { private final EnhancedType mapType; diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/converter/attribute/SetAttributeConverter.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/converter/attribute/SetAttributeConverter.java index 0346c59b5bf1..8455e0b76d7e 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/converter/attribute/SetAttributeConverter.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/converter/attribute/SetAttributeConverter.java @@ -25,6 +25,7 @@ import java.util.function.Supplier; import java.util.stream.Collectors; import software.amazon.awssdk.annotations.Immutable; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkInternalApi; import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.core.SdkBytes; @@ -247,6 +248,7 @@ public AttributeValue flatten(List listOfAttributeValues) { } } + @NotThreadSafe public static final class Builder, U> { private final EnhancedType collectionType; private Supplier collectionConstructor; diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/converter/string/DefaultStringConverterProvider.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/converter/string/DefaultStringConverterProvider.java index b4303f557c30..c1951d430f7b 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/converter/string/DefaultStringConverterProvider.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/converter/string/DefaultStringConverterProvider.java @@ -20,6 +20,7 @@ import java.util.List; import java.util.concurrent.ConcurrentHashMap; import software.amazon.awssdk.annotations.Immutable; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkInternalApi; import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.enhanced.dynamodb.EnhancedType; @@ -161,6 +162,7 @@ public StringConverter converterFor(EnhancedType enhancedType) { /** * A builder for configuring and creating {@link DefaultStringConverterProvider}s. */ + @NotThreadSafe public static class Builder { private List> converters = new ArrayList<>(); diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/extensions/DefaultDynamoDbExtensionContext.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/extensions/DefaultDynamoDbExtensionContext.java index 588440965f20..4de76614647e 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/extensions/DefaultDynamoDbExtensionContext.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/extensions/DefaultDynamoDbExtensionContext.java @@ -17,6 +17,7 @@ import java.util.Map; import java.util.Objects; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkInternalApi; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbExtensionContext; import software.amazon.awssdk.enhanced.dynamodb.OperationContext; @@ -111,6 +112,7 @@ public int hashCode() { return result; } + @NotThreadSafe public static final class Builder { private Map items; private OperationContext operationContext; diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/immutable/ImmutableInfo.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/immutable/ImmutableInfo.java index d64155345fa6..06c2e6651b1b 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/immutable/ImmutableInfo.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/immutable/ImmutableInfo.java @@ -18,6 +18,7 @@ import java.lang.reflect.Method; import java.util.Collection; import java.util.Optional; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkInternalApi; @SdkInternalApi @@ -60,6 +61,7 @@ public static Builder builder(Class immutableClass) { return new Builder<>(immutableClass); } + @NotThreadSafe public static final class Builder { private final Class immutableClass; private Class builderClass; diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/mapper/StaticIndexMetadata.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/mapper/StaticIndexMetadata.java index fe54ab78b2c7..4d253b82ba57 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/mapper/StaticIndexMetadata.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/mapper/StaticIndexMetadata.java @@ -16,6 +16,7 @@ package software.amazon.awssdk.enhanced.dynamodb.internal.mapper; import java.util.Optional; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkInternalApi; import software.amazon.awssdk.enhanced.dynamodb.IndexMetadata; import software.amazon.awssdk.enhanced.dynamodb.KeyAttributeMetadata; @@ -57,6 +58,7 @@ public Optional sortKey() { return Optional.ofNullable(this.sortKey); } + @NotThreadSafe public static class Builder { private String name; private KeyAttributeMetadata partitionKey; diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/BeanTableSchema.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/BeanTableSchema.java index ca48cbc46e31..87ce87ab247a 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/BeanTableSchema.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/BeanTableSchema.java @@ -40,6 +40,7 @@ import java.util.stream.Collectors; import java.util.stream.Stream; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.enhanced.dynamodb.AttributeConverter; import software.amazon.awssdk.enhanced.dynamodb.AttributeConverterProvider; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedClient; @@ -104,6 +105,7 @@ * @param The type of object that this {@link TableSchema} maps to. */ @SdkPublicApi +@ThreadSafe public final class BeanTableSchema extends WrappedTableSchema> { private static final String ATTRIBUTE_TAG_STATIC_SUPPLIER_NAME = "attributeTagFor"; diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/ImmutableAttribute.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/ImmutableAttribute.java index b5b3f9f8c7b9..d22f87af61a9 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/ImmutableAttribute.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/ImmutableAttribute.java @@ -22,7 +22,9 @@ import java.util.List; import java.util.function.BiConsumer; import java.util.function.Function; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.enhanced.dynamodb.AttributeConverter; import software.amazon.awssdk.enhanced.dynamodb.AttributeConverterProvider; import software.amazon.awssdk.enhanced.dynamodb.EnhancedType; @@ -58,6 +60,7 @@ * @param the class that the value of this attribute converts to. */ @SdkPublicApi +@ThreadSafe public final class ImmutableAttribute { private final String name; private final Function getter; @@ -171,6 +174,7 @@ private AttributeConverter converterFrom(AttributeConverterProvider attribute * @param the class of the item this attribute maps into. * @param the class that the value of this attribute converts to. */ + @NotThreadSafe public static final class Builder { private final EnhancedType type; private String name; diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/ImmutableTableSchema.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/ImmutableTableSchema.java index 265a71870444..4d31b009ee07 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/ImmutableTableSchema.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/ImmutableTableSchema.java @@ -36,6 +36,7 @@ import java.util.stream.Collectors; import java.util.stream.Stream; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.enhanced.dynamodb.AttributeConverter; import software.amazon.awssdk.enhanced.dynamodb.AttributeConverterProvider; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedClient; @@ -104,6 +105,7 @@ * @param The type of object that this {@link TableSchema} maps to. */ @SdkPublicApi +@ThreadSafe public final class ImmutableTableSchema extends WrappedTableSchema> { private static final String ATTRIBUTE_TAG_STATIC_SUPPLIER_NAME = "attributeTagFor"; diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/StaticAttribute.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/StaticAttribute.java index 68f9efca58c3..2957311d7417 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/StaticAttribute.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/StaticAttribute.java @@ -19,7 +19,9 @@ import java.util.function.BiConsumer; import java.util.function.Consumer; import java.util.function.Function; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.enhanced.dynamodb.AttributeConverter; import software.amazon.awssdk.enhanced.dynamodb.AttributeConverterProvider; import software.amazon.awssdk.enhanced.dynamodb.EnhancedType; @@ -52,6 +54,7 @@ * @param the class that the value of this attribute converts to. */ @SdkPublicApi +@ThreadSafe public final class StaticAttribute { private final ImmutableAttribute delegateAttribute; @@ -139,6 +142,7 @@ ImmutableAttribute toImmutableAttribute() { * @param the class of the item this attribute maps into. * @param the class that the value of this attribute converts to. */ + @NotThreadSafe public static final class Builder { private final ImmutableAttribute.Builder delegateBuilder; diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/StaticAttributeTag.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/StaticAttributeTag.java index 52b464539d2b..f60118a529ac 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/StaticAttributeTag.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/StaticAttributeTag.java @@ -17,6 +17,7 @@ import java.util.function.Consumer; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.enhanced.dynamodb.AttributeValueType; import software.amazon.awssdk.enhanced.dynamodb.EnhancedType; @@ -30,6 +31,7 @@ * {@link StaticAttributeTags}. */ @SdkPublicApi +@ThreadSafe public interface StaticAttributeTag { /** * A function that modifies an existing {@link StaticTableSchema.Builder} when this tag is applied to a specific diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/StaticAttributeTags.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/StaticAttributeTags.java index 6bd6255a4caf..fae18ba00e93 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/StaticAttributeTags.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/StaticAttributeTags.java @@ -19,6 +19,7 @@ import java.util.function.BiConsumer; import java.util.function.Consumer; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.enhanced.dynamodb.AttributeValueType; import software.amazon.awssdk.enhanced.dynamodb.TableMetadata; import software.amazon.awssdk.enhanced.dynamodb.internal.mapper.UpdateBehaviorTag; @@ -28,6 +29,7 @@ * secondary keys in your {@link StaticTableSchema} definitions. */ @SdkPublicApi +@ThreadSafe public final class StaticAttributeTags { private static final StaticAttributeTag PRIMARY_PARTITION_KEY_SINGLETON = new KeyAttributeTag((tableMetadataBuilder, attribute) -> diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/StaticImmutableTableSchema.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/StaticImmutableTableSchema.java index 4d09b2da81e2..efe41d41d7b1 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/StaticImmutableTableSchema.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/StaticImmutableTableSchema.java @@ -33,7 +33,9 @@ import java.util.function.Function; import java.util.function.Supplier; import java.util.stream.Stream; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.enhanced.dynamodb.AttributeConverter; import software.amazon.awssdk.enhanced.dynamodb.AttributeConverterProvider; import software.amazon.awssdk.enhanced.dynamodb.DefaultAttributeConverterProvider; @@ -74,6 +76,7 @@ * } */ @SdkPublicApi +@ThreadSafe public final class StaticImmutableTableSchema implements TableSchema { private final List> attributeMappers; private final Supplier newBuilderSupplier; @@ -225,6 +228,7 @@ public static Builder builder(Class itemClass, Class builderC * @param The immutable data item class object that the {@link StaticImmutableTableSchema} is to map to. * @param The builder class object that can be used to construct instances of the immutable data item. */ + @NotThreadSafe public static final class Builder { private final Class itemClass; private final Class builderClass; diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/StaticTableMetadata.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/StaticTableMetadata.java index efcb0e2bc20a..1f3dfa7b7723 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/StaticTableMetadata.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/StaticTableMetadata.java @@ -23,7 +23,9 @@ import java.util.Optional; import java.util.stream.Collectors; import java.util.stream.Stream; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.enhanced.dynamodb.AttributeValueType; import software.amazon.awssdk.enhanced.dynamodb.IndexMetadata; import software.amazon.awssdk.enhanced.dynamodb.KeyAttributeMetadata; @@ -38,6 +40,7 @@ * and {@link StaticTableTag} which permit manipulation of the table metadata. */ @SdkPublicApi +@ThreadSafe public final class StaticTableMetadata implements TableMetadata { private final Map customMetadata; private final Map indexByNameMap; @@ -195,6 +198,7 @@ public int hashCode() { /** * Builder for {@link StaticTableMetadata} */ + @NotThreadSafe public static class Builder { private final Map customMetadata = new LinkedHashMap<>(); private final Map indexByNameMap = new LinkedHashMap<>(); diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/StaticTableSchema.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/StaticTableSchema.java index 7dfdcd1f5023..5d8dbfd94b76 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/StaticTableSchema.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/StaticTableSchema.java @@ -23,7 +23,9 @@ import java.util.function.Function; import java.util.function.Supplier; import java.util.stream.Collectors; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.enhanced.dynamodb.AttributeConverter; import software.amazon.awssdk.enhanced.dynamodb.AttributeConverterProvider; import software.amazon.awssdk.enhanced.dynamodb.DefaultAttributeConverterProvider; @@ -61,6 +63,7 @@ * } */ @SdkPublicApi +@ThreadSafe public final class StaticTableSchema extends WrappedTableSchema> { private StaticTableSchema(Builder builder) { super(builder.delegateBuilder.build()); @@ -79,6 +82,7 @@ public static Builder builder(Class itemClass) { * Builder for a {@link StaticTableSchema} * @param The data item type that the {@link StaticTableSchema} this builder will build is to map to. */ + @NotThreadSafe public static final class Builder { private final StaticImmutableTableSchema.Builder delegateBuilder; private final Class itemClass; diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/StaticTableTag.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/StaticTableTag.java index f8657e0649d8..50806cae418a 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/StaticTableTag.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/StaticTableTag.java @@ -17,6 +17,7 @@ import java.util.function.Consumer; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; /** * Interface for a tag that can be applied to any {@link StaticTableSchema}. When the table schema is instantiated, @@ -24,6 +25,7 @@ * associated with the table. */ @SdkPublicApi +@ThreadSafe public interface StaticTableTag { /** * A function that modifies an existing {@link StaticTableSchema.Builder} when this tag is applied to a table. This diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/UpdateBehavior.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/UpdateBehavior.java index f4d78deb7d49..d6b6fd8e661e 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/UpdateBehavior.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/UpdateBehavior.java @@ -16,6 +16,7 @@ package software.amazon.awssdk.enhanced.dynamodb.mapper; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; /** * Update behaviors that can be applied to individual attributes. This behavior will only apply to 'update' operations @@ -25,6 +26,7 @@ * applied. */ @SdkPublicApi +@ThreadSafe public enum UpdateBehavior { /** * Always overwrite with the new value if one is provided, or remove any existing value if a null value is diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/WrappedTableSchema.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/WrappedTableSchema.java index 542d8e91b1e8..2b4e40c70fdb 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/WrappedTableSchema.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/WrappedTableSchema.java @@ -19,6 +19,7 @@ import java.util.List; import java.util.Map; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.enhanced.dynamodb.AttributeConverter; import software.amazon.awssdk.enhanced.dynamodb.EnhancedType; import software.amazon.awssdk.enhanced.dynamodb.TableMetadata; @@ -32,6 +33,7 @@ * @param The actual type of the {@link TableSchema} being proxied. */ @SdkPublicApi +@ThreadSafe public abstract class WrappedTableSchema> implements TableSchema { private final R delegateTableSchema; diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/BatchGetItemEnhancedRequest.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/BatchGetItemEnhancedRequest.java index 0ae91348ef90..9c360aa9f225 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/BatchGetItemEnhancedRequest.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/BatchGetItemEnhancedRequest.java @@ -20,7 +20,9 @@ import java.util.Collection; import java.util.Collections; import java.util.List; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedClient; /** @@ -30,6 +32,7 @@ * A request contains references to keys and tables organized into one {@link ReadBatch} object per queried table. */ @SdkPublicApi +@ThreadSafe public final class BatchGetItemEnhancedRequest { private final List readBatches; @@ -85,6 +88,7 @@ private static List getListIfExist(List readBatches) { /** * A builder that is used to create a request with the desired parameters. */ + @NotThreadSafe public static final class Builder { private List readBatches; diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/BatchGetResultPage.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/BatchGetResultPage.java index b276dfec5653..fbb5000a74b6 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/BatchGetResultPage.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/BatchGetResultPage.java @@ -23,7 +23,9 @@ import java.util.Map; import java.util.Optional; import java.util.stream.Collectors; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedClient; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedClientExtension; import software.amazon.awssdk.enhanced.dynamodb.Key; @@ -41,6 +43,7 @@ * to retrieve items from that table in the page. */ @SdkPublicApi +@ThreadSafe public final class BatchGetResultPage { private final BatchGetItemResponse batchGetItemResponse; private final DynamoDbEnhancedClientExtension dynamoDbEnhancedClientExtension; @@ -111,6 +114,7 @@ public List unprocessedKeysForTable(MappedTableResource mappedTable) { /** * A builder that is used to create a result object with the desired parameters. */ + @NotThreadSafe public static final class Builder { private BatchGetItemResponse batchGetItemResponse; diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/BatchGetResultPageIterable.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/BatchGetResultPageIterable.java index 5a68e3fba8b5..47021cc8a30a 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/BatchGetResultPageIterable.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/BatchGetResultPageIterable.java @@ -16,6 +16,7 @@ package software.amazon.awssdk.enhanced.dynamodb.model; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.core.pagination.sync.PaginatedItemsIterable; import software.amazon.awssdk.core.pagination.sync.SdkIterable; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedClient; @@ -52,6 +53,7 @@ * */ @SdkPublicApi +@ThreadSafe public interface BatchGetResultPageIterable extends SdkIterable { static BatchGetResultPageIterable create(SdkIterable pageIterable) { diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/BatchGetResultPagePublisher.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/BatchGetResultPagePublisher.java index 9ce93dbe4118..ba72d350f9dc 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/BatchGetResultPagePublisher.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/BatchGetResultPagePublisher.java @@ -16,6 +16,7 @@ package software.amazon.awssdk.enhanced.dynamodb.model; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.core.async.SdkPublisher; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedAsyncClient; import software.amazon.awssdk.enhanced.dynamodb.MappedTableResource; @@ -49,6 +50,7 @@ * */ @SdkPublicApi +@ThreadSafe public interface BatchGetResultPagePublisher extends SdkPublisher { /** diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/BatchWriteItemEnhancedRequest.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/BatchWriteItemEnhancedRequest.java index 9f882d87e771..7f935835e439 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/BatchWriteItemEnhancedRequest.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/BatchWriteItemEnhancedRequest.java @@ -20,7 +20,9 @@ import java.util.Collection; import java.util.Collections; import java.util.List; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedClient; /** @@ -31,6 +33,7 @@ * organized into one {@link WriteBatch} object per accessed table. */ @SdkPublicApi +@ThreadSafe public final class BatchWriteItemEnhancedRequest { private final List writeBatches; @@ -86,6 +89,7 @@ private static List getListIfExist(List writeBatches) { /** * A builder that is used to create a request with the desired parameters. */ + @NotThreadSafe public static final class Builder { private List writeBatches; diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/BatchWriteResult.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/BatchWriteResult.java index 118fdf4733a4..2a7932fd4699 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/BatchWriteResult.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/BatchWriteResult.java @@ -22,7 +22,9 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedClient; import software.amazon.awssdk.enhanced.dynamodb.Key; import software.amazon.awssdk.enhanced.dynamodb.MappedTableResource; @@ -45,6 +47,7 @@ * */ @SdkPublicApi +@ThreadSafe public final class BatchWriteResult { private final Map> unprocessedRequests; @@ -108,6 +111,7 @@ public List unprocessedDeleteItemsForTable(MappedTableResource mappedTab /** * A builder that is used to create a result with the desired parameters. */ + @NotThreadSafe public static final class Builder { private Map> unprocessedRequests; diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/ConditionCheck.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/ConditionCheck.java index 92c82a2a8c4a..d8d227a19d0c 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/ConditionCheck.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/ConditionCheck.java @@ -17,7 +17,9 @@ import java.util.Objects; import java.util.function.Consumer; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedClient; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedClientExtension; import software.amazon.awssdk.enhanced.dynamodb.Expression; @@ -39,6 +41,7 @@ * @param The type of the modelled object. */ @SdkPublicApi +@ThreadSafe public final class ConditionCheck implements TransactableWriteOperation { private final Key key; private final Expression conditionExpression; @@ -161,6 +164,7 @@ public TransactWriteItem generateTransactWriteItem(TableSchema tableSchema, *

* A valid builder must define both a {@link Key} and an {@link Expression}. */ + @NotThreadSafe public static final class Builder { private Key key; private Expression conditionExpression; diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/CreateTableEnhancedRequest.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/CreateTableEnhancedRequest.java index e40fa589a5e0..152fba9abccf 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/CreateTableEnhancedRequest.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/CreateTableEnhancedRequest.java @@ -20,7 +20,9 @@ import java.util.function.Consumer; import java.util.stream.Collectors; import java.util.stream.Stream; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbAsyncTable; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbTable; import software.amazon.awssdk.services.dynamodb.model.ProvisionedThroughput; @@ -33,6 +35,7 @@ * All parameters are optional. */ @SdkPublicApi +@ThreadSafe public final class CreateTableEnhancedRequest { private final ProvisionedThroughput provisionedThroughput; private final Collection localSecondaryIndices; @@ -115,6 +118,7 @@ public int hashCode() { /** * A builder that is used to create a request with the desired parameters. */ + @NotThreadSafe public static final class Builder { private ProvisionedThroughput provisionedThroughput; private Collection localSecondaryIndices; diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/DeleteItemEnhancedRequest.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/DeleteItemEnhancedRequest.java index 34870460a854..92b175cb01cd 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/DeleteItemEnhancedRequest.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/DeleteItemEnhancedRequest.java @@ -17,7 +17,9 @@ import java.util.Objects; import java.util.function.Consumer; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbAsyncTable; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbTable; import software.amazon.awssdk.enhanced.dynamodb.Expression; @@ -35,6 +37,7 @@ * A valid request object must contain a primary {@link Key} to reference the item to delete. */ @SdkPublicApi +@ThreadSafe public final class DeleteItemEnhancedRequest { private final Key key; @@ -148,6 +151,7 @@ public int hashCode() { *

* Note: A valid request builder must define a {@link Key}. */ + @NotThreadSafe public static final class Builder { private Key key; private Expression conditionExpression; diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/DeleteItemEnhancedResponse.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/DeleteItemEnhancedResponse.java index 9738c714aba1..de5bc1254a6d 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/DeleteItemEnhancedResponse.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/DeleteItemEnhancedResponse.java @@ -16,7 +16,9 @@ package software.amazon.awssdk.enhanced.dynamodb.model; import java.util.Objects; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbAsyncTable; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbTable; import software.amazon.awssdk.services.dynamodb.model.ConsumedCapacity; @@ -31,6 +33,7 @@ * @param The type of the item. */ @SdkPublicApi +@ThreadSafe public final class DeleteItemEnhancedResponse { private final T attributes; private final ConsumedCapacity consumedCapacity; @@ -94,6 +97,7 @@ public int hashCode() { return result; } + @NotThreadSafe public static final class Builder { private T attributes; private ConsumedCapacity consumedCapacity; diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/DescribeTableEnhancedResponse.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/DescribeTableEnhancedResponse.java index b7c662241a02..e5e656627433 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/DescribeTableEnhancedResponse.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/DescribeTableEnhancedResponse.java @@ -16,7 +16,9 @@ package software.amazon.awssdk.enhanced.dynamodb.model; import java.util.Objects; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbAsyncTable; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbTable; import software.amazon.awssdk.services.dynamodb.model.DescribeTableResponse; @@ -29,6 +31,7 @@ * {@link DynamoDbTable#describeTable()} and {@link DynamoDbAsyncTable#describeTable()} */ @SdkPublicApi +@ThreadSafe public final class DescribeTableEnhancedResponse { private final DescribeTableResponse response; @@ -75,6 +78,7 @@ public static Builder builder() { return new Builder(); } + @NotThreadSafe public static final class Builder { private DescribeTableResponse response; diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/EnhancedGlobalSecondaryIndex.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/EnhancedGlobalSecondaryIndex.java index 869c223ef252..36ef7dad1a6c 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/EnhancedGlobalSecondaryIndex.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/EnhancedGlobalSecondaryIndex.java @@ -16,7 +16,9 @@ package software.amazon.awssdk.enhanced.dynamodb.model; import java.util.function.Consumer; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.services.dynamodb.model.Projection; import software.amazon.awssdk.services.dynamodb.model.ProvisionedThroughput; import software.amazon.awssdk.utils.Validate; @@ -26,6 +28,7 @@ * 'createTable' operation in the enhanced client. */ @SdkPublicApi +@ThreadSafe public final class EnhancedGlobalSecondaryIndex { private final String indexName; private final Projection projection; @@ -108,6 +111,7 @@ public int hashCode() { /** * A builder for {@link EnhancedGlobalSecondaryIndex} */ + @NotThreadSafe public static final class Builder { private String indexName; private Projection projection; diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/EnhancedLocalSecondaryIndex.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/EnhancedLocalSecondaryIndex.java index 7512ac9c4300..3e7120df2ee7 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/EnhancedLocalSecondaryIndex.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/EnhancedLocalSecondaryIndex.java @@ -16,7 +16,9 @@ package software.amazon.awssdk.enhanced.dynamodb.model; import java.util.function.Consumer; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.services.dynamodb.model.Projection; import software.amazon.awssdk.utils.Validate; @@ -25,6 +27,7 @@ * 'createTable' operation in the enhanced client. */ @SdkPublicApi +@ThreadSafe public final class EnhancedLocalSecondaryIndex { private final String indexName; private final Projection projection; @@ -89,6 +92,7 @@ public int hashCode() { /** * A builder for {@link EnhancedLocalSecondaryIndex} */ + @NotThreadSafe public static final class Builder { private String indexName; private Projection projection; diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/GetItemEnhancedRequest.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/GetItemEnhancedRequest.java index 7025bb35eb3a..acb6727288c4 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/GetItemEnhancedRequest.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/GetItemEnhancedRequest.java @@ -16,7 +16,9 @@ package software.amazon.awssdk.enhanced.dynamodb.model; import java.util.function.Consumer; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbAsyncTable; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbTable; import software.amazon.awssdk.enhanced.dynamodb.Key; @@ -28,6 +30,7 @@ * A valid request object must contain a primary {@link Key} to reference the item to get. */ @SdkPublicApi +@ThreadSafe public final class GetItemEnhancedRequest { private final Key key; @@ -96,6 +99,7 @@ public int hashCode() { *

* Note: A valid request builder must define a {@link Key}. */ + @NotThreadSafe public static final class Builder { private Key key; private Boolean consistentRead; diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/Page.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/Page.java index 206ad838e55f..a10808dffa5c 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/Page.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/Page.java @@ -18,6 +18,7 @@ import java.util.List; import java.util.Map; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.services.dynamodb.model.AttributeValue; import software.amazon.awssdk.utils.ToString; @@ -28,6 +29,7 @@ * @param The modelled type of the object that has been read. */ @SdkPublicApi +@ThreadSafe public final class Page { private final List items; private final Map lastEvaluatedKey; diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/PageIterable.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/PageIterable.java index ffa7b8519526..392cc4ff4c17 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/PageIterable.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/PageIterable.java @@ -16,6 +16,7 @@ package software.amazon.awssdk.enhanced.dynamodb.model; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.core.pagination.sync.PaginatedItemsIterable; import software.amazon.awssdk.core.pagination.sync.SdkIterable; @@ -49,6 +50,7 @@ * @param The modelled type of the object in a page. */ @SdkPublicApi +@ThreadSafe public interface PageIterable extends SdkIterable> { static PageIterable create(SdkIterable> pageIterable) { diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/PagePublisher.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/PagePublisher.java index 95c312bab2af..f862416d9314 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/PagePublisher.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/PagePublisher.java @@ -16,6 +16,7 @@ package software.amazon.awssdk.enhanced.dynamodb.model; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.core.async.SdkPublisher; /** @@ -47,6 +48,7 @@ * @param The modelled type of the object in a page. */ @SdkPublicApi +@ThreadSafe public interface PagePublisher extends SdkPublisher> { /** diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/PutItemEnhancedRequest.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/PutItemEnhancedRequest.java index 44fd5ed9700b..725d0e30066b 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/PutItemEnhancedRequest.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/PutItemEnhancedRequest.java @@ -16,7 +16,9 @@ package software.amazon.awssdk.enhanced.dynamodb.model; import java.util.Objects; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbAsyncTable; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbTable; import software.amazon.awssdk.enhanced.dynamodb.Expression; @@ -33,6 +35,7 @@ * @param The type of the modelled object. */ @SdkPublicApi +@ThreadSafe public final class PutItemEnhancedRequest { private final T item; @@ -174,6 +177,7 @@ public int hashCode() { *

* Note: A valid request builder must define an item. */ + @NotThreadSafe public static final class Builder { private T item; private Expression conditionExpression; diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/PutItemEnhancedResponse.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/PutItemEnhancedResponse.java index bc07e573c46a..22e4bc830c02 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/PutItemEnhancedResponse.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/PutItemEnhancedResponse.java @@ -16,7 +16,9 @@ package software.amazon.awssdk.enhanced.dynamodb.model; import java.util.Objects; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbAsyncTable; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbTable; import software.amazon.awssdk.services.dynamodb.model.ConsumedCapacity; @@ -30,6 +32,7 @@ * @param The type of the item. */ @SdkPublicApi +@ThreadSafe public final class PutItemEnhancedResponse { private final T attributes; private final ConsumedCapacity consumedCapacity; @@ -93,6 +96,7 @@ public int hashCode() { return result; } + @NotThreadSafe public static final class Builder { private T attributes; private ConsumedCapacity consumedCapacity; diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/QueryConditional.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/QueryConditional.java index a877244406a5..ced68bbe4c61 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/QueryConditional.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/QueryConditional.java @@ -17,6 +17,7 @@ import java.util.function.Consumer; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.enhanced.dynamodb.Expression; import software.amazon.awssdk.enhanced.dynamodb.Key; import software.amazon.awssdk.enhanced.dynamodb.TableSchema; @@ -38,6 +39,7 @@ * */ @SdkPublicApi +@ThreadSafe public interface QueryConditional { /** * Creates a {@link QueryConditional} that matches when the key of an index is equal to a specific value. diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/QueryEnhancedRequest.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/QueryEnhancedRequest.java index dceecbc6e305..fbc4736cae3c 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/QueryEnhancedRequest.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/QueryEnhancedRequest.java @@ -23,7 +23,9 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbAsyncIndex; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbTable; import software.amazon.awssdk.enhanced.dynamodb.Expression; @@ -41,6 +43,7 @@ * All other parameters are optional. */ @SdkPublicApi +@ThreadSafe public final class QueryEnhancedRequest { private final QueryConditional queryConditional; @@ -199,6 +202,7 @@ public int hashCode() { *

* A valid builder must set the {@link #queryConditional} parameter. Other parameters are optional. */ + @NotThreadSafe public static final class Builder { private QueryConditional queryConditional; private Map exclusiveStartKey; diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/ReadBatch.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/ReadBatch.java index 172af1548913..1bdae4d4995c 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/ReadBatch.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/ReadBatch.java @@ -20,7 +20,9 @@ import java.util.Map; import java.util.function.Consumer; import java.util.stream.Collectors; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedClient; import software.amazon.awssdk.enhanced.dynamodb.Key; import software.amazon.awssdk.enhanced.dynamodb.MappedTableResource; @@ -37,6 +39,7 @@ * A valid request object should contain one or more primary keys. */ @SdkPublicApi +@ThreadSafe public final class ReadBatch { private final String tableName; private final KeysAndAttributes keysAndAttributes; @@ -107,6 +110,7 @@ public int hashCode() { * * @param the type that items in this table map to */ + @NotThreadSafe public interface Builder { /** @@ -205,6 +209,7 @@ private static boolean compareNullableBooleans(Boolean one, Boolean two) { } } + @NotThreadSafe private static final class BuilderImpl implements Builder { private MappedTableResource mappedTableResource; private List requests = new ArrayList<>(); diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/ScanEnhancedRequest.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/ScanEnhancedRequest.java index dc48f544aede..09b8a55f1f19 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/ScanEnhancedRequest.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/ScanEnhancedRequest.java @@ -23,7 +23,9 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbTable; import software.amazon.awssdk.enhanced.dynamodb.Expression; import software.amazon.awssdk.enhanced.dynamodb.NestedAttributeName; @@ -37,6 +39,7 @@ * All parameters are optional. */ @SdkPublicApi +@ThreadSafe public final class ScanEnhancedRequest { private final Map exclusiveStartKey; @@ -190,6 +193,7 @@ public int hashCode() { /** * A builder that is used to create a request with the desired parameters. */ + @NotThreadSafe public static final class Builder { private Map exclusiveStartKey; private Integer limit; diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/TransactDeleteItemEnhancedRequest.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/TransactDeleteItemEnhancedRequest.java index 15b17728f293..15c4df8cacd8 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/TransactDeleteItemEnhancedRequest.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/TransactDeleteItemEnhancedRequest.java @@ -17,7 +17,9 @@ import java.util.Objects; import java.util.function.Consumer; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedAsyncClient; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedClient; import software.amazon.awssdk.enhanced.dynamodb.Expression; @@ -34,6 +36,7 @@ * */ @SdkPublicApi +@ThreadSafe public final class TransactDeleteItemEnhancedRequest { private final Key key; @@ -137,6 +140,7 @@ public int hashCode() { *

* Note: A valid request builder must define a {@link Key}. */ + @NotThreadSafe public static final class Builder { private Key key; private Expression conditionExpression; diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/TransactGetItemsEnhancedRequest.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/TransactGetItemsEnhancedRequest.java index a8e2f22bbde2..c7b8198ee7a1 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/TransactGetItemsEnhancedRequest.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/TransactGetItemsEnhancedRequest.java @@ -20,7 +20,9 @@ import java.util.ArrayList; import java.util.List; import java.util.function.Supplier; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedClient; import software.amazon.awssdk.enhanced.dynamodb.Key; import software.amazon.awssdk.enhanced.dynamodb.MappedTableResource; @@ -39,6 +41,7 @@ * . */ @SdkPublicApi +@ThreadSafe public final class TransactGetItemsEnhancedRequest { private final List transactGetItems; @@ -85,6 +88,7 @@ public int hashCode() { *

* A valid builder should contain at least one {@link GetItemEnhancedRequest} added through addGetItem(). */ + @NotThreadSafe public static final class Builder { private List> itemSupplierList = new ArrayList<>(); diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/TransactPutItemEnhancedRequest.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/TransactPutItemEnhancedRequest.java index 9aa71956794f..6d665a2e3b15 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/TransactPutItemEnhancedRequest.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/TransactPutItemEnhancedRequest.java @@ -16,7 +16,9 @@ package software.amazon.awssdk.enhanced.dynamodb.model; import java.util.Objects; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedAsyncClient; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedClient; import software.amazon.awssdk.enhanced.dynamodb.Expression; @@ -32,6 +34,7 @@ * @param The type of the modelled object. */ @SdkPublicApi +@ThreadSafe public final class TransactPutItemEnhancedRequest { private final T item; private final Expression conditionExpression; @@ -138,6 +141,7 @@ public int hashCode() { *

* Note: A valid request builder must define an item. */ + @NotThreadSafe public static final class Builder { private T item; private Expression conditionExpression; diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/TransactUpdateItemEnhancedRequest.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/TransactUpdateItemEnhancedRequest.java index 70e8d3b2fb1a..7fec8372ba2e 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/TransactUpdateItemEnhancedRequest.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/TransactUpdateItemEnhancedRequest.java @@ -16,7 +16,9 @@ package software.amazon.awssdk.enhanced.dynamodb.model; import java.util.Objects; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedAsyncClient; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedClient; import software.amazon.awssdk.enhanced.dynamodb.Expression; @@ -33,6 +35,7 @@ * @param The type of the modelled object. */ @SdkPublicApi +@ThreadSafe public class TransactUpdateItemEnhancedRequest { private final T item; @@ -154,6 +157,7 @@ public int hashCode() { *

* Note: A valid request builder must define an item. */ + @NotThreadSafe public static final class Builder { private T item; private Boolean ignoreNulls; diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/TransactWriteItemsEnhancedRequest.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/TransactWriteItemsEnhancedRequest.java index 5db9e8e4ee73..d45b9600f7d1 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/TransactWriteItemsEnhancedRequest.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/TransactWriteItemsEnhancedRequest.java @@ -21,7 +21,9 @@ import java.util.List; import java.util.function.Consumer; import java.util.function.Supplier; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedClient; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbTable; import software.amazon.awssdk.enhanced.dynamodb.Key; @@ -48,6 +50,7 @@ * into {@link TransactWriteItem} and stored in the request. */ @SdkPublicApi +@ThreadSafe public final class TransactWriteItemsEnhancedRequest { private final List transactWriteItems; @@ -117,6 +120,7 @@ public int hashCode() { *

* A valid builder should contain at least one low-level request such as {@link DeleteItemEnhancedRequest}. */ + @NotThreadSafe public static final class Builder { private List> itemSupplierList = new ArrayList<>(); diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/UpdateItemEnhancedRequest.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/UpdateItemEnhancedRequest.java index bbf8640cd56d..796c9db95abf 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/UpdateItemEnhancedRequest.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/UpdateItemEnhancedRequest.java @@ -16,7 +16,9 @@ package software.amazon.awssdk.enhanced.dynamodb.model; import java.util.Objects; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbAsyncTable; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbTable; import software.amazon.awssdk.enhanced.dynamodb.Expression; @@ -36,6 +38,7 @@ * @param The type of the modelled object. */ @SdkPublicApi +@ThreadSafe public final class UpdateItemEnhancedRequest { private final T item; @@ -166,6 +169,7 @@ public int hashCode() { *

* Note: A valid request builder must define an item. */ + @NotThreadSafe public static final class Builder { private T item; private Boolean ignoreNulls; diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/UpdateItemEnhancedResponse.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/UpdateItemEnhancedResponse.java index e57e1e5a0543..cdf0200f09da 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/UpdateItemEnhancedResponse.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/UpdateItemEnhancedResponse.java @@ -16,7 +16,9 @@ package software.amazon.awssdk.enhanced.dynamodb.model; import java.util.Objects; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbAsyncTable; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbTable; import software.amazon.awssdk.services.dynamodb.model.ConsumedCapacity; @@ -31,6 +33,7 @@ * @param The type of the item. */ @SdkPublicApi +@ThreadSafe public final class UpdateItemEnhancedResponse { private final T attributes; private final ConsumedCapacity consumedCapacity; @@ -94,6 +97,7 @@ public int hashCode() { return result; } + @NotThreadSafe public static final class Builder { private T attributes; private ConsumedCapacity consumedCapacity; diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/WriteBatch.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/WriteBatch.java index 302bf35e9758..d8fec912ba84 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/WriteBatch.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/model/WriteBatch.java @@ -22,7 +22,9 @@ import java.util.List; import java.util.function.Consumer; import java.util.function.Supplier; +import software.amazon.awssdk.annotations.NotThreadSafe; import software.amazon.awssdk.annotations.SdkPublicApi; +import software.amazon.awssdk.annotations.ThreadSafe; import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedClient; import software.amazon.awssdk.enhanced.dynamodb.Key; import software.amazon.awssdk.enhanced.dynamodb.MappedTableResource; @@ -41,6 +43,7 @@ * A valid write batch should contain one or more delete or put action reference. */ @SdkPublicApi +@ThreadSafe public final class WriteBatch { private final String tableName; private final List writeRequests; @@ -109,6 +112,7 @@ public int hashCode() { * * @param the type that items in this table map to */ + @NotThreadSafe public interface Builder { /**