From d6a8beba614a44e23d5a7420c7417fe1cd1d3d88 Mon Sep 17 00:00:00 2001 From: RanVaknin <50976344+RanVaknin@users.noreply.github.com> Date: Wed, 22 Jul 2026 15:42:03 -0700 Subject: [PATCH 1/6] Add net new coverage to fill in testing gaps with v1 --- .../StandardModelFactoriesEdgeCasesTest.java | 218 ++++++++++++++++++ 1 file changed, 218 insertions(+) create mode 100644 services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesEdgeCasesTest.java diff --git a/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesEdgeCasesTest.java b/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesEdgeCasesTest.java new file mode 100644 index 000000000000..ec1a0928e44c --- /dev/null +++ b/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesEdgeCasesTest.java @@ -0,0 +1,218 @@ +/* + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ +package software.amazon.awssdk.mapper.dynamodb; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; + +import java.lang.reflect.Method; +import java.math.BigDecimal; +import java.math.BigInteger; + +import org.junit.Assert; +import org.junit.Test; + +import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.mapper.dynamodb.pojos.AutoKeyAndVal; +import software.amazon.awssdk.mapper.dynamodb.pojos.TestClass; + +public class StandardModelFactoriesEdgeCasesTest { + + private static final DynamoDBMapperConfig V1_CONFIG = new DynamoDBMapperConfig.Builder() + .withTypeConverterFactory(DynamoDBMapperConfig.DEFAULT.getTypeConverterFactory()) + .withConversionSchema(ConversionSchemas.V1) + .build(); + + private static final DynamoDBMapperConfig V2_CONFIG = new DynamoDBMapperConfig.Builder() + .withTypeConverterFactory(DynamoDBMapperConfig.DEFAULT.getTypeConverterFactory()) + .withConversionSchema(ConversionSchemas.V2) + .build(); + + private static final DynamoDBMapperModelFactory factory = StandardModelFactories.of(S3Link.Factory.of(null)); + private static final DynamoDBMapperModelFactory.TableFactory v1Models = factory.getTableFactory(V1_CONFIG); + private static final DynamoDBMapperModelFactory.TableFactory v2Models = factory.getTableFactory(V2_CONFIG); + + private AttributeValue convert(String getter, Object value) { + try { + Method gm = TestClass.class.getMethod(getter); + StandardAnnotationMaps.FieldMap map = StandardAnnotationMaps.of(gm, null); + return v1Models.getTable(TestClass.class).field(map.attributeName()).convert(value); + } catch (RuntimeException e) { + throw e; + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + private Object unconvert(String getter, String setter, AttributeValue value) { + try { + Method gm = TestClass.class.getMethod(getter); + Method sm = TestClass.class.getMethod(setter, gm.getReturnType()); + StandardAnnotationMaps.FieldMap map = StandardAnnotationMaps.of(gm, null); + return v2Models.getTable(TestClass.class).field(map.attributeName()).unconvert(value); + } catch (RuntimeException e) { + throw e; + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + @SuppressWarnings("unchecked") + private static DynamoDBMapperTableModel table(T object) { + return v2Models.getTable((Class) object.getClass()); + } + + @Test + public void convert_unicodeString_preserved() { + assertEquals("こんにちは", convert("getString", "こんにちは").getS()); + assertEquals("emoji-😀", convert("getString", "emoji-😀").getS()); + } + + @Test + public void unconvert_unicodeString_preserved() { + assertEquals("こんにちは", + unconvert("getString", "setString", new AttributeValue("こんにちは"))); + } + + @Test + public void convert_emptyString_isDropped() { + Assert.assertNull(convert("getString", "")); + } + + @Test + public void convert_numericBoundaries_exactStrings() { + assertEquals(String.valueOf(Integer.MIN_VALUE), convert("getInt", Integer.MIN_VALUE).getN()); + assertEquals(String.valueOf(Integer.MAX_VALUE), convert("getInt", Integer.MAX_VALUE).getN()); + assertEquals(String.valueOf(Long.MIN_VALUE), convert("getLong", Long.MIN_VALUE).getN()); + assertEquals(String.valueOf(Long.MAX_VALUE), convert("getLong", Long.MAX_VALUE).getN()); + } + + @Test + public void convert_bigNumbers_precisionPreserved() { + BigInteger big = new BigInteger("99999999999999999999"); + assertEquals("99999999999999999999", convert("getBigInt", big).getN()); + + BigDecimal dec = new BigDecimal("12345.6789"); + assertEquals("12345.6789", convert("getBigDecimal", dec).getN()); + } + + @Test + public void convert_bigDecimal_scalePreserved() { + assertEquals("43.0", convert("getBigDecimal", new BigDecimal("43.0")).getN()); + } + + @Test + public void unconvert_integralType_fromDecimalString_throws() { + try { + unconvert("getInt", "setInt", new AttributeValue().withN("1.0")); + fail("Expected NumberFormatException for decimal string on integral type"); + } catch (NumberFormatException e) { + // expected + } + } + + @Test + public void convert_nonFiniteDouble() { + assertEquals("NaN", convert("getDouble", Double.NaN).getN()); + assertEquals("Infinity", convert("getDouble", Double.POSITIVE_INFINITY).getN()); + assertEquals("-Infinity", convert("getDouble", Double.NEGATIVE_INFINITY).getN()); + } + + public enum Color { RED, GREEN, BLUE } + + public static class EnumPojo extends AutoKeyAndVal { + @DynamoDBTypeConvertedEnum + public Color getVal() { return super.getVal(); } + public void setVal(Color val) { super.setVal(val); } + } + + @Test + public void convert_enum_asString() { + DynamoDBMapperTableModel model = table(new EnumPojo()); + assertEquals("GREEN", model.field("val").convert(Color.GREEN).getS()); + } + + @Test + public void unconvert_enum_fromString() { + DynamoDBMapperTableModel model = table(new EnumPojo()); + assertEquals(Color.BLUE, model.field("val").unconvert(new AttributeValue("BLUE"))); + } + + @Test + public void unconvert_enum_unknownValue_throws() { + DynamoDBMapperTableModel model = table(new EnumPojo()); + try { + model.field("val").unconvert(new AttributeValue("PURPLE")); + fail("Expected exception for unknown enum constant"); + } catch (RuntimeException e) { + // expected + } + } + + public static class JsonPayload { + private String name; + private int count; + public String getName() { return name; } + public void setName(String name) { this.name = name; } + public int getCount() { return count; } + public void setCount(int count) { this.count = count; } + @Override + public boolean equals(Object o) { + if (!(o instanceof JsonPayload)) { + return false; + } + JsonPayload that = (JsonPayload) o; + return count == that.count + && (name == null ? that.name == null : name.equals(that.name)); + } + @Override + public int hashCode() { + return (name == null ? 0 : name.hashCode()) * 31 + count; + } + } + + public static class JsonPojo extends AutoKeyAndVal { + @DynamoDBTypeConvertedJson + public JsonPayload getVal() { return super.getVal(); } + public void setVal(JsonPayload val) { super.setVal(val); } + } + + @Test + public void convert_json_asString() { + JsonPayload payload = new JsonPayload(); + payload.setName("widget"); + payload.setCount(7); + + DynamoDBMapperTableModel model = table(new JsonPojo()); + AttributeValue av = model.field("val").convert(payload); + + Assert.assertNotNull(av.getS()); + Assert.assertTrue(av.getS().contains("widget")); + Assert.assertTrue(av.getS().contains("7")); + } + + @Test + public void json_roundTrip() { + JsonPayload payload = new JsonPayload(); + payload.setName("widget"); + payload.setCount(7); + + DynamoDBMapperTableModel model = table(new JsonPojo()); + AttributeValue av = model.field("val").convert(payload); + Object back = model.field("val").unconvert(av); + + assertEquals(payload, back); + } +} From 56be1cd584410433d0a7d89af19b52c31e046c29 Mon Sep 17 00:00:00 2001 From: RanVaknin <50976344+RanVaknin@users.noreply.github.com> Date: Sun, 26 Jul 2026 22:53:40 -0700 Subject: [PATCH 2/6] Migrate to v2 AttributeValue --- services-custom/dynamodb-mapper/pom.xml | 52 ++++ .../dynamodb/AbstractDynamoDBMapper.java | 2 +- .../dynamodb/AbstractEnumMarshaller.java | 6 +- .../mapper/dynamodb/ArgumentMarshaller.java | 2 +- .../mapper/dynamodb/ArgumentUnmarshaller.java | 2 +- .../mapper/dynamodb/AttributeTransformer.java | 2 +- .../dynamodb/AttributeTransformerChain.java | 2 +- .../mapper/dynamodb/ConversionSchemas.java | 2 +- .../mapper/dynamodb/ConvertibleType.java | 2 +- .../dynamodb/DynamoDBDeleteExpression.java | 2 +- .../dynamodb/DynamoDBMapperFieldModel.java | 35 ++- .../dynamodb/DynamoDBMapperTableModel.java | 2 +- .../dynamodb/DynamoDBQueryExpression.java | 2 +- .../dynamodb/DynamoDBSaveExpression.java | 4 +- .../dynamodb/DynamoDBScalarAttribute.java | 4 +- .../dynamodb/DynamoDBScanExpression.java | 2 +- .../DynamoDBTransactionWriteExpression.java | 2 +- .../DynamoDBTypeConvertedEpochDate.java | 2 +- .../mapper/dynamodb/IDynamoDBMapper.java | 2 +- .../awssdk/mapper/dynamodb/ItemConverter.java | 2 +- .../mapper/dynamodb/JsonMarshaller.java | 12 +- .../mapper/dynamodb/MapperDateUtils.java | 147 ++++++++++ .../mapper/dynamodb/QueryResultPage.java | 2 +- .../mapper/dynamodb/ScanResultPage.java | 2 +- .../dynamodb/StandardModelFactories.java | 140 +++++----- .../dynamodb/StandardTypeConverters.java | 9 +- .../dynamodb/UpdateExpressionGenerator.java | 2 +- ...AttributeConditionExpressionGenerator.java | 2 +- .../BooleanSetToNumberSetMarshaller.java | 4 +- .../BooleanToBooleanMarshaller.java | 4 +- .../BooleanToNumberMarshaller.java | 6 +- .../ByteArraySetToBinarySetMarshaller.java | 9 +- .../ByteArrayToBinaryMarshaller.java | 5 +- .../ByteBufferSetToBinarySetMarshaller.java | 9 +- .../ByteBufferToBinaryMarshaller.java | 5 +- .../CalendarSetToStringSetMarshaller.java | 9 +- .../CalendarToStringMarshaller.java | 9 +- .../CollectionToListMarshaller.java | 8 +- .../marshallers/CustomMarshaller.java | 4 +- .../DateSetToStringSetMarshaller.java | 9 +- .../marshallers/DateToStringMarshaller.java | 9 +- .../marshallers/MapToMapMarshaller.java | 8 +- .../NumberSetToNumberSetMarshaller.java | 4 +- .../marshallers/NumberToNumberMarshaller.java | 4 +- .../ObjectSetToStringSetMarshaller.java | 4 +- .../marshallers/ObjectToMapMarshaller.java | 4 +- .../marshallers/ObjectToStringMarshaller.java | 4 +- .../marshallers/S3LinkToStringMarshaller.java | 4 +- .../StringSetToStringSetMarshaller.java | 4 +- .../marshallers/StringToStringMarshaller.java | 4 +- .../UUIDSetToStringSetMarshaller.java | 4 +- .../unmarshallers/BSUnmarshaller.java | 4 +- .../dynamodb/unmarshallers/BUnmarshaller.java | 4 +- .../BigDecimalSetUnmarshaller.java | 4 +- .../unmarshallers/BigDecimalUnmarshaller.java | 4 +- .../BigIntegerSetUnmarshaller.java | 4 +- .../unmarshallers/BigIntegerUnmarshaller.java | 4 +- .../unmarshallers/BooleanSetUnmarshaller.java | 14 +- .../unmarshallers/BooleanUnmarshaller.java | 12 +- .../ByteArraySetUnmarshaller.java | 5 +- .../unmarshallers/ByteArrayUnmarshaller.java | 4 +- .../ByteBufferSetUnmarshaller.java | 9 +- .../unmarshallers/ByteBufferUnmarshaller.java | 4 +- .../unmarshallers/ByteSetUnmarshaller.java | 4 +- .../unmarshallers/ByteUnmarshaller.java | 4 +- .../CalendarSetUnmarshaller.java | 9 +- .../unmarshallers/CalendarUnmarshaller.java | 7 +- .../unmarshallers/CustomUnmarshaller.java | 4 +- .../unmarshallers/DateSetUnmarshaller.java | 9 +- .../unmarshallers/DateUnmarshaller.java | 7 +- .../unmarshallers/DoubleSetUnmarshaller.java | 4 +- .../unmarshallers/DoubleUnmarshaller.java | 4 +- .../unmarshallers/FloatSetUnmarshaller.java | 4 +- .../unmarshallers/FloatUnmarshaller.java | 4 +- .../unmarshallers/IntegerSetUnmarshaller.java | 4 +- .../unmarshallers/IntegerUnmarshaller.java | 4 +- .../dynamodb/unmarshallers/LUnmarshaller.java | 4 +- .../unmarshallers/ListUnmarshaller.java | 4 +- .../unmarshallers/LongSetUnmarshaller.java | 4 +- .../unmarshallers/LongUnmarshaller.java | 4 +- .../dynamodb/unmarshallers/MUnmarshaller.java | 4 +- .../unmarshallers/MapUnmarshaller.java | 4 +- .../unmarshallers/NSUnmarshaller.java | 4 +- .../dynamodb/unmarshallers/NUnmarshaller.java | 4 +- .../unmarshallers/NullableUnmarshaller.java | 6 +- .../unmarshallers/ObjectSetUnmarshaller.java | 4 +- .../unmarshallers/ObjectUnmarshaller.java | 4 +- .../unmarshallers/S3LinkUnmarshaller.java | 4 +- .../unmarshallers/SSUnmarshaller.java | 4 +- .../dynamodb/unmarshallers/SUnmarshaller.java | 4 +- .../unmarshallers/ShortSetUnmarshaller.java | 4 +- .../unmarshallers/ShortUnmarshaller.java | 4 +- .../unmarshallers/StringSetUnmarshaller.java | 4 +- .../unmarshallers/StringUnmarshaller.java | 4 +- .../unmarshallers/UUIDSetUnmarshaller.java | 4 +- .../unmarshallers/UUIDUnmarshaller.java | 4 +- .../AttributeTransformerChainTest.java | 30 +-- .../dynamodb/CachingMarshallerSetTest.java | 2 +- .../dynamodb/CachingUnmarshallerSetTest.java | 2 +- .../ConversionToAttributeValuesTest.java | 2 +- .../dynamodb/IncompatibleSubclassTest.java | 2 +- .../awssdk/mapper/dynamodb/S3LinkTest.java | 6 +- .../StandardModelFactoriesEdgeCasesTest.java | 42 +-- .../StandardModelFactoriesOverrideTest.java | 2 +- .../dynamodb/StandardModelFactoriesTest.java | 32 +-- .../StandardModelFactoriesV1Test.java | 155 +++++------ ...tandardModelFactoriesV2CompatibleTest.java | 203 +++++++------- .../StandardModelFactoriesV2Test.java | 219 +++++++-------- ...StandardModelFactoriesV2UnconvertTest.java | 251 +++++++++--------- .../mapper/dynamodb/TestParameters.java | 2 +- .../mapper/dynamodb/UnmarshallerTest.java | 2 +- .../mapper/dynamodb/V1MarshallerTest.java | 2 +- .../dynamodb/V2CompatMarshallerTest.java | 2 +- .../mapper/dynamodb/V2MarshallerTest.java | 2 +- 114 files changed, 1001 insertions(+), 760 deletions(-) create mode 100644 services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/MapperDateUtils.java diff --git a/services-custom/dynamodb-mapper/pom.xml b/services-custom/dynamodb-mapper/pom.xml index db8855622266..42093be640e3 100644 --- a/services-custom/dynamodb-mapper/pom.xml +++ b/services-custom/dynamodb-mapper/pom.xml @@ -48,6 +48,53 @@ + + org.apache.maven.plugins + maven-compiler-plugin + + + + software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesTest.java + software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesV1Test.java + software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesV2Test.java + software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesV2CompatibleTest.java + software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesV2UnconvertTest.java + software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesEdgeCasesTest.java + software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesOverrideTest.java + software/amazon/awssdk/mapper/dynamodb/V1MarshallerTest.java + software/amazon/awssdk/mapper/dynamodb/V2MarshallerTest.java + software/amazon/awssdk/mapper/dynamodb/V2CompatMarshallerTest.java + software/amazon/awssdk/mapper/dynamodb/UnmarshallerTest.java + software/amazon/awssdk/mapper/dynamodb/CachingMarshallerSetTest.java + software/amazon/awssdk/mapper/dynamodb/CachingUnmarshallerSetTest.java + software/amazon/awssdk/mapper/dynamodb/ConversionToAttributeValuesTest.java + software/amazon/awssdk/mapper/dynamodb/AttributeTransformerChainTest.java + software/amazon/awssdk/mapper/dynamodb/IncompatibleSubclassTest.java + software/amazon/awssdk/mapper/dynamodb/StringListMapTest.java + software/amazon/awssdk/mapper/dynamodb/S3LinkTest.java + software/amazon/awssdk/mapper/dynamodb/S3LinkIDTest.java + + software/amazon/awssdk/mapper/dynamodb/TestParameters.java + + software/amazon/awssdk/mapper/dynamodb/pojos/TestClass.java + software/amazon/awssdk/mapper/dynamodb/pojos/SubClass.java + software/amazon/awssdk/mapper/dynamodb/pojos/UnannotatedSubClass.java + software/amazon/awssdk/mapper/dynamodb/pojos/KeyAndVal.java + software/amazon/awssdk/mapper/dynamodb/pojos/AutoKeyAndVal.java + software/amazon/awssdk/mapper/dynamodb/pojos/DateRange.java + software/amazon/awssdk/mapper/dynamodb/pojos/Currency.java + + + org.apache.maven.plugins maven-dependency-plugin @@ -84,6 +131,11 @@ + + software.amazon.awssdk + dynamodb + ${awsjavasdk.version} + com.amazonaws aws-java-sdk-dynamodb diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/AbstractDynamoDBMapper.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/AbstractDynamoDBMapper.java index cd32170cdf0f..a47ca74fcd51 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/AbstractDynamoDBMapper.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/AbstractDynamoDBMapper.java @@ -15,7 +15,7 @@ package software.amazon.awssdk.mapper.dynamodb; import software.amazon.awssdk.mapper.dynamodb.DynamoDBMapper.FailedBatch; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; import com.amazonaws.services.dynamodbv2.model.CreateTableRequest; import com.amazonaws.services.dynamodbv2.model.DeleteTableRequest; import com.amazonaws.services.s3.model.Region; diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/AbstractEnumMarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/AbstractEnumMarshaller.java index ac7a6a24635e..79459a1ec94f 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/AbstractEnumMarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/AbstractEnumMarshaller.java @@ -14,8 +14,6 @@ */ package software.amazon.awssdk.mapper.dynamodb; -import static com.amazonaws.util.Throwables.failure; - /** * Generic marshaller for enumerations. * @@ -41,7 +39,7 @@ public String marshall(final T obj) { try { return obj.name(); } catch (final RuntimeException e) { - throw failure(e, "Unable to marshall the instance of " + obj.getClass() + " into a string"); + throw e; } } @@ -53,7 +51,7 @@ public T unmarshall(final Class clazz, final String obj) { try { return Enum.valueOf(clazz, obj); } catch (final RuntimeException e) { - throw failure(e, "Unable to unmarshall the string " + obj + " into " + clazz); + throw e; } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/ArgumentMarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/ArgumentMarshaller.java index 19f10a22c6a0..9e203df0d3b2 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/ArgumentMarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/ArgumentMarshaller.java @@ -14,7 +14,7 @@ */ package software.amazon.awssdk.mapper.dynamodb; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * Interface to make it possible to cache the expensive type determination diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/ArgumentUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/ArgumentUnmarshaller.java index 12462c0004a7..96fef778fa8e 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/ArgumentUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/ArgumentUnmarshaller.java @@ -17,7 +17,7 @@ import java.lang.reflect.Method; import java.text.ParseException; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * Unmarshaller interface to make it possible to cache the expensive diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/AttributeTransformer.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/AttributeTransformer.java index fbe888663ce7..8efc798fc6a7 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/AttributeTransformer.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/AttributeTransformer.java @@ -16,7 +16,7 @@ import java.util.Map; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * A hook allowing a custom transform/untransform of the raw attribute diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/AttributeTransformerChain.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/AttributeTransformerChain.java index ab63052eaa25..e5ff5cbc5f11 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/AttributeTransformerChain.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/AttributeTransformerChain.java @@ -20,7 +20,7 @@ import java.util.List; import java.util.Map; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * A virtual {@code AttributeTransformer} that transforms and untransforms diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/ConversionSchemas.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/ConversionSchemas.java index 4960573e370e..4ceaf5717b73 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/ConversionSchemas.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/ConversionSchemas.java @@ -87,7 +87,7 @@ import software.amazon.awssdk.mapper.dynamodb.unmarshallers.StringUnmarshaller; import software.amazon.awssdk.mapper.dynamodb.unmarshallers.UUIDSetUnmarshaller; import software.amazon.awssdk.mapper.dynamodb.unmarshallers.UUIDUnmarshaller; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/ConvertibleType.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/ConvertibleType.java index 095a9db4fad6..af820300fed6 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/ConvertibleType.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/ConvertibleType.java @@ -19,7 +19,7 @@ import software.amazon.awssdk.mapper.dynamodb.StandardAnnotationMaps.TypedMap; import software.amazon.awssdk.mapper.dynamodb.StandardTypeConverters.Scalar; import software.amazon.awssdk.mapper.dynamodb.StandardTypeConverters.Vector; -import com.amazonaws.services.dynamodbv2.model.ScalarAttributeType; +import software.amazon.awssdk.services.dynamodb.model.ScalarAttributeType; import java.lang.reflect.Method; import java.lang.reflect.ParameterizedType; diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/DynamoDBDeleteExpression.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/DynamoDBDeleteExpression.java index 7a6bf67af616..305660d97f3f 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/DynamoDBDeleteExpression.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/DynamoDBDeleteExpression.java @@ -18,7 +18,7 @@ import java.util.HashMap; import java.util.Map; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; import com.amazonaws.services.dynamodbv2.model.ConditionalOperator; import com.amazonaws.services.dynamodbv2.model.DeleteItemRequest; import com.amazonaws.services.dynamodbv2.model.ExpectedAttributeValue; diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/DynamoDBMapperFieldModel.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/DynamoDBMapperFieldModel.java index 0514b455295d..34d4f282c7a2 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/DynamoDBMapperFieldModel.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/DynamoDBMapperFieldModel.java @@ -30,7 +30,7 @@ import static com.amazonaws.services.dynamodbv2.model.ComparisonOperator.NOT_CONTAINS; import static com.amazonaws.services.dynamodbv2.model.ComparisonOperator.NOT_NULL; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; import com.amazonaws.services.dynamodbv2.model.ComparisonOperator; import com.amazonaws.services.dynamodbv2.model.Condition; import com.amazonaws.services.dynamodbv2.model.KeyType; @@ -224,7 +224,8 @@ public final boolean indexed() { * @see com.amazonaws.services.dynamodbv2.model.Condition */ public final Condition beginsWith(final V value) { - return new Condition().withComparisonOperator(BEGINS_WITH).withAttributeValueList(convert(value)); +// return new Condition().withComparisonOperator(BEGINS_WITH).withAttributeValueList(convert(value)); + throw new UnsupportedOperationException("Condition building not yet ported to v2 (query/scan deferred to a later PR)."); } /** @@ -236,7 +237,8 @@ public final Condition beginsWith(final V value) { * @see com.amazonaws.services.dynamodbv2.model.Condition */ public final Condition between(final V lo, final V hi) { - return new Condition().withComparisonOperator(BETWEEN).withAttributeValueList(convert(lo), convert(hi)); +// return new Condition().withComparisonOperator(BETWEEN).withAttributeValueList(convert(lo), convert(hi)); + throw new UnsupportedOperationException("Condition building not yet ported to v2 (query/scan deferred to a later PR)."); } /** @@ -247,7 +249,8 @@ public final Condition between(final V lo, final V hi) { * @see com.amazonaws.services.dynamodbv2.model.Condition */ public final Condition contains(final V value) { - return new Condition().withComparisonOperator(CONTAINS).withAttributeValueList(convert(value)); +// return new Condition().withComparisonOperator(CONTAINS).withAttributeValueList(convert(value)); + throw new UnsupportedOperationException("Condition building not yet ported to v2 (query/scan deferred to a later PR)."); } /** @@ -258,7 +261,8 @@ public final Condition contains(final V value) { * @see com.amazonaws.services.dynamodbv2.model.Condition */ public final Condition eq(final V value) { - return new Condition().withComparisonOperator(EQ).withAttributeValueList(convert(value)); +// return new Condition().withComparisonOperator(EQ).withAttributeValueList(convert(value)); + throw new UnsupportedOperationException("Condition building not yet ported to v2 (query/scan deferred to a later PR)."); } /** @@ -269,7 +273,8 @@ public final Condition eq(final V value) { * @see com.amazonaws.services.dynamodbv2.model.Condition */ public final Condition ge(final V value) { - return new Condition().withComparisonOperator(GE).withAttributeValueList(convert(value)); +// return new Condition().withComparisonOperator(GE).withAttributeValueList(convert(value)); + throw new UnsupportedOperationException("Condition building not yet ported to v2 (query/scan deferred to a later PR)."); } /** @@ -280,7 +285,8 @@ public final Condition ge(final V value) { * @see com.amazonaws.services.dynamodbv2.model.Condition */ public final Condition gt(final V value) { - return new Condition().withComparisonOperator(GT).withAttributeValueList(convert(value)); +// return new Condition().withComparisonOperator(GT).withAttributeValueList(convert(value)); + throw new UnsupportedOperationException("Condition building not yet ported to v2 (query/scan deferred to a later PR)."); } /** @@ -291,7 +297,8 @@ public final Condition gt(final V value) { * @see com.amazonaws.services.dynamodbv2.model.Condition */ public final Condition in(final Collection values) { - return new Condition().withComparisonOperator(IN).withAttributeValueList(LIST.convert(values, this)); +// return new Condition().withComparisonOperator(IN).withAttributeValueList(LIST.convert(values, this)); + throw new UnsupportedOperationException("Condition building not yet ported to v2 (query/scan deferred to a later PR)."); } /** @@ -323,7 +330,8 @@ public final Condition isNull() { * @see com.amazonaws.services.dynamodbv2.model.Condition */ public final Condition le(final V value) { - return new Condition().withComparisonOperator(LE).withAttributeValueList(convert(value)); +// return new Condition().withComparisonOperator(LE).withAttributeValueList(convert(value)); + throw new UnsupportedOperationException("Condition building not yet ported to v2 (query/scan deferred to a later PR)."); } /** @@ -334,7 +342,8 @@ public final Condition le(final V value) { * @see com.amazonaws.services.dynamodbv2.model.Condition */ public final Condition lt(final V value) { - return new Condition().withComparisonOperator(LT).withAttributeValueList(convert(value)); +// return new Condition().withComparisonOperator(LT).withAttributeValueList(convert(value)); + throw new UnsupportedOperationException("Condition building not yet ported to v2 (query/scan deferred to a later PR)."); } /** @@ -345,7 +354,8 @@ public final Condition lt(final V value) { * @see com.amazonaws.services.dynamodbv2.model.Condition */ public final Condition ne(final V value) { - return new Condition().withComparisonOperator(NE).withAttributeValueList(convert(value)); +// return new Condition().withComparisonOperator(NE).withAttributeValueList(convert(value)); + throw new UnsupportedOperationException("Condition building not yet ported to v2 (query/scan deferred to a later PR)."); } /** @@ -356,7 +366,8 @@ public final Condition ne(final V value) { * @see com.amazonaws.services.dynamodbv2.model.Condition */ public final Condition notContains(final V value) { - return new Condition().withComparisonOperator(NOT_CONTAINS).withAttributeValueList(convert(value)); +// return new Condition().withComparisonOperator(NOT_CONTAINS).withAttributeValueList(convert(value)); + throw new UnsupportedOperationException("Condition building not yet ported to v2 (query/scan deferred to a later PR)."); } /** diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/DynamoDBMapperTableModel.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/DynamoDBMapperTableModel.java index 5eb29260cf81..5c05ef6ef3a5 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/DynamoDBMapperTableModel.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/DynamoDBMapperTableModel.java @@ -18,7 +18,7 @@ import static com.amazonaws.services.dynamodbv2.model.KeyType.RANGE; import static com.amazonaws.services.dynamodbv2.model.ProjectionType.KEYS_ONLY; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; import com.amazonaws.services.dynamodbv2.model.GlobalSecondaryIndex; import com.amazonaws.services.dynamodbv2.model.KeyType; import com.amazonaws.services.dynamodbv2.model.KeySchemaElement; diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/DynamoDBQueryExpression.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/DynamoDBQueryExpression.java index ca140083d72b..cda88b11edc9 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/DynamoDBQueryExpression.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/DynamoDBQueryExpression.java @@ -17,7 +17,7 @@ import java.util.HashMap; import java.util.Map; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; import com.amazonaws.services.dynamodbv2.model.Condition; import com.amazonaws.services.dynamodbv2.model.ConditionalOperator; import com.amazonaws.services.dynamodbv2.model.QueryRequest; diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/DynamoDBSaveExpression.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/DynamoDBSaveExpression.java index 581bcde7b741..508c5d234a4f 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/DynamoDBSaveExpression.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/DynamoDBSaveExpression.java @@ -18,8 +18,8 @@ import java.util.HashMap; import java.util.Map; -import com.amazonaws.services.dynamodbv2.model.ConditionalOperator; -import com.amazonaws.services.dynamodbv2.model.ExpectedAttributeValue; +import software.amazon.awssdk.services.dynamodb.model.ConditionalOperator; +import software.amazon.awssdk.services.dynamodb.model.ExpectedAttributeValue; /** * Enables adding options to a save operation. diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/DynamoDBScalarAttribute.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/DynamoDBScalarAttribute.java index 362f77f06f7b..e3a562dfec30 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/DynamoDBScalarAttribute.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/DynamoDBScalarAttribute.java @@ -14,7 +14,7 @@ */ package software.amazon.awssdk.mapper.dynamodb; -import com.amazonaws.services.dynamodbv2.model.ScalarAttributeType; +import software.amazon.awssdk.services.dynamodb.model.ScalarAttributeType; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -38,7 +38,7 @@ /** * The scalar attirbute type. - * @see com.amazonaws.services.dynamodbv2.model.ScalarAttributeType + * @see software.amazon.awssdk.services.dynamodb.model.ScalarAttributeType */ ScalarAttributeType type(); diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/DynamoDBScanExpression.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/DynamoDBScanExpression.java index 490f7e015cab..c199b594d0ce 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/DynamoDBScanExpression.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/DynamoDBScanExpression.java @@ -17,7 +17,7 @@ import java.util.HashMap; import java.util.Map; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; import com.amazonaws.services.dynamodbv2.model.ComparisonOperator; import com.amazonaws.services.dynamodbv2.model.Condition; import com.amazonaws.services.dynamodbv2.model.ConditionalOperator; diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/DynamoDBTransactionWriteExpression.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/DynamoDBTransactionWriteExpression.java index bd4229ae7370..bdaf942d392e 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/DynamoDBTransactionWriteExpression.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/DynamoDBTransactionWriteExpression.java @@ -15,7 +15,7 @@ */ package software.amazon.awssdk.mapper.dynamodb; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; import java.util.Map; diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/DynamoDBTypeConvertedEpochDate.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/DynamoDBTypeConvertedEpochDate.java index fcdfaeba33e3..bc94688e5c0a 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/DynamoDBTypeConvertedEpochDate.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/DynamoDBTypeConvertedEpochDate.java @@ -21,7 +21,7 @@ /** * Annotation to convert a date object ({@link java.util.Date}, {@link java.util.Calendar}, {@link org.joda.time.DateTime}) - * to a {@link com.amazonaws.services.dynamodbv2.model.ScalarAttributeType#N} stored as epoch time. + * to a {@link software.amazon.awssdk.services.dynamodb.model.ScalarAttributeType#N} stored as epoch time. * *

Alternately, the {@link DynamoDBTyped} annotation may be used,

*
diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/IDynamoDBMapper.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/IDynamoDBMapper.java
index 347ea9e8f207..3ee09808c77a 100644
--- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/IDynamoDBMapper.java
+++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/IDynamoDBMapper.java
@@ -18,7 +18,7 @@
 import software.amazon.awssdk.mapper.dynamodb.DynamoDBMapper.FailedBatch;
 import software.amazon.awssdk.mapper.dynamodb.DynamoDBMapperConfig.PaginationLoadingStrategy;
 import software.amazon.awssdk.mapper.dynamodb.DynamoDBMapperConfig.SaveBehavior;
-import com.amazonaws.services.dynamodbv2.model.AttributeValue;
+import software.amazon.awssdk.services.dynamodb.model.AttributeValue;
 import com.amazonaws.services.dynamodbv2.model.BatchGetItemRequest;
 import com.amazonaws.services.dynamodbv2.model.BatchWriteItemRequest;
 import com.amazonaws.services.dynamodbv2.model.CreateTableRequest;
diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/ItemConverter.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/ItemConverter.java
index 00343ec9ca24..b0cd9f57c4ed 100644
--- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/ItemConverter.java
+++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/ItemConverter.java
@@ -17,7 +17,7 @@
 import java.lang.reflect.Method;
 import java.util.Map;
 
-import com.amazonaws.services.dynamodbv2.model.AttributeValue;
+import software.amazon.awssdk.services.dynamodb.model.AttributeValue;
 
 /**
  * The concrete realization of a strategy for converting between Java objects
diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/JsonMarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/JsonMarshaller.java
index 3fa24329eca4..f09ff85237cb 100644
--- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/JsonMarshaller.java
+++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/JsonMarshaller.java
@@ -14,8 +14,6 @@
  */
 package software.amazon.awssdk.mapper.dynamodb;
 
-import static com.amazonaws.util.Throwables.failure;
-
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.ObjectWriter;
@@ -66,9 +64,9 @@ public String marshall(T obj) {
         try {
             return writer.writeValueAsString(obj);
         } catch (JsonProcessingException e) {
-            throw failure(e,
+            throw new DynamoDBMappingException(
                     "Unable to marshall the instance of " + obj.getClass()
-                            + "into a string");
+                            + "into a string", e);
         }
     }
 
@@ -76,9 +74,11 @@ public String marshall(T obj) {
     public T unmarshall(Class clazz, String json) {
         try {
             return mapper.readValue(json, (getValueType() == null ? clazz : getValueType()));
+        } catch (RuntimeException e) {
+            throw e;
         } catch (Exception e) {
-            throw failure(e, "Unable to unmarshall the string " + json
-                    + "into " + clazz);
+            throw new DynamoDBMappingException("Unable to unmarshall the string " + json
+                    + "into " + clazz, e);
         }
     }
 }
diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/MapperDateUtils.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/MapperDateUtils.java
new file mode 100644
index 000000000000..3868f80ad790
--- /dev/null
+++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/MapperDateUtils.java
@@ -0,0 +1,147 @@
+/*
+ * Copyright 2010-2025 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ *
+ * Portions copyright 2006-2009 James Murty. Please see LICENSE.txt
+ * for applicable license terms and NOTICE.txt for applicable notices.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License").
+ * You may not use this file except in compliance with the License.
+ * A copy of the License is located at
+ *
+ *  http://aws.amazon.com/apache2.0
+ *
+ * or in the "license" file accompanying this file. This file is distributed
+ * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied. See the License for the specific language governing
+ * permissions and limitations under the License.
+ */
+package software.amazon.awssdk.mapper.dynamodb;
+
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+
+import org.joda.time.DateTimeZone;
+import org.joda.time.format.DateTimeFormat;
+import org.joda.time.format.DateTimeFormatter;
+import org.joda.time.format.ISODateTimeFormat;
+import org.joda.time.tz.FixedDateTimeZone;
+
+import software.amazon.awssdk.annotations.SdkInternalApi;
+
+/**
+ * Narrowly-scoped ISO-8601 date parsing and formatting for the mapper's converter layer.
+ *
+ * 

The v1 {@code DynamoDBMapper} formatted and parsed {@link Date}/{@code Calendar} attributes + * with {@code com.amazonaws.util.DateUtils} from {@code aws-java-sdk-core}. That class is v1 SDK + * infrastructure (it pulls in {@code com.amazonaws.SdkClientException} and + * {@code com.amazonaws.util.JodaTime}) and cannot be depended on from a v2 module. The v2 SDK's + * own {@code software.amazon.awssdk.utils.DateUtils} is {@code java.time}-based and is not + * a drop-in: its parser rejects some ISO-8601 shapes v1 accepts (e.g. basic-format offsets like + * {@code -0700}) and its formatter omits trailing-zero milliseconds ({@code .000Z}), which would + * silently change the string form of data written by v1.

+ * + *

To preserve byte-for-byte read/write compatibility with data produced by the v1 mapper, this + * class reproduces exactly the two ISO-8601 methods the converter layer uses, using the same + * Joda-Time formatters v1 used. It intentionally excludes the other 11 methods of the v1 utility + * (RFC-822, compressed-ISO, Unix-timestamp, etc.) that the mapper never calls. Do not grow this + * class beyond ISO-8601 parse/format.

+ */ +@SdkInternalApi +public final class MapperDateUtils { + + private static final DateTimeZone GMT = new FixedDateTimeZone("GMT", "GMT", 0, 0); + private static final long MILLI_SECONDS_OF_365_DAYS = 365L * 24 * 60 * 60 * 1000; + + /** ISO 8601 format. */ + private static final DateTimeFormatter ISO8601_DATE_FORMAT = + ISODateTimeFormat.dateTime().withZone(GMT); + + /** Alternate ISO 8601 format without fractional seconds. */ + private static final DateTimeFormatter ALTERNATE_ISO8601_DATE_FORMAT = + DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss'Z'").withZone(GMT); + + /** ISO 8601 format with a UTC offset. */ + private static final DateTimeFormatter ISO8601_DATE_FORMAT_WITH_OFFSET = + DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ssZZ"); + + private static final List ALTERNATE_ISO8601_FORMATTERS = Arrays.asList( + ALTERNATE_ISO8601_DATE_FORMAT, ISO8601_DATE_FORMAT_WITH_OFFSET); + + private MapperDateUtils() { + } + + /** + * Parses the specified date string as an ISO 8601 date and returns the {@link Date} object. + * + * @param dateStringOrig the date string to parse + * @return the parsed {@link Date} object + */ + public static Date parseISO8601Date(final String dateStringOrig) { + String dateString = dateStringOrig; + + // For EC2 Spot Fleet. + if (dateString.endsWith("+0000")) { + dateString = dateString + .substring(0, dateString.length() - 5) + .concat("Z"); + } + + // https://github.com/aws/aws-sdk-java/issues/233 + String temp = tempDateStringForJodaTime(dateString); + try { + if (temp.equals(dateString)) { + // Normal case: nothing special here + return new Date(ISO8601_DATE_FORMAT.parseMillis(dateString)); + } + // Handling edge case: + // Joda-time can only handle up to year 292278993 but we are given + // 292278994; So we parse the date string by first adjusting + // the year to 292278993. Then we add 1 year back afterwards. + final long milliLess365Days = ISO8601_DATE_FORMAT.parseMillis(temp); + final long milli = milliLess365Days + MILLI_SECONDS_OF_365_DAYS; + if (milli < 0) { // overflow! + // re-parse the original date string using JodaTime so as to + // throw an exception with a consistent message + return new Date(ISO8601_DATE_FORMAT.parseMillis(dateString)); + } + return new Date(milli); + } catch (IllegalArgumentException e) { + for (DateTimeFormatter dateTimeFormatter : ALTERNATE_ISO8601_FORMATTERS) { + try { + // If the first ISO 8601 parser didn't work, try the alternate + // version which doesn't include fractional seconds + return new Date(dateTimeFormatter.parseMillis(dateString)); + } catch (Exception oops) { + // ignore + } + } + + throw e; + } + } + + /** + * Formats the specified date as an ISO 8601 string. + * + * @param date the date to format + * @return the ISO 8601 string representing the specified date + */ + public static String formatISO8601Date(final Date date) { + return ISO8601_DATE_FORMAT.print(date.getTime()); + } + + /** + * Returns a date string with the prefix temporarily substituted, if applicable, so that + * JodaTime can handle it. Otherwise, if not applicable, the original date string is returned. + * + *

See https://github.com/aws/aws-sdk-java/issues/233

+ */ + private static String tempDateStringForJodaTime(final String dateString) { + final String fromPrefix = "292278994-"; + final String toPrefix = "292278993-"; + return dateString.startsWith(fromPrefix) + ? toPrefix + dateString.substring(fromPrefix.length()) + : dateString; + } +} diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/QueryResultPage.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/QueryResultPage.java index 1985363c29a9..096173f8b696 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/QueryResultPage.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/QueryResultPage.java @@ -17,7 +17,7 @@ import java.util.List; import java.util.Map; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; import com.amazonaws.services.dynamodbv2.model.ConsumedCapacity; /** diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/ScanResultPage.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/ScanResultPage.java index 9a2f83c4ad76..17dc55fec80d 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/ScanResultPage.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/ScanResultPage.java @@ -17,7 +17,7 @@ import java.util.List; import java.util.Map; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; import com.amazonaws.services.dynamodbv2.model.ConsumedCapacity; /** diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactories.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactories.java index 45c3b49cd148..fc234203ce5b 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactories.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactories.java @@ -14,7 +14,7 @@ */ package software.amazon.awssdk.mapper.dynamodb; -import com.amazonaws.annotation.SdkInternalApi; +import software.amazon.awssdk.annotations.SdkInternalApi; import software.amazon.awssdk.mapper.dynamodb.DynamoDBMapperFieldModel.DynamoDBAttributeType; import software.amazon.awssdk.mapper.dynamodb.DynamoDBMapperFieldModel.Reflect; import software.amazon.awssdk.mapper.dynamodb.DynamoDBMapperModelFactory.TableFactory; @@ -22,13 +22,14 @@ import software.amazon.awssdk.mapper.dynamodb.DynamoDBTypeConverter.DelegateConverter; import software.amazon.awssdk.mapper.dynamodb.StandardBeanProperties.Bean; import software.amazon.awssdk.mapper.dynamodb.StandardBeanProperties.Beans; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.joda.time.DateTime; import java.nio.ByteBuffer; +import java.util.ArrayList; import java.util.Calendar; import java.util.Collection; import java.util.Date; @@ -45,9 +46,9 @@ import static software.amazon.awssdk.mapper.dynamodb.StandardTypeConverters.Vector.LIST; import static software.amazon.awssdk.mapper.dynamodb.StandardTypeConverters.Vector.MAP; import static software.amazon.awssdk.mapper.dynamodb.StandardTypeConverters.Vector.SET; -import static com.amazonaws.services.dynamodbv2.model.ScalarAttributeType.B; -import static com.amazonaws.services.dynamodbv2.model.ScalarAttributeType.N; -import static com.amazonaws.services.dynamodbv2.model.ScalarAttributeType.S; +import static software.amazon.awssdk.services.dynamodb.model.ScalarAttributeType.B; +import static software.amazon.awssdk.services.dynamodb.model.ScalarAttributeType.N; +import static software.amazon.awssdk.services.dynamodb.model.ScalarAttributeType.S; /** * Pre-defined strategies for mapping between Java types and DynamoDB types. @@ -226,11 +227,8 @@ public AttributeValue get(AttributeValue o) { return o; } @Override - public void set(AttributeValue value, AttributeValue o) { - value.withS(o.getS()).withN(o.getN()).withB(o.getB()) - .withSS(o.getSS()).withNS(o.getNS()).withBS(o.getBS()) - .withBOOL(o.getBOOL()).withL(o.getL()).withM(o.getM()) - .withNULL(o.getNULL()); + public AttributeValue build(AttributeValue o) { + return o; } } @@ -251,11 +249,11 @@ public DynamoDBTypeConverter newConverter(ConvertibleType t } @Override public String get(AttributeValue value) { - return value.getS(); + return value.s(); } @Override - public void set(AttributeValue value, String o) { - value.setS(o); + public AttributeValue build(String o) { + return AttributeValue.builder().s(o).build(); } @Override public AttributeValue convert(String o) { @@ -280,11 +278,11 @@ public DynamoDBTypeConverter newConverter(ConvertibleType t } @Override public String get(AttributeValue value) { - return value.getN(); + return value.n(); } @Override - public void set(AttributeValue value, String o) { - value.setN(o); + public AttributeValue build(String o) { + return AttributeValue.builder().n(o).build(); } } @@ -306,11 +304,11 @@ public DynamoDBTypeConverter newConverter(ConvertibleType t } @Override public Long get(AttributeValue value) { - return Long.valueOf(value.getN()); + return Long.valueOf(value.n()); } @Override - public void set(AttributeValue value, Long o) { - value.setN(String.valueOf(o)); + public AttributeValue build(Long o) { + return AttributeValue.builder().n(String.valueOf(o)).build(); } } @@ -331,11 +329,11 @@ public DynamoDBTypeConverter newConverter(ConvertibleType t } @Override public ByteBuffer get(AttributeValue value) { - return value.getB(); + return value.b() == null ? null : value.b().asByteBuffer(); } @Override - public void set(AttributeValue value, ByteBuffer o) { - value.setB(o); + public AttributeValue build(ByteBuffer o) { + return AttributeValue.builder().b(software.amazon.awssdk.core.SdkBytes.fromByteBuffer(o)).build(); } } @@ -356,11 +354,11 @@ public DynamoDBTypeConverter> newConverter(Converti } @Override public List get(AttributeValue value) { - return value.getSS(); + return value.hasSs() ? value.ss() : null; } @Override - public void set(AttributeValue value, List o) { - value.setSS(o); + public AttributeValue build(List o) { + return AttributeValue.builder().ss(o).build(); } } @@ -381,11 +379,11 @@ public DynamoDBTypeConverter> newConverter(Converti } @Override public List get(AttributeValue value) { - return value.getNS(); + return value.hasNs() ? value.ns() : null; } @Override - public void set(AttributeValue value, List o) { - value.setNS(o); + public AttributeValue build(List o) { + return AttributeValue.builder().ns(o).build(); } } @@ -406,11 +404,23 @@ public DynamoDBTypeConverter> newConverter(Converti } @Override public List get(AttributeValue value) { - return value.getBS(); + if (!value.hasBs()) { + return null; + } + final List result = new ArrayList(value.bs().size()); + for (software.amazon.awssdk.core.SdkBytes sb : value.bs()) { + result.add(sb.asByteBuffer()); + } + return result; } @Override - public void set(AttributeValue value, List o) { - value.setBS(o); + public AttributeValue build(List o) { + final List sdkBytes = + new ArrayList(o.size()); + for (ByteBuffer bb : o) { + sdkBytes.add(software.amazon.awssdk.core.SdkBytes.fromByteBuffer(bb)); + } + return AttributeValue.builder().bs(sdkBytes).build(); } } @@ -454,16 +464,16 @@ public DynamoDBTypeConverter newConverter(ConvertibleType t } @Override public Boolean get(AttributeValue o) { - return o.getBOOL(); + return o.bool(); } @Override - public void set(AttributeValue o, Boolean value) { - o.setBOOL(value); + public AttributeValue build(Boolean value) { + return AttributeValue.builder().bool(value).build(); } @Override public Boolean unconvert(AttributeValue o) { - if (o.getBOOL() == null && o.getN() != null) { - return BOOLEAN.convert(o.getN()); + if (o.bool() == null && o.n() != null) { + return BOOLEAN.convert(o.n()); } return super.unconvert(o); } @@ -493,11 +503,11 @@ public DynamoDBTypeConverter newConverter(ConvertibleType */ @Override public String get(AttributeValue o) { - if(o.getBOOL() != null) { + if(o.bool() != null) { // Handle native bools, transform to expected numeric representation. - return o.getBOOL() ? "1" : "0"; + return o.bool() ? "1" : "0"; } - return o.getN(); + return o.n(); } /** @@ -505,8 +515,8 @@ public String get(AttributeValue o) { * DynamoDBNativeBoolean} or {@link DynamoDBTyped}. */ @Override - public void set(AttributeValue o, String value) { - o.setN(value); + public AttributeValue build(String value) { + return AttributeValue.builder().n(value).build(); } } @@ -527,11 +537,11 @@ public DynamoDBTypeConverter> newConverter(Converti } @Override public List get(AttributeValue value) { - return value.getL(); + return value.hasL() ? value.l() : null; } @Override - public void set(AttributeValue value, List o) { - value.setL(o); + public AttributeValue build(List o) { + return AttributeValue.builder().l(o).build(); } } @@ -548,8 +558,8 @@ public boolean isAssignableFrom(ConvertibleType type) { } @Override public List unconvert(AttributeValue o) { - if (o.getL() == null && o.getNS() != null) { - return LIST.convert(o.getNS(), new NativeBool(true).join(scalars.getConverter(Boolean.class, String.class))); + if (!o.hasL() && o.hasNs()) { + return LIST.convert(o.ns(), new NativeBool(true).join(scalars.getConverter(Boolean.class, String.class))); } return super.unconvert(o); } @@ -572,11 +582,11 @@ public DynamoDBTypeConverter> newConverter(ConvertibleTyp } @Override public List get(AttributeValue value) { - return value.getL(); + return value.hasL() ? value.l() : null; } @Override - public void set(AttributeValue value, List o) { - value.setL(o); + public AttributeValue build(List o) { + return AttributeValue.builder().l(o).build(); } } @@ -600,11 +610,11 @@ public DynamoDBTypeConverter> newConverter(Converti } @Override public Map get(AttributeValue value) { - return value.getM(); + return value.hasM() ? value.m() : null; } @Override - public void set(AttributeValue value, Map o) { - value.setM(o); + public AttributeValue build(Map o) { + return AttributeValue.builder().m(o).build(); } } @@ -636,11 +646,11 @@ public final T unconvert(final Map o) { } @Override public Map get(AttributeValue value) { - return value.getM(); + return value.hasM() ? value.m() : null; } @Override - public void set(AttributeValue value, Map o) { - value.setM(o); + public AttributeValue build(Map o) { + return AttributeValue.builder().m(o).build(); } } @@ -660,7 +670,7 @@ public T get(AttributeValue value) { throw new DynamoDBMappingException("not supported; requires @DynamoDBTyped or @DynamoDBTypeConverted"); } @Override - public void set(AttributeValue value, T o) { + public AttributeValue build(T o) { throw new DynamoDBMappingException("not supported; requires @DynamoDBTyped or @DynamoDBTypeConverted"); } } @@ -679,7 +689,7 @@ private DynamoDBTypeConverter getConverter(Class sourceType, Convert private DynamoDBTypeConverter getConverter(ConvertibleType type) { return new DelegateConverter(getRule(type).newConverter(type)) { public final AttributeValue convert(T o) { - return o == null ? new AttributeValue().withNULL(true) : super.convert(o); + return o == null ? AttributeValue.builder().nul(true).build() : super.convert(o); } }; } @@ -688,7 +698,7 @@ public final AttributeValue convert(T o) { /** * Basic attribute value conversion functions. */ - private static abstract class AbstractRule extends AbstractConverter implements Reflect, Rule { + private static abstract class AbstractRule extends AbstractConverter implements Rule { protected final DynamoDBAttributeType attributeType; protected final boolean supported; protected AbstractRule(DynamoDBAttributeType attributeType, boolean supported) { @@ -705,14 +715,20 @@ public DynamoDBAttributeType getAttributeType() { } @Override public AttributeValue convert(final S o) { - final AttributeValue value = new AttributeValue(); - set(value, o); - return value; + return build(o); } + /** + * Builds an immutable v2 AttributeValue from the given value. + */ + public abstract AttributeValue build(S o); + /** + * Extracts the value from an AttributeValue. + */ + public abstract S get(AttributeValue o); @Override public S unconvert(final AttributeValue o) { final S value = get(o); - if (value == null && o.isNULL() == null) { + if (value == null && o.nul() == null) { throw new DynamoDBMappingException("expected " + attributeType + " in value " + o); } return value; diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/StandardTypeConverters.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/StandardTypeConverters.java index a23c94a0b287..d3511958ae67 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/StandardTypeConverters.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/StandardTypeConverters.java @@ -14,9 +14,8 @@ */ package software.amazon.awssdk.mapper.dynamodb; -import com.amazonaws.annotation.SdkInternalApi; -import com.amazonaws.services.dynamodbv2.model.ScalarAttributeType; -import com.amazonaws.util.DateUtils; +import software.amazon.awssdk.annotations.SdkInternalApi; +import software.amazon.awssdk.services.dynamodb.model.ScalarAttributeType; import java.math.BigDecimal; import java.math.BigInteger; @@ -686,7 +685,7 @@ public final Date convert(final Long o) { private static final ToDate FromString = new ToDate() { @Override public final Date convert(final String o) { - return DateUtils.parseISO8601Date(o); + return MapperDateUtils.parseISO8601Date(o); } }; } @@ -856,7 +855,7 @@ public final String convert(final byte[] o) { private static final ToString FromDate = new ToString() { @Override public final String convert(final Date o) { - return DateUtils.formatISO8601Date(o); + return MapperDateUtils.formatISO8601Date(o); } }; diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/UpdateExpressionGenerator.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/UpdateExpressionGenerator.java index 8bac03484ec5..446de3f2ed4a 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/UpdateExpressionGenerator.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/UpdateExpressionGenerator.java @@ -26,7 +26,7 @@ import java.util.zip.Adler32; import com.amazonaws.annotation.SdkInternalApi; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * This class will contain logic for converting an update object that customer has passed-in into diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/VersionAttributeConditionExpressionGenerator.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/VersionAttributeConditionExpressionGenerator.java index 479af39d8e6c..4e7724d8203a 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/VersionAttributeConditionExpressionGenerator.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/VersionAttributeConditionExpressionGenerator.java @@ -19,7 +19,7 @@ import java.util.Map; import com.amazonaws.annotation.SdkInternalApi; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * This class contains logic to generate condition expressions for version attribute diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/BooleanSetToNumberSetMarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/BooleanSetToNumberSetMarshaller.java index eef1d493e1e6..7881f2840c27 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/BooleanSetToNumberSetMarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/BooleanSetToNumberSetMarshaller.java @@ -19,7 +19,7 @@ import java.util.Set; import software.amazon.awssdk.mapper.dynamodb.ArgumentMarshaller.NumberSetAttributeMarshaller; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * A legacy marshaller that marshals sets of Java {@code Booleans} into DynamoDB @@ -54,6 +54,6 @@ public AttributeValue marshall(Object obj) { } } - return new AttributeValue().withNS(booleanAttributes); + return AttributeValue.builder().ns(booleanAttributes).build(); } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/BooleanToBooleanMarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/BooleanToBooleanMarshaller.java index 9904910acfa4..74f88fbc2006 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/BooleanToBooleanMarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/BooleanToBooleanMarshaller.java @@ -15,7 +15,7 @@ package software.amazon.awssdk.mapper.dynamodb.marshallers; import software.amazon.awssdk.mapper.dynamodb.ArgumentMarshaller.BooleanAttributeMarshaller; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * A marshaller that marshals Java {@code Boolean} objects to Dynamodb-native @@ -35,6 +35,6 @@ private BooleanToBooleanMarshaller() { @Override public AttributeValue marshall(Object obj) { - return new AttributeValue().withBOOL((Boolean) obj); + return AttributeValue.builder().bool((Boolean) obj).build(); } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/BooleanToNumberMarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/BooleanToNumberMarshaller.java index b4da217fc24d..2e84c325defd 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/BooleanToNumberMarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/BooleanToNumberMarshaller.java @@ -15,7 +15,7 @@ package software.amazon.awssdk.mapper.dynamodb.marshallers; import software.amazon.awssdk.mapper.dynamodb.ArgumentMarshaller.NumberAttributeMarshaller; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * A legacy marshaller that marshals Java {@code Booleans} into DynamoDB @@ -39,9 +39,9 @@ private BooleanToNumberMarshaller() { public AttributeValue marshall(Object obj) { Boolean bool = (Boolean) obj; if (bool == null || bool == false) { - return new AttributeValue().withN("0"); + return AttributeValue.builder().n("0").build(); } else { - return new AttributeValue().withN("1"); + return AttributeValue.builder().n("1").build(); } } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/ByteArraySetToBinarySetMarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/ByteArraySetToBinarySetMarshaller.java index 3351a864955b..6311efb5bfe3 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/ByteArraySetToBinarySetMarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/ByteArraySetToBinarySetMarshaller.java @@ -20,7 +20,8 @@ import java.util.Set; import software.amazon.awssdk.mapper.dynamodb.ArgumentMarshaller.BinarySetAttributeMarshaller; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.core.SdkBytes; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * A marshaller that marshals sets of Java {@code byte[]}s into DynamoDB @@ -43,12 +44,12 @@ private ByteArraySetToBinarySetMarshaller() { public AttributeValue marshall(Object obj) { @SuppressWarnings("unchecked") Set buffers = (Set) obj; - List attributes = new ArrayList(buffers.size()); + List attributes = new ArrayList(buffers.size()); for (byte[] b : buffers) { - attributes.add(ByteBuffer.wrap(b)); + attributes.add(SdkBytes.fromByteArray(b)); } - return new AttributeValue().withBS(attributes); + return AttributeValue.builder().bs(attributes).build(); } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/ByteArrayToBinaryMarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/ByteArrayToBinaryMarshaller.java index cb9fdc928bbd..d2fafd4c7af8 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/ByteArrayToBinaryMarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/ByteArrayToBinaryMarshaller.java @@ -17,7 +17,8 @@ import java.nio.ByteBuffer; import software.amazon.awssdk.mapper.dynamodb.ArgumentMarshaller.BinaryAttributeMarshaller; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.core.SdkBytes; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * A marshaller that marshals Java {@code byte[]}s into DynamoDB Binary @@ -37,6 +38,6 @@ private ByteArrayToBinaryMarshaller() { @Override public AttributeValue marshall(Object obj) { - return new AttributeValue().withB(ByteBuffer.wrap((byte[]) obj)); + return AttributeValue.builder().b(SdkBytes.fromByteArray((byte[]) obj)).build(); } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/ByteBufferSetToBinarySetMarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/ByteBufferSetToBinarySetMarshaller.java index edc14f33ba66..1f38e412450e 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/ByteBufferSetToBinarySetMarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/ByteBufferSetToBinarySetMarshaller.java @@ -20,7 +20,8 @@ import java.util.Set; import software.amazon.awssdk.mapper.dynamodb.ArgumentMarshaller.BinarySetAttributeMarshaller; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.core.SdkBytes; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * A marshaller that marshals sets of Java {@code ByteBuffer}s into DynamoDB @@ -43,12 +44,12 @@ private ByteBufferSetToBinarySetMarshaller() { public AttributeValue marshall(Object obj) { @SuppressWarnings("unchecked") Set buffers = (Set) obj; - List attributes = new ArrayList(buffers.size()); + List attributes = new ArrayList(buffers.size()); for (ByteBuffer b : buffers) { - attributes.add(b); + attributes.add(SdkBytes.fromByteBuffer(b)); } - return new AttributeValue().withBS(attributes); + return AttributeValue.builder().bs(attributes).build(); } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/ByteBufferToBinaryMarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/ByteBufferToBinaryMarshaller.java index 1f6078299008..d3cc6b1e8edf 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/ByteBufferToBinaryMarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/ByteBufferToBinaryMarshaller.java @@ -17,7 +17,8 @@ import java.nio.ByteBuffer; import software.amazon.awssdk.mapper.dynamodb.ArgumentMarshaller.BinaryAttributeMarshaller; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.core.SdkBytes; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * A marshaller that marshals Java {@code ByteBuffer}s into DynamoDB Binary @@ -37,6 +38,6 @@ private ByteBufferToBinaryMarshaller() { @Override public AttributeValue marshall(Object obj) { - return new AttributeValue().withB((ByteBuffer) obj); + return AttributeValue.builder().b(SdkBytes.fromByteBuffer((ByteBuffer) obj)).build(); } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/CalendarSetToStringSetMarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/CalendarSetToStringSetMarshaller.java index df3f39d352ec..48b8a38ab851 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/CalendarSetToStringSetMarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/CalendarSetToStringSetMarshaller.java @@ -14,14 +14,15 @@ */ package software.amazon.awssdk.mapper.dynamodb.marshallers; +import software.amazon.awssdk.mapper.dynamodb.MapperDateUtils; + import java.util.ArrayList; import java.util.Calendar; import java.util.List; import java.util.Set; import software.amazon.awssdk.mapper.dynamodb.ArgumentMarshaller.StringSetAttributeMarshaller; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; -import com.amazonaws.util.DateUtils; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * A marshaller that marshals sets of Java {@code Calendar} objects into @@ -47,9 +48,9 @@ public AttributeValue marshall(Object obj) { List timestamps = new ArrayList(dates.size()); for (Calendar date : dates) { - timestamps.add(DateUtils.formatISO8601Date(date.getTime())); + timestamps.add(MapperDateUtils.formatISO8601Date(date.getTime())); } - return new AttributeValue().withSS(timestamps); + return AttributeValue.builder().ss(timestamps).build(); } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/CalendarToStringMarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/CalendarToStringMarshaller.java index 495cb0e71902..ade24aa1fd3f 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/CalendarToStringMarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/CalendarToStringMarshaller.java @@ -14,11 +14,12 @@ */ package software.amazon.awssdk.mapper.dynamodb.marshallers; +import software.amazon.awssdk.mapper.dynamodb.MapperDateUtils; + import java.util.Calendar; import software.amazon.awssdk.mapper.dynamodb.ArgumentMarshaller.StringAttributeMarshaller; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; -import com.amazonaws.util.DateUtils; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * A marshaller that marshals Java {@code Calendar} objects into DynamoDB @@ -38,7 +39,7 @@ private CalendarToStringMarshaller() { @Override public AttributeValue marshall(Object obj) { - return new AttributeValue().withS( - DateUtils.formatISO8601Date(((Calendar) obj).getTime())); + return AttributeValue.builder().s( + MapperDateUtils.formatISO8601Date(((Calendar) obj).getTime())).build(); } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/CollectionToListMarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/CollectionToListMarshaller.java index 7b72b374c9ad..915a0b773bff 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/CollectionToListMarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/CollectionToListMarshaller.java @@ -20,7 +20,7 @@ import software.amazon.awssdk.mapper.dynamodb.ArgumentMarshaller; import software.amazon.awssdk.mapper.dynamodb.ArgumentMarshaller.ListAttributeMarshaller; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; public class CollectionToListMarshaller implements ListAttributeMarshaller { @@ -56,7 +56,7 @@ public AttributeValue marshall(Object obj) { for (Object o : objects) { AttributeValue value; if (o == null) { - value = new AttributeValue().withNULL(true); + value = AttributeValue.builder().nul(true).build(); } else { value = memberMarshaller.marshall(o); } @@ -64,9 +64,7 @@ public AttributeValue marshall(Object obj) { values.add(value); } - AttributeValue result = new AttributeValue(); - result.setL(values); - return result; + return AttributeValue.builder().l(values).build(); } public ArgumentMarshaller getMemberMarshaller() { diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/CustomMarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/CustomMarshaller.java index fe208e0ad529..e55cf402aacd 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/CustomMarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/CustomMarshaller.java @@ -17,7 +17,7 @@ import software.amazon.awssdk.mapper.dynamodb.ArgumentMarshaller.StringAttributeMarshaller; import software.amazon.awssdk.mapper.dynamodb.DynamoDBMappingException; import software.amazon.awssdk.mapper.dynamodb.DynamoDBMarshaller; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * A marshaller that delegates to an instance of a @@ -48,7 +48,7 @@ public AttributeValue marshall(Object obj) { if (stringValue == null) { return null; } else { - return new AttributeValue(stringValue); + return AttributeValue.builder().s(stringValue).build(); } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/DateSetToStringSetMarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/DateSetToStringSetMarshaller.java index ccd127e91c4d..23d521002ddf 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/DateSetToStringSetMarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/DateSetToStringSetMarshaller.java @@ -14,14 +14,15 @@ */ package software.amazon.awssdk.mapper.dynamodb.marshallers; +import software.amazon.awssdk.mapper.dynamodb.MapperDateUtils; + import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Set; import software.amazon.awssdk.mapper.dynamodb.ArgumentMarshaller.StringSetAttributeMarshaller; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; -import com.amazonaws.util.DateUtils; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * A marshaller that marshals sets of Java {@code Date} objects into DynamoDB @@ -47,9 +48,9 @@ public AttributeValue marshall(Object obj) { List timestamps = new ArrayList(dates.size()); for (Date date : dates) { - timestamps.add(DateUtils.formatISO8601Date(date)); + timestamps.add(MapperDateUtils.formatISO8601Date(date)); } - return new AttributeValue().withSS(timestamps); + return AttributeValue.builder().ss(timestamps).build(); } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/DateToStringMarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/DateToStringMarshaller.java index 93e1cd3cbb1a..a421e360b6c6 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/DateToStringMarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/DateToStringMarshaller.java @@ -14,11 +14,12 @@ */ package software.amazon.awssdk.mapper.dynamodb.marshallers; +import software.amazon.awssdk.mapper.dynamodb.MapperDateUtils; + import java.util.Date; import software.amazon.awssdk.mapper.dynamodb.ArgumentMarshaller.StringAttributeMarshaller; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; -import com.amazonaws.util.DateUtils; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * A marshaller that marshals Java {@code Date} objects into DynamoDB Strings @@ -38,7 +39,7 @@ private DateToStringMarshaller() { @Override public AttributeValue marshall(Object obj) { - return new AttributeValue().withS( - DateUtils.formatISO8601Date((Date) obj)); + return AttributeValue.builder().s( + MapperDateUtils.formatISO8601Date((Date) obj)).build(); } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/MapToMapMarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/MapToMapMarshaller.java index a5fcfa8264e5..b070ec8da31b 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/MapToMapMarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/MapToMapMarshaller.java @@ -19,7 +19,7 @@ import software.amazon.awssdk.mapper.dynamodb.ArgumentMarshaller; import software.amazon.awssdk.mapper.dynamodb.ArgumentMarshaller.MapAttributeMarshaller; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; public class MapToMapMarshaller implements MapAttributeMarshaller { @@ -59,7 +59,7 @@ public AttributeValue marshall(Object obj) { for (Map.Entry entry : map.entrySet()) { AttributeValue value; if (entry.getValue() == null) { - value = new AttributeValue().withNULL(true); + value = AttributeValue.builder().nul(true).build(); } else { value = memberMarshaller.marshall(entry.getValue()); } @@ -67,9 +67,7 @@ public AttributeValue marshall(Object obj) { values.put(entry.getKey(), value); } - AttributeValue result = new AttributeValue(); - result.setM(values); - return result; + return AttributeValue.builder().m(values).build(); } public ArgumentMarshaller getMemberMarshaller() { diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/NumberSetToNumberSetMarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/NumberSetToNumberSetMarshaller.java index 527f4acbd4d5..25f12bc75c3c 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/NumberSetToNumberSetMarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/NumberSetToNumberSetMarshaller.java @@ -19,7 +19,7 @@ import java.util.Set; import software.amazon.awssdk.mapper.dynamodb.ArgumentMarshaller.NumberSetAttributeMarshaller; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * A marshaller that marshals sets of Java {@code Number}s into DynamoDB @@ -48,6 +48,6 @@ public AttributeValue marshall(Object obj) { numberAttributes.add(n.toString()); } - return new AttributeValue().withNS(numberAttributes); + return AttributeValue.builder().ns(numberAttributes).build(); } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/NumberToNumberMarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/NumberToNumberMarshaller.java index 4d376b1be550..0a6935cfba13 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/NumberToNumberMarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/NumberToNumberMarshaller.java @@ -15,7 +15,7 @@ package software.amazon.awssdk.mapper.dynamodb.marshallers; import software.amazon.awssdk.mapper.dynamodb.ArgumentMarshaller.NumberAttributeMarshaller; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * A marshaller that marshals any Java {@code Number} to a DynamoDB number. @@ -35,6 +35,6 @@ private NumberToNumberMarshaller() { @Override public AttributeValue marshall(Object obj) { Number number = (Number) obj; - return new AttributeValue().withN(number.toString()); + return AttributeValue.builder().n(number.toString()).build(); } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/ObjectSetToStringSetMarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/ObjectSetToStringSetMarshaller.java index 41f36f33ca7d..3d213bb9674c 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/ObjectSetToStringSetMarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/ObjectSetToStringSetMarshaller.java @@ -22,7 +22,7 @@ import org.apache.commons.logging.LogFactory; import software.amazon.awssdk.mapper.dynamodb.ArgumentMarshaller.StringSetAttributeMarshaller; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * A legacy marshaller that marshals sets of arbitrary Java objects into @@ -63,6 +63,6 @@ public AttributeValue marshall(Object obj) { strings.add(String.valueOf(o)); } - return new AttributeValue().withSS(strings); + return AttributeValue.builder().ss(strings).build(); } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/ObjectToMapMarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/ObjectToMapMarshaller.java index 279fecfac192..27516ac681cf 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/ObjectToMapMarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/ObjectToMapMarshaller.java @@ -18,7 +18,7 @@ import software.amazon.awssdk.mapper.dynamodb.ArgumentMarshaller.MapAttributeMarshaller; import software.amazon.awssdk.mapper.dynamodb.ItemConverter; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; public class ObjectToMapMarshaller implements MapAttributeMarshaller { @@ -45,6 +45,6 @@ public ObjectToMapMarshaller(ItemConverter converter) { @Override public AttributeValue marshall(Object obj) { Map values = converter.convert(obj); - return new AttributeValue().withM(values); + return AttributeValue.builder().m(values).build(); } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/ObjectToStringMarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/ObjectToStringMarshaller.java index 4b8f40948fe0..ec3dd4dccf44 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/ObjectToStringMarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/ObjectToStringMarshaller.java @@ -15,7 +15,7 @@ package software.amazon.awssdk.mapper.dynamodb.marshallers; import software.amazon.awssdk.mapper.dynamodb.ArgumentMarshaller.StringAttributeMarshaller; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * A marshaller that marshals Java {@code Object} objects into DynamoDB @@ -37,6 +37,6 @@ private ObjectToStringMarshaller() { @Override public AttributeValue marshall(Object obj) { - return new AttributeValue().withS(obj.toString()); + return AttributeValue.builder().s(obj.toString()).build(); } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/S3LinkToStringMarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/S3LinkToStringMarshaller.java index af4fd95d673b..911bc5b2ba57 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/S3LinkToStringMarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/S3LinkToStringMarshaller.java @@ -16,7 +16,7 @@ import software.amazon.awssdk.mapper.dynamodb.ArgumentMarshaller.StringAttributeMarshaller; import software.amazon.awssdk.mapper.dynamodb.S3Link; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * A marshaller that marshals {@code S3Link} objects to DynamoDB Strings, @@ -44,6 +44,6 @@ public AttributeValue marshall(Object obj) { return null; } - return new AttributeValue().withS(s3link.toJson()); + return AttributeValue.builder().s(s3link.toJson()).build(); } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/StringSetToStringSetMarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/StringSetToStringSetMarshaller.java index 6f9f9c607349..5f87c82043b7 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/StringSetToStringSetMarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/StringSetToStringSetMarshaller.java @@ -19,7 +19,7 @@ import java.util.Set; import software.amazon.awssdk.mapper.dynamodb.ArgumentMarshaller.StringSetAttributeMarshaller; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * A marshaller that marshals sets of Java {@code String}s to DynamoDB @@ -48,6 +48,6 @@ public AttributeValue marshall(Object obj) { strings.add(s); } - return new AttributeValue().withSS(strings); + return AttributeValue.builder().ss(strings).build(); } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/StringToStringMarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/StringToStringMarshaller.java index 66e3d3f76eac..40b2e3dcd484 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/StringToStringMarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/StringToStringMarshaller.java @@ -15,7 +15,7 @@ package software.amazon.awssdk.mapper.dynamodb.marshallers; import software.amazon.awssdk.mapper.dynamodb.ArgumentMarshaller.StringAttributeMarshaller; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * A marshaller that marshals Java {@code String} objects to DynamoDB Strings. @@ -40,6 +40,6 @@ public AttributeValue marshall(Object obj) { return null; } - return new AttributeValue().withS(string); + return AttributeValue.builder().s(string).build(); } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/UUIDSetToStringSetMarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/UUIDSetToStringSetMarshaller.java index a94d0ac4a7f4..739c4ed1d753 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/UUIDSetToStringSetMarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/marshallers/UUIDSetToStringSetMarshaller.java @@ -20,7 +20,7 @@ import java.util.UUID; import software.amazon.awssdk.mapper.dynamodb.ArgumentMarshaller.StringSetAttributeMarshaller; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * A marshaller that marshals sets of Java {@code Object} objects into @@ -51,6 +51,6 @@ public AttributeValue marshall(Object obj) { strings.add(uuid.toString()); } - return new AttributeValue().withSS(strings); + return AttributeValue.builder().ss(strings).build(); } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/BSUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/BSUnmarshaller.java index 93300374a5ac..0718fd401ed7 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/BSUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/BSUnmarshaller.java @@ -18,13 +18,13 @@ import software.amazon.awssdk.mapper.dynamodb.ArgumentUnmarshaller; import software.amazon.awssdk.mapper.dynamodb.DynamoDBMappingException; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; abstract class BSUnmarshaller implements ArgumentUnmarshaller { @Override public void typeCheck(AttributeValue value, Method setter) { - if ( value.getBS() == null ) { + if ( !value.hasBs() ) { throw new DynamoDBMappingException("Expected BS in value " + value + " when invoking " + setter); } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/BUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/BUnmarshaller.java index 2f6a72a76a47..678104a476aa 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/BUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/BUnmarshaller.java @@ -18,13 +18,13 @@ import software.amazon.awssdk.mapper.dynamodb.ArgumentUnmarshaller; import software.amazon.awssdk.mapper.dynamodb.DynamoDBMappingException; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; abstract class BUnmarshaller implements ArgumentUnmarshaller { @Override public void typeCheck(AttributeValue value, Method setter) { - if ( value.getB() == null ) { + if ( value.b() == null ) { throw new DynamoDBMappingException("Expected B in value " + value + " when invoking " + setter); } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/BigDecimalSetUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/BigDecimalSetUnmarshaller.java index de1f37c5f5fc..2ead94fdb96b 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/BigDecimalSetUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/BigDecimalSetUnmarshaller.java @@ -18,7 +18,7 @@ import java.util.HashSet; import java.util.Set; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * An unmarshaller that unmarshals DynamoDB NumberSets into sets of Java @@ -39,7 +39,7 @@ private BigDecimalSetUnmarshaller() { @Override public Object unmarshall(AttributeValue value) { Set result = new HashSet(); - for (String s : value.getNS()) { + for (String s : value.ns()) { result.add(new BigDecimal(s)); } return result; diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/BigDecimalUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/BigDecimalUnmarshaller.java index 58298682189e..8c76a7b53fc0 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/BigDecimalUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/BigDecimalUnmarshaller.java @@ -16,7 +16,7 @@ import java.math.BigDecimal; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * An unmarshaller that unmarshals DynamoDB Numbers into Java @@ -36,6 +36,6 @@ private BigDecimalUnmarshaller() { @Override public Object unmarshall(AttributeValue value) { - return new BigDecimal(value.getN()); + return new BigDecimal(value.n()); } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/BigIntegerSetUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/BigIntegerSetUnmarshaller.java index 8d6cf2c507e5..61a9c6b1bcba 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/BigIntegerSetUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/BigIntegerSetUnmarshaller.java @@ -18,7 +18,7 @@ import java.util.HashSet; import java.util.Set; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * An unmarshaller that unmarshals DynamoDB NumberSets into sets of Java @@ -39,7 +39,7 @@ private BigIntegerSetUnmarshaller() { @Override public Object unmarshall(AttributeValue value) { Set result = new HashSet(); - for (String s : value.getNS()) { + for (String s : value.ns()) { result.add(new BigInteger(s)); } return result; diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/BigIntegerUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/BigIntegerUnmarshaller.java index 935b68a3e1d2..ac0fc0896be2 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/BigIntegerUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/BigIntegerUnmarshaller.java @@ -16,7 +16,7 @@ import java.math.BigInteger; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * An unmarshaller that unmarshals DynamoDB Numbers into Java @@ -36,6 +36,6 @@ private BigIntegerUnmarshaller() { @Override public Object unmarshall(AttributeValue value) { - return new BigInteger(value.getN()); + return new BigInteger(value.n()); } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/BooleanSetUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/BooleanSetUnmarshaller.java index 3f96f98a2fd2..cb05e5b77f29 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/BooleanSetUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/BooleanSetUnmarshaller.java @@ -21,7 +21,7 @@ import software.amazon.awssdk.mapper.dynamodb.ArgumentUnmarshaller; import software.amazon.awssdk.mapper.dynamodb.DynamoDBMappingException; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * A special unmarshaller for Set<Boolean>, which the V1 schema stores as @@ -42,7 +42,7 @@ private BooleanSetUnmarshaller() { @Override public void typeCheck(AttributeValue value, Method setter) { - if (value.getNS() == null && value.getL() == null) { + if (!value.hasNs() && !value.hasL()) { throw new DynamoDBMappingException( "Expected either L or NS in value " + value + " when invoking " + setter); @@ -51,10 +51,10 @@ public void typeCheck(AttributeValue value, Method setter) { @Override public Object unmarshall(AttributeValue value) { - if (value.getL() != null) { - return unmarshallList(value.getL()); + if (value.hasL()) { + return unmarshallList(value.l()); } else { - return unmarshallNS(value.getNS()); + return unmarshallNS(value.ns()); } } @@ -63,10 +63,10 @@ private Set unmarshallList(List values) { for (AttributeValue value : values) { Boolean bool; - if (Boolean.TRUE.equals(value.isNULL())) { + if (Boolean.TRUE.equals(value.nul())) { bool = null; } else { - bool = value.getBOOL(); + bool = value.bool(); if (bool == null) { throw new DynamoDBMappingException( value + " is not a boolean"); diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/BooleanUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/BooleanUnmarshaller.java index ce0245dd24f8..16514572bb96 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/BooleanUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/BooleanUnmarshaller.java @@ -18,7 +18,7 @@ import software.amazon.awssdk.mapper.dynamodb.ArgumentUnmarshaller; import software.amazon.awssdk.mapper.dynamodb.DynamoDBMappingException; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * An unmarshaller that unmarshals DynamoDB Bools (or Numbers) into Java @@ -41,7 +41,7 @@ private BooleanUnmarshaller() { @Override public void typeCheck(AttributeValue value, Method setter) { - if (value.getN() == null && value.getBOOL() == null) { + if (value.n() == null && value.bool() == null) { throw new DynamoDBMappingException( "Expected either N or BOOL in value " + value + " when invoking " + setter); @@ -50,13 +50,13 @@ public void typeCheck(AttributeValue value, Method setter) { @Override public Object unmarshall(AttributeValue value) { - if (value.getBOOL() != null) { - return value.getBOOL(); + if (value.bool() != null) { + return value.bool(); } - if ("1".equals(value.getN())) { + if ("1".equals(value.n())) { return Boolean.TRUE; } - if ("0".equals(value.getN())) { + if ("0".equals(value.n())) { return Boolean.FALSE; } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteArraySetUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteArraySetUnmarshaller.java index 3bfbc0443e48..f1e967e0a3b1 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteArraySetUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteArraySetUnmarshaller.java @@ -18,7 +18,7 @@ import java.util.HashSet; import java.util.Set; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * An unmarshaller that unmarshals BinarySet values as sets of Java @@ -40,7 +40,8 @@ private ByteArraySetUnmarshaller() { public Object unmarshall(AttributeValue value) { Set result = new HashSet(); - for (ByteBuffer buffer : value.getBS()) { + for (software.amazon.awssdk.core.SdkBytes sdkBytes : value.bs()) { + ByteBuffer buffer = sdkBytes.asByteBuffer(); if (buffer.hasArray()) { result.add(buffer.array()); } else { diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteArrayUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteArrayUnmarshaller.java index 75e53b79fe29..526a0e8a2432 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteArrayUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteArrayUnmarshaller.java @@ -16,7 +16,7 @@ import java.nio.ByteBuffer; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * An unmarshaller that unmarshals Binary values as Java {@code byte[]}s. @@ -35,7 +35,7 @@ private ByteArrayUnmarshaller() { @Override public Object unmarshall(AttributeValue value) { - ByteBuffer buffer = value.getB(); + ByteBuffer buffer = value.b().asByteBuffer(); if (buffer.hasArray()) { return buffer.array(); diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteBufferSetUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteBufferSetUnmarshaller.java index 2187cdaeed98..fbf50c775d1f 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteBufferSetUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteBufferSetUnmarshaller.java @@ -16,8 +16,9 @@ import java.nio.ByteBuffer; import java.util.HashSet; +import java.util.Set; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * An unmarshaller that unmarshals BinarySet values as sets of Java @@ -37,6 +38,10 @@ private ByteBufferSetUnmarshaller() { @Override public Object unmarshall(AttributeValue value) { - return new HashSet(value.getBS()); + Set result = new HashSet(); + for (software.amazon.awssdk.core.SdkBytes sdkBytes : value.bs()) { + result.add(sdkBytes.asByteBuffer()); + } + return result; } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteBufferUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteBufferUnmarshaller.java index 2904da8910a1..b65090082788 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteBufferUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteBufferUnmarshaller.java @@ -14,7 +14,7 @@ */ package software.amazon.awssdk.mapper.dynamodb.unmarshallers; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * An unmarshaller that unmarshals Binary values as Java {@code ByteBuffer}s. @@ -33,6 +33,6 @@ private ByteBufferUnmarshaller() { @Override public Object unmarshall(AttributeValue value) { - return value.getB(); + return value.b().asByteBuffer(); } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteSetUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteSetUnmarshaller.java index a223bbc684b4..ca5485953111 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteSetUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteSetUnmarshaller.java @@ -17,7 +17,7 @@ import java.util.HashSet; import java.util.Set; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * An unmarshaller that unmarshals DynamoDB NumberSets into sets of Java @@ -38,7 +38,7 @@ private ByteSetUnmarshaller() { @Override public Object unmarshall(AttributeValue value) { Set result = new HashSet(); - for (String s : value.getNS()) { + for (String s : value.ns()) { result.add(Byte.valueOf(s)); } return result; diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteUnmarshaller.java index 1b5d8d18f479..95deb5b33343 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteUnmarshaller.java @@ -14,7 +14,7 @@ */ package software.amazon.awssdk.mapper.dynamodb.unmarshallers; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * An unmarshaller that unmarshals DynamoDB Numbers into Java @@ -34,6 +34,6 @@ private ByteUnmarshaller() { @Override public Object unmarshall(AttributeValue value) { - return Byte.valueOf(value.getN()); + return Byte.valueOf(value.n()); } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/CalendarSetUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/CalendarSetUnmarshaller.java index dba2c775596e..dbaa69190be7 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/CalendarSetUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/CalendarSetUnmarshaller.java @@ -14,13 +14,14 @@ */ package software.amazon.awssdk.mapper.dynamodb.unmarshallers; +import software.amazon.awssdk.mapper.dynamodb.MapperDateUtils; + import java.util.Calendar; import java.util.GregorianCalendar; import java.util.HashSet; import java.util.Set; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; -import com.amazonaws.util.DateUtils; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * An unmarshaller that unmarshals sets of ISO-8601-formatted dates as sets of @@ -42,9 +43,9 @@ private CalendarSetUnmarshaller() { public Object unmarshall(AttributeValue value) { Set result = new HashSet(); - for (String s : value.getSS()) { + for (String s : value.ss()) { Calendar cal = GregorianCalendar.getInstance(); - cal.setTime(DateUtils.parseISO8601Date(s)); + cal.setTime(MapperDateUtils.parseISO8601Date(s)); result.add(cal); } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/CalendarUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/CalendarUnmarshaller.java index 6b61a673c650..f8c0b8bcea59 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/CalendarUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/CalendarUnmarshaller.java @@ -14,11 +14,12 @@ */ package software.amazon.awssdk.mapper.dynamodb.unmarshallers; +import software.amazon.awssdk.mapper.dynamodb.MapperDateUtils; + import java.util.Calendar; import java.util.GregorianCalendar; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; -import com.amazonaws.util.DateUtils; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * An unmarshaller that unmarshals ISO-8601-formatted dates as Java @@ -39,7 +40,7 @@ private CalendarUnmarshaller() { @Override public Object unmarshall(AttributeValue value) { Calendar cal = GregorianCalendar.getInstance(); - cal.setTime(DateUtils.parseISO8601Date(value.getS())); + cal.setTime(MapperDateUtils.parseISO8601Date(value.s())); return cal; } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/CustomUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/CustomUnmarshaller.java index 54f081162f37..91752d86f9e7 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/CustomUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/CustomUnmarshaller.java @@ -16,7 +16,7 @@ import software.amazon.awssdk.mapper.dynamodb.DynamoDBMappingException; import software.amazon.awssdk.mapper.dynamodb.DynamoDBMarshaller; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * An unmarshaller that delegates to an instance of a @@ -46,7 +46,7 @@ public Object unmarshall(AttributeValue value) { DynamoDBMarshaller unmarshaller = createUnmarshaller(unmarshallerClass); - return unmarshaller.unmarshall(targetClass, value.getS()); + return unmarshaller.unmarshall(targetClass, value.s()); } @SuppressWarnings({ "rawtypes" }) diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/DateSetUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/DateSetUnmarshaller.java index 95ee52e3e4b1..cfba3d3cc8cd 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/DateSetUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/DateSetUnmarshaller.java @@ -14,12 +14,13 @@ */ package software.amazon.awssdk.mapper.dynamodb.unmarshallers; +import software.amazon.awssdk.mapper.dynamodb.MapperDateUtils; + import java.util.Date; import java.util.HashSet; import java.util.Set; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; -import com.amazonaws.util.DateUtils; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * An unmarshaller that unmarshals sets of ISO-8601-formatted dates as sets of @@ -41,8 +42,8 @@ private DateSetUnmarshaller() { public Object unmarshall(AttributeValue value) { Set result = new HashSet(); - for (String s : value.getSS()) { - result.add(DateUtils.parseISO8601Date(s)); + for (String s : value.ss()) { + result.add(MapperDateUtils.parseISO8601Date(s)); } return result; diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/DateUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/DateUnmarshaller.java index 84fbfda0114f..6c236fab56dc 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/DateUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/DateUnmarshaller.java @@ -14,8 +14,9 @@ */ package software.amazon.awssdk.mapper.dynamodb.unmarshallers; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; -import com.amazonaws.util.DateUtils; +import software.amazon.awssdk.mapper.dynamodb.MapperDateUtils; + +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * An unmarshaller that unmarshals ISO-8601-formatted dates as Java @@ -35,6 +36,6 @@ private DateUnmarshaller() { @Override public Object unmarshall(AttributeValue value) { - return DateUtils.parseISO8601Date(value.getS()); + return MapperDateUtils.parseISO8601Date(value.s()); } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/DoubleSetUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/DoubleSetUnmarshaller.java index 2d94947dce10..c1b073cd12fe 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/DoubleSetUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/DoubleSetUnmarshaller.java @@ -17,7 +17,7 @@ import java.util.HashSet; import java.util.Set; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * An unmarshaller that unmarshals DynamoDB NumberSets into sets of Java @@ -38,7 +38,7 @@ private DoubleSetUnmarshaller() { @Override public Object unmarshall(AttributeValue value) { Set result = new HashSet(); - for (String s : value.getNS()) { + for (String s : value.ns()) { result.add(Double.valueOf(s)); } return result; diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/DoubleUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/DoubleUnmarshaller.java index 6e7070dcc82d..a03a11a4239a 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/DoubleUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/DoubleUnmarshaller.java @@ -14,7 +14,7 @@ */ package software.amazon.awssdk.mapper.dynamodb.unmarshallers; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * An unmarshaller that unmarshals DynamoDB Numbers into Java {@code Double}s. @@ -33,6 +33,6 @@ private DoubleUnmarshaller() { @Override public Object unmarshall(AttributeValue value) { - return Double.valueOf(value.getN()); + return Double.valueOf(value.n()); } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/FloatSetUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/FloatSetUnmarshaller.java index a484df7fe531..23fa33004864 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/FloatSetUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/FloatSetUnmarshaller.java @@ -17,7 +17,7 @@ import java.util.HashSet; import java.util.Set; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * An unmarshaller that unmarshals DynamoDB NumberSets into sets of Java @@ -38,7 +38,7 @@ private FloatSetUnmarshaller() { @Override public Object unmarshall(AttributeValue value) { Set result = new HashSet(); - for (String s : value.getNS()) { + for (String s : value.ns()) { result.add(Float.valueOf(s)); } return result; diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/FloatUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/FloatUnmarshaller.java index da41ffb85c05..2556091af4aa 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/FloatUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/FloatUnmarshaller.java @@ -14,7 +14,7 @@ */ package software.amazon.awssdk.mapper.dynamodb.unmarshallers; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * An unmarshaller that unmarshals DynamoDB Numbers into Java @@ -34,6 +34,6 @@ private FloatUnmarshaller() { @Override public Object unmarshall(AttributeValue value) { - return Float.valueOf(value.getN()); + return Float.valueOf(value.n()); } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/IntegerSetUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/IntegerSetUnmarshaller.java index cd0c1bb29c50..57719c3c2720 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/IntegerSetUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/IntegerSetUnmarshaller.java @@ -17,7 +17,7 @@ import java.util.HashSet; import java.util.Set; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * An unmarshaller that unmarshals DynamoDB NumberSets into sets of Java @@ -38,7 +38,7 @@ private IntegerSetUnmarshaller() { @Override public Object unmarshall(AttributeValue value) { Set result = new HashSet(); - for (String s : value.getNS()) { + for (String s : value.ns()) { result.add(Integer.valueOf(s)); } return result; diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/IntegerUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/IntegerUnmarshaller.java index e1ec66c4756f..6474775feda4 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/IntegerUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/IntegerUnmarshaller.java @@ -14,7 +14,7 @@ */ package software.amazon.awssdk.mapper.dynamodb.unmarshallers; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * An unmarshaller that unmarshals DynamoDB Numbers into Java @@ -34,6 +34,6 @@ private IntegerUnmarshaller() { @Override public Object unmarshall(AttributeValue value) { - return Integer.valueOf(value.getN()); + return Integer.valueOf(value.n()); } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/LUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/LUnmarshaller.java index 2ac05cd37ea8..5f192f016854 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/LUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/LUnmarshaller.java @@ -18,13 +18,13 @@ import software.amazon.awssdk.mapper.dynamodb.ArgumentUnmarshaller; import software.amazon.awssdk.mapper.dynamodb.DynamoDBMappingException; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; abstract class LUnmarshaller implements ArgumentUnmarshaller { @Override public void typeCheck(AttributeValue value, Method setter) { - if ( value.getL() == null ) { + if ( !value.hasL() ) { throw new DynamoDBMappingException("Expected L in value " + value + " when invoking " + setter); } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ListUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ListUnmarshaller.java index f997a166ccaa..9f4e0a0909c6 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ListUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ListUnmarshaller.java @@ -19,7 +19,7 @@ import java.util.List; import software.amazon.awssdk.mapper.dynamodb.ArgumentUnmarshaller; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * An unmarshaller that unmarshals Lists into Java {@code Lists}. @@ -47,7 +47,7 @@ public ListUnmarshaller(ArgumentUnmarshaller memberUnmarshaller) { @Override public Object unmarshall(AttributeValue value) throws ParseException { - List values = value.getL(); + List values = value.l(); List objects = new ArrayList(values.size()); for (AttributeValue v : values) { diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/LongSetUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/LongSetUnmarshaller.java index ec22516e2c08..e7756d720e81 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/LongSetUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/LongSetUnmarshaller.java @@ -17,7 +17,7 @@ import java.util.HashSet; import java.util.Set; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * An unmarshaller that unmarshals DynamoDB NumberSets into sets of Java @@ -38,7 +38,7 @@ private LongSetUnmarshaller() { @Override public Object unmarshall(AttributeValue value) { Set result = new HashSet(); - for (String s : value.getNS()) { + for (String s : value.ns()) { result.add(Long.valueOf(s)); } return result; diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/LongUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/LongUnmarshaller.java index 683750b55db4..b09332957b74 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/LongUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/LongUnmarshaller.java @@ -14,7 +14,7 @@ */ package software.amazon.awssdk.mapper.dynamodb.unmarshallers; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * An unmarshaller that unmarshals DynamoDB Numbers into Java @@ -34,6 +34,6 @@ private LongUnmarshaller() { @Override public Object unmarshall(AttributeValue value) { - return Long.valueOf(value.getN()); + return Long.valueOf(value.n()); } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/MUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/MUnmarshaller.java index 1aeaa03e9430..a6bcf90834bb 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/MUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/MUnmarshaller.java @@ -18,13 +18,13 @@ import software.amazon.awssdk.mapper.dynamodb.ArgumentUnmarshaller; import software.amazon.awssdk.mapper.dynamodb.DynamoDBMappingException; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; abstract class MUnmarshaller implements ArgumentUnmarshaller { @Override public void typeCheck(AttributeValue value, Method setter) { - if ( value.getM() == null ) { + if ( !value.hasM() ) { throw new DynamoDBMappingException("Expected M in value " + value + " when invoking " + setter); } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/MapUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/MapUnmarshaller.java index 83bf8ed6de3c..99a1ac940473 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/MapUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/MapUnmarshaller.java @@ -19,7 +19,7 @@ import java.util.Map; import software.amazon.awssdk.mapper.dynamodb.ArgumentUnmarshaller; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; public class MapUnmarshaller extends MUnmarshaller { @@ -44,7 +44,7 @@ public MapUnmarshaller(ArgumentUnmarshaller memberUnmarshaller) { @Override public Object unmarshall(AttributeValue value) throws ParseException { - Map map = value.getM(); + Map map = value.m(); Map result = new HashMap(); for (Map.Entry entry : map.entrySet()) { diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/NSUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/NSUnmarshaller.java index 272e1f70878b..720416ed00d3 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/NSUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/NSUnmarshaller.java @@ -18,13 +18,13 @@ import software.amazon.awssdk.mapper.dynamodb.ArgumentUnmarshaller; import software.amazon.awssdk.mapper.dynamodb.DynamoDBMappingException; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; abstract class NSUnmarshaller implements ArgumentUnmarshaller { @Override public void typeCheck(AttributeValue value, Method setter) { - if ( value.getNS() == null ) { + if ( !value.hasNs() ) { throw new DynamoDBMappingException("Expected NS in value " + value + " when invoking " + setter); } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/NUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/NUnmarshaller.java index 8914e893fe84..346134b1740b 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/NUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/NUnmarshaller.java @@ -18,13 +18,13 @@ import software.amazon.awssdk.mapper.dynamodb.ArgumentUnmarshaller; import software.amazon.awssdk.mapper.dynamodb.DynamoDBMappingException; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; abstract class NUnmarshaller implements ArgumentUnmarshaller { @Override public void typeCheck(AttributeValue value, Method setter) { - if ( value.getN() == null ) { + if ( value.n() == null ) { throw new DynamoDBMappingException("Expected N in value " + value + " when invoking " + setter); } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/NullableUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/NullableUnmarshaller.java index 92e2fc547c86..ce1cb0461ced 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/NullableUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/NullableUnmarshaller.java @@ -18,7 +18,7 @@ import java.text.ParseException; import software.amazon.awssdk.mapper.dynamodb.ArgumentUnmarshaller; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; public class NullableUnmarshaller implements ArgumentUnmarshaller { @@ -33,14 +33,14 @@ public NullableUnmarshaller(ArgumentUnmarshaller wrapped) { @Override public void typeCheck(AttributeValue value, Method setter) { - if (value.isNULL() == null) { + if (value.nul() == null) { wrapped.typeCheck(value, setter); } } @Override public Object unmarshall(AttributeValue value) throws ParseException { - if (value.isNULL() != null) { + if (value.nul() != null) { return null; } return wrapped.unmarshall(value); diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ObjectSetUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ObjectSetUnmarshaller.java index 8797e2648fb2..de43df7f8824 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ObjectSetUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ObjectSetUnmarshaller.java @@ -21,7 +21,7 @@ import software.amazon.awssdk.mapper.dynamodb.ArgumentUnmarshaller; import software.amazon.awssdk.mapper.dynamodb.DynamoDBMappingException; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; public class ObjectSetUnmarshaller extends LUnmarshaller { @@ -47,7 +47,7 @@ public ObjectSetUnmarshaller(ArgumentUnmarshaller memberUnmarshaller) { @Override public Object unmarshall(AttributeValue value) throws ParseException { - List values = value.getL(); + List values = value.l(); // As in the LinkedHashSet(Collection) constructor. int size = Math.max(values.size() * 2, 11); diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ObjectUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ObjectUnmarshaller.java index b79fe0d903d4..73c831928de9 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ObjectUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ObjectUnmarshaller.java @@ -18,7 +18,7 @@ import java.util.Map; import software.amazon.awssdk.mapper.dynamodb.ItemConverter; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; public class ObjectUnmarshaller extends MUnmarshaller { @@ -50,7 +50,7 @@ public ObjectUnmarshaller(ItemConverter converter, Class clazz) { @Override public Object unmarshall(AttributeValue value) throws ParseException { - Map map = value.getM(); + Map map = value.m(); return converter.unconvert(clazz, map); } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/S3LinkUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/S3LinkUnmarshaller.java index 374686bc0b4f..d3d5fb588399 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/S3LinkUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/S3LinkUnmarshaller.java @@ -16,7 +16,7 @@ import software.amazon.awssdk.mapper.dynamodb.S3ClientCache; import software.amazon.awssdk.mapper.dynamodb.S3Link; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; public class S3LinkUnmarshaller extends SUnmarshaller { @@ -45,6 +45,6 @@ public Object unmarshall(AttributeValue value) { + "load S3Link"); } - return S3Link.fromJson(clientCache, value.getS()); + return S3Link.fromJson(clientCache, value.s()); } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/SSUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/SSUnmarshaller.java index 36a588f2faee..ecfc7eb7f987 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/SSUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/SSUnmarshaller.java @@ -18,13 +18,13 @@ import software.amazon.awssdk.mapper.dynamodb.ArgumentUnmarshaller; import software.amazon.awssdk.mapper.dynamodb.DynamoDBMappingException; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; abstract class SSUnmarshaller implements ArgumentUnmarshaller { @Override public void typeCheck(AttributeValue value, Method setter) { - if ( value.getSS() == null ) { + if ( !value.hasSs() ) { throw new DynamoDBMappingException("Expected SS in value " + value + " when invoking " + setter); } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/SUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/SUnmarshaller.java index 1126299fd855..1a1be4b6618e 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/SUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/SUnmarshaller.java @@ -18,13 +18,13 @@ import software.amazon.awssdk.mapper.dynamodb.ArgumentUnmarshaller; import software.amazon.awssdk.mapper.dynamodb.DynamoDBMappingException; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; abstract class SUnmarshaller implements ArgumentUnmarshaller { @Override public void typeCheck(AttributeValue value, Method setter) { - if ( value.getS() == null ) { + if ( value.s() == null ) { throw new DynamoDBMappingException("Expected S in value " + value + " when invoking " + setter); } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ShortSetUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ShortSetUnmarshaller.java index d426c18710a4..2b5a9032494a 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ShortSetUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ShortSetUnmarshaller.java @@ -17,7 +17,7 @@ import java.util.HashSet; import java.util.Set; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * An unmarshaller that unmarshals DynamoDB NumberSets into sets of Java @@ -38,7 +38,7 @@ private ShortSetUnmarshaller() { @Override public Object unmarshall(AttributeValue value) { Set result = new HashSet(); - for (String s : value.getNS()) { + for (String s : value.ns()) { result.add(Short.valueOf(s)); } return result; diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ShortUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ShortUnmarshaller.java index 018e9b38309a..b1d952be0a15 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ShortUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ShortUnmarshaller.java @@ -14,7 +14,7 @@ */ package software.amazon.awssdk.mapper.dynamodb.unmarshallers; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * An unmarshaller that unmarshals DynamoDB Numbers into Java @@ -34,6 +34,6 @@ private ShortUnmarshaller() { @Override public Object unmarshall(AttributeValue value) { - return Short.valueOf(value.getN()); + return Short.valueOf(value.n()); } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/StringSetUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/StringSetUnmarshaller.java index 11ff493288a9..dc8faf729bc4 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/StringSetUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/StringSetUnmarshaller.java @@ -16,7 +16,7 @@ import java.util.HashSet; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * An unmarshaller that unmarshals DynamoDB StringSets as sets of Java @@ -36,6 +36,6 @@ private StringSetUnmarshaller() { @Override public Object unmarshall(AttributeValue value) { - return new HashSet(value.getSS()); + return new HashSet(value.ss()); } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/StringUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/StringUnmarshaller.java index 08c93451c2f3..97573339751c 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/StringUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/StringUnmarshaller.java @@ -14,7 +14,7 @@ */ package software.amazon.awssdk.mapper.dynamodb.unmarshallers; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * An unmarshaller that unmarshals DynamoDB Strings as Java {@code String} @@ -34,6 +34,6 @@ private StringUnmarshaller() { @Override public Object unmarshall(AttributeValue value) { - return value.getS(); + return value.s(); } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/UUIDSetUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/UUIDSetUnmarshaller.java index 598c8d6fa8f6..e803c7f2735f 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/UUIDSetUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/UUIDSetUnmarshaller.java @@ -18,7 +18,7 @@ import java.util.Set; import java.util.UUID; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * An unmarshaller that unmarshals sets of UUIDs as sets of @@ -42,7 +42,7 @@ private UUIDSetUnmarshaller() { public Set unmarshall(AttributeValue value) { Set result = new HashSet(); - for (String s : value.getSS()) { + for (String s : value.ss()) { result.add(UUID.fromString(s)); } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/UUIDUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/UUIDUnmarshaller.java index cd0afdb4fb35..33f9a7799212 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/UUIDUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/UUIDUnmarshaller.java @@ -16,7 +16,7 @@ import java.util.UUID; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * An unmarshaller that unmarshals UUIDs as Java @@ -38,6 +38,6 @@ private UUIDUnmarshaller() { @Override public UUID unmarshall(AttributeValue value) { - return UUID.fromString(value.getS()); + return UUID.fromString(value.s()); } } diff --git a/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/AttributeTransformerChainTest.java b/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/AttributeTransformerChainTest.java index e7892b83c853..c9f6f0fa8f41 100644 --- a/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/AttributeTransformerChainTest.java +++ b/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/AttributeTransformerChainTest.java @@ -19,7 +19,7 @@ import org.junit.*; import software.amazon.awssdk.mapper.dynamodb.AttributeTransformer.Parameters; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; public class AttributeTransformerChainTest { @Test @@ -68,8 +68,8 @@ public void testTransform() { Map values = new HashMap(); - values.put("test1", new AttributeValue("foo")); - values.put("test2", new AttributeValue("bar")); + values.put("test1", AttributeValue.builder().s("foo").build()); + values.put("test2", AttributeValue.builder().s("bar").build()); Parameters params = new TestParameters(values); @@ -78,8 +78,8 @@ public void testTransform() { Assert.assertNotNull(result); Assert.assertEquals(2, result.size()); - Assert.assertEquals("foo.one.two", result.get("test1").getS()); - Assert.assertEquals("bar.one.two", result.get("test2").getS()); + Assert.assertEquals("foo.one.two", result.get("test1").s()); + Assert.assertEquals("bar.one.two", result.get("test2").s()); } @Test @@ -94,8 +94,8 @@ public void testUntransform() { Map values = new HashMap(); - values.put("test1", new AttributeValue("foo.one.two")); - values.put("test2", new AttributeValue("bar.one.two")); + values.put("test1", AttributeValue.builder().s("foo.one.two").build()); + values.put("test2", AttributeValue.builder().s("bar.one.two").build()); Parameters params = new TestParameters(values); @@ -104,8 +104,8 @@ public void testUntransform() { Assert.assertNotNull(result); Assert.assertEquals(2, result.size()); - Assert.assertEquals("foo", result.get("test1").getS()); - Assert.assertEquals("bar", result.get("test2").getS()); + Assert.assertEquals("foo", result.get("test1").s()); + Assert.assertEquals("bar", result.get("test2").s()); } @Test @@ -120,8 +120,8 @@ public void testRoundTrip() { Map values = new HashMap(); - values.put("test1", new AttributeValue("foo")); - values.put("test2", new AttributeValue("bar")); + values.put("test1", AttributeValue.builder().s("foo").build()); + values.put("test2", AttributeValue.builder().s("bar").build()); Parameters params = new TestParameters(values); @@ -175,14 +175,14 @@ public Map untransform( } private AttributeValue transform(AttributeValue value) { - return new AttributeValue(value.getS() + appendMe); + return AttributeValue.builder().s(value.s() + appendMe).build(); } private AttributeValue untransform(AttributeValue value) { - String s = value.getS(); + String s = value.s(); if (s.endsWith(appendMe)) { - return new AttributeValue( - s.substring(0, s.length() - appendMe.length())); + return AttributeValue.builder().s( + s.substring(0, s.length() - appendMe.length())).build(); } else { return value; } diff --git a/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/CachingMarshallerSetTest.java b/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/CachingMarshallerSetTest.java index ae01cbdc3a8d..714e21351504 100644 --- a/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/CachingMarshallerSetTest.java +++ b/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/CachingMarshallerSetTest.java @@ -24,7 +24,7 @@ import software.amazon.awssdk.mapper.dynamodb.ConversionSchemas.CachingMarshallerSet; import software.amazon.awssdk.mapper.dynamodb.ConversionSchemas.MarshallerSet; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; import software.amazon.awssdk.mapper.dynamodb.pojos.TestClass; public class CachingMarshallerSetTest { diff --git a/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/CachingUnmarshallerSetTest.java b/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/CachingUnmarshallerSetTest.java index e8aded49939d..679bbef5a0c5 100644 --- a/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/CachingUnmarshallerSetTest.java +++ b/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/CachingUnmarshallerSetTest.java @@ -24,7 +24,7 @@ import software.amazon.awssdk.mapper.dynamodb.ConversionSchemas.CachingUnmarshallerSet; import software.amazon.awssdk.mapper.dynamodb.ConversionSchemas.UnmarshallerSet; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; import software.amazon.awssdk.mapper.dynamodb.pojos.TestClass; public class CachingUnmarshallerSetTest { diff --git a/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/ConversionToAttributeValuesTest.java b/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/ConversionToAttributeValuesTest.java index 7dacdbb1ba90..b4976fb57666 100644 --- a/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/ConversionToAttributeValuesTest.java +++ b/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/ConversionToAttributeValuesTest.java @@ -14,7 +14,7 @@ */ package software.amazon.awssdk.mapper.dynamodb; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; import org.junit.Before; import org.junit.Test; diff --git a/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/IncompatibleSubclassTest.java b/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/IncompatibleSubclassTest.java index 592303d6fff2..52d8e53afd67 100644 --- a/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/IncompatibleSubclassTest.java +++ b/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/IncompatibleSubclassTest.java @@ -18,7 +18,7 @@ import org.junit.Test; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** * Verify that we fail fast in case of incompatible subclasses that try to diff --git a/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/S3LinkTest.java b/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/S3LinkTest.java index 991574cee214..ea60b8dd13fd 100644 --- a/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/S3LinkTest.java +++ b/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/S3LinkTest.java @@ -15,6 +15,7 @@ package software.amazon.awssdk.mapper.dynamodb; import static org.junit.Assert.assertEquals; +import static org.mockito.Mockito.mock; import org.junit.Before; import org.junit.Test; @@ -22,9 +23,8 @@ import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.BasicAWSCredentials; import com.amazonaws.internal.StaticCredentialsProvider; -import com.amazonaws.services.dynamodbv2.AmazonDynamoDB; -import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient; import com.amazonaws.services.s3.model.Region; +import software.amazon.awssdk.services.dynamodb.DynamoDbClient; public class S3LinkTest { @@ -33,7 +33,7 @@ public class S3LinkTest @Before public void setUp() { AWSCredentials credentials = new BasicAWSCredentials("mock", "mock"); - AmazonDynamoDB db = new AmazonDynamoDBClient(credentials); + DynamoDbClient db = mock(DynamoDbClient.class); mapper = new DynamoDBMapper(db, new StaticCredentialsProvider(credentials)); } diff --git a/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesEdgeCasesTest.java b/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesEdgeCasesTest.java index ec1a0928e44c..36baa464ba58 100644 --- a/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesEdgeCasesTest.java +++ b/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesEdgeCasesTest.java @@ -24,7 +24,7 @@ import org.junit.Assert; import org.junit.Test; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; import software.amazon.awssdk.mapper.dynamodb.pojos.AutoKeyAndVal; import software.amazon.awssdk.mapper.dynamodb.pojos.TestClass; @@ -76,14 +76,14 @@ private static DynamoDBMapperTableModel table(T object) { @Test public void convert_unicodeString_preserved() { - assertEquals("こんにちは", convert("getString", "こんにちは").getS()); - assertEquals("emoji-😀", convert("getString", "emoji-😀").getS()); + assertEquals("こんにちは", convert("getString", "こんにちは").s()); + assertEquals("emoji-😀", convert("getString", "emoji-😀").s()); } @Test public void unconvert_unicodeString_preserved() { assertEquals("こんにちは", - unconvert("getString", "setString", new AttributeValue("こんにちは"))); + unconvert("getString", "setString", AttributeValue.builder().s("こんにちは").build())); } @Test @@ -93,30 +93,30 @@ public void convert_emptyString_isDropped() { @Test public void convert_numericBoundaries_exactStrings() { - assertEquals(String.valueOf(Integer.MIN_VALUE), convert("getInt", Integer.MIN_VALUE).getN()); - assertEquals(String.valueOf(Integer.MAX_VALUE), convert("getInt", Integer.MAX_VALUE).getN()); - assertEquals(String.valueOf(Long.MIN_VALUE), convert("getLong", Long.MIN_VALUE).getN()); - assertEquals(String.valueOf(Long.MAX_VALUE), convert("getLong", Long.MAX_VALUE).getN()); + assertEquals(String.valueOf(Integer.MIN_VALUE), convert("getInt", Integer.MIN_VALUE).n()); + assertEquals(String.valueOf(Integer.MAX_VALUE), convert("getInt", Integer.MAX_VALUE).n()); + assertEquals(String.valueOf(Long.MIN_VALUE), convert("getLong", Long.MIN_VALUE).n()); + assertEquals(String.valueOf(Long.MAX_VALUE), convert("getLong", Long.MAX_VALUE).n()); } @Test public void convert_bigNumbers_precisionPreserved() { BigInteger big = new BigInteger("99999999999999999999"); - assertEquals("99999999999999999999", convert("getBigInt", big).getN()); + assertEquals("99999999999999999999", convert("getBigInt", big).n()); BigDecimal dec = new BigDecimal("12345.6789"); - assertEquals("12345.6789", convert("getBigDecimal", dec).getN()); + assertEquals("12345.6789", convert("getBigDecimal", dec).n()); } @Test public void convert_bigDecimal_scalePreserved() { - assertEquals("43.0", convert("getBigDecimal", new BigDecimal("43.0")).getN()); + assertEquals("43.0", convert("getBigDecimal", new BigDecimal("43.0")).n()); } @Test public void unconvert_integralType_fromDecimalString_throws() { try { - unconvert("getInt", "setInt", new AttributeValue().withN("1.0")); + unconvert("getInt", "setInt", AttributeValue.builder().n("1.0").build()); fail("Expected NumberFormatException for decimal string on integral type"); } catch (NumberFormatException e) { // expected @@ -125,9 +125,9 @@ public void unconvert_integralType_fromDecimalString_throws() { @Test public void convert_nonFiniteDouble() { - assertEquals("NaN", convert("getDouble", Double.NaN).getN()); - assertEquals("Infinity", convert("getDouble", Double.POSITIVE_INFINITY).getN()); - assertEquals("-Infinity", convert("getDouble", Double.NEGATIVE_INFINITY).getN()); + assertEquals("NaN", convert("getDouble", Double.NaN).n()); + assertEquals("Infinity", convert("getDouble", Double.POSITIVE_INFINITY).n()); + assertEquals("-Infinity", convert("getDouble", Double.NEGATIVE_INFINITY).n()); } public enum Color { RED, GREEN, BLUE } @@ -141,20 +141,20 @@ public static class EnumPojo extends AutoKeyAndVal { @Test public void convert_enum_asString() { DynamoDBMapperTableModel model = table(new EnumPojo()); - assertEquals("GREEN", model.field("val").convert(Color.GREEN).getS()); + assertEquals("GREEN", model.field("val").convert(Color.GREEN).s()); } @Test public void unconvert_enum_fromString() { DynamoDBMapperTableModel model = table(new EnumPojo()); - assertEquals(Color.BLUE, model.field("val").unconvert(new AttributeValue("BLUE"))); + assertEquals(Color.BLUE, model.field("val").unconvert(AttributeValue.builder().s("BLUE").build())); } @Test public void unconvert_enum_unknownValue_throws() { DynamoDBMapperTableModel model = table(new EnumPojo()); try { - model.field("val").unconvert(new AttributeValue("PURPLE")); + model.field("val").unconvert(AttributeValue.builder().s("PURPLE").build()); fail("Expected exception for unknown enum constant"); } catch (RuntimeException e) { // expected @@ -198,9 +198,9 @@ public void convert_json_asString() { DynamoDBMapperTableModel model = table(new JsonPojo()); AttributeValue av = model.field("val").convert(payload); - Assert.assertNotNull(av.getS()); - Assert.assertTrue(av.getS().contains("widget")); - Assert.assertTrue(av.getS().contains("7")); + Assert.assertNotNull(av.s()); + Assert.assertTrue(av.s().contains("widget")); + Assert.assertTrue(av.s().contains("7")); } @Test diff --git a/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesOverrideTest.java b/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesOverrideTest.java index 92192abd9807..7711826a3937 100644 --- a/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesOverrideTest.java +++ b/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesOverrideTest.java @@ -14,7 +14,7 @@ */ package software.amazon.awssdk.mapper.dynamodb; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; import java.lang.reflect.Method; diff --git a/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesTest.java b/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesTest.java index 215584865775..a22e39d1a1ab 100644 --- a/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesTest.java +++ b/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesTest.java @@ -22,9 +22,9 @@ import software.amazon.awssdk.mapper.dynamodb.pojos.Currency; import software.amazon.awssdk.mapper.dynamodb.pojos.DateRange; import software.amazon.awssdk.mapper.dynamodb.pojos.KeyAndVal; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; import com.amazonaws.services.dynamodbv2.model.KeyType; -import com.amazonaws.services.dynamodbv2.model.ScalarAttributeType; +import software.amazon.awssdk.services.dynamodb.model.ScalarAttributeType; import java.math.BigDecimal; import java.math.BigInteger; @@ -126,8 +126,8 @@ public void testAttributeTypeAsAttributeValueNumber() { final DynamoDBMapperTableModel model = getTable(obj); final DynamoDBMapperFieldModel val = model.field("val"); assertEquals(DynamoDBAttributeType.N, val.attributeType()); - assertEquals("123", val.convert(new AttributeValue().withN("123")).getN()); - assertEquals("123", val.unconvert(new AttributeValue().withN("123")).getN()); + assertEquals("123", val.convert(AttributeValue.builder().n("123").build()).n()); + assertEquals("123", val.unconvert(AttributeValue.builder().n("123").build()).n()); } @Test @@ -142,11 +142,11 @@ public void testAttributeTypeAsAttributeValueMap() { assertEquals(DynamoDBAttributeType.M, val.attributeType()); Map map = new HashMap(); - map.put("A", new AttributeValue().withN("123")); + map.put("A", AttributeValue.builder().n("123").build()); map = Collections.unmodifiableMap(map); - assertEquals("123", val.convert(new AttributeValue().withM(map)).getM().get("A").getN()); - assertEquals("123", val.unconvert(new AttributeValue().withM(map)).getM().get("A").getN()); + assertEquals("123", val.convert(AttributeValue.builder().m(map).build()).m().get("A").n()); + assertEquals("123", val.unconvert(AttributeValue.builder().m(map).build()).m().get("A").n()); } /** @@ -164,8 +164,8 @@ public void testScalarAttributeStringTimeZone() { final DynamoDBMapperTableModel model = getTable(obj); final DynamoDBMapperFieldModel val = model.field("val"); assertEquals(DynamoDBAttributeType.S, val.attributeType()); - assertEquals("America/New_York", val.convert(TimeZone.getTimeZone("America/New_York")).getS()); - assertEquals("America/New_York", val.unconvert(new AttributeValue().withS("America/New_York")).getID()); + assertEquals("America/New_York", val.convert(TimeZone.getTimeZone("America/New_York")).s()); + assertEquals("America/New_York", val.unconvert(AttributeValue.builder().s("America/New_York").build()).getID()); } /** @@ -183,8 +183,8 @@ public void testScalarAttributeStringLocale() { final DynamoDBMapperTableModel model = getTable(obj); final DynamoDBMapperFieldModel val = model.field("val"); assertEquals(DynamoDBAttributeType.S, val.attributeType()); - assertEquals("en-CA", val.convert(new Locale("en","CA")).getS()); - assertEquals("en-CA", val.unconvert(new AttributeValue().withS("en-CA")).toString().replaceAll("_","-")); + assertEquals("en-CA", val.convert(new Locale("en","CA")).s()); + assertEquals("en-CA", val.unconvert(AttributeValue.builder().s("en-CA").build()).toString().replaceAll("_","-")); } /** @@ -203,7 +203,7 @@ public void testScalarAttributeBinaryUuid() { assertEquals(DynamoDBAttributeType.B, model.field("val").attributeType()); final UUID val = UUID.randomUUID(); final AttributeValue converted = model.field("val").convert(val); - assertNotNull(converted.getB()); + assertNotNull(converted.b()); assertEquals(val, model.field("val").unconvert(converted)); } @@ -254,10 +254,10 @@ public void testConvertedBool() { final DynamoDBMapperTableModel model = getTable(obj); final DynamoDBMapperFieldModel val = model.field("val"); assertEquals(DynamoDBAttributeType.S, val.attributeType()); - assertEquals("Y", val.convert(Boolean.TRUE).getS()); - assertEquals(Boolean.TRUE, val.unconvert(new AttributeValue().withS("Y"))); - assertEquals("N", val.convert(Boolean.FALSE).getS()); - assertEquals(Boolean.FALSE, val.unconvert(new AttributeValue().withS("N"))); + assertEquals("Y", val.convert(Boolean.TRUE).s()); + assertEquals(Boolean.TRUE, val.unconvert(AttributeValue.builder().s("Y").build())); + assertEquals("N", val.convert(Boolean.FALSE).s()); + assertEquals(Boolean.FALSE, val.unconvert(AttributeValue.builder().s("N").build())); assertEquals(null, val.convert(null)); } diff --git a/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesV1Test.java b/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesV1Test.java index 91d37dda1320..d3c5baf2eafe 100644 --- a/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesV1Test.java +++ b/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesV1Test.java @@ -33,7 +33,8 @@ import org.junit.Test; import com.amazonaws.auth.AWSCredentialsProvider; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.core.SdkBytes; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; import software.amazon.awssdk.mapper.dynamodb.pojos.SubClass; import software.amazon.awssdk.mapper.dynamodb.pojos.TestClass; import software.amazon.awssdk.mapper.dynamodb.pojos.UnannotatedSubClass; @@ -55,115 +56,115 @@ protected AttributeValue convert(Class clazz, Method getter, Object value @Test public void testBoolean() { - assertEquals("1", convert("getBoolean", true).getN()); - assertEquals("0", convert("getBoolean", false).getN()); - assertEquals("1", convert("getBoxedBoolean", true).getN()); - assertEquals("0", convert("getBoxedBoolean", false).getN()); + assertEquals("1", convert("getBoolean", true).n()); + assertEquals("0", convert("getBoolean", false).n()); + assertEquals("1", convert("getBoxedBoolean", true).n()); + assertEquals("0", convert("getBoxedBoolean", false).n()); - assertEquals(true, convert("getNativeBoolean", true).getBOOL()); - assertEquals(false, convert("getNativeBoolean", false).getBOOL()); + assertEquals(true, convert("getNativeBoolean", true).bool()); + assertEquals(false, convert("getNativeBoolean", false).bool()); } @Test public void testString() { - assertEquals("abc", convert("getString", "abc").getS()); + assertEquals("abc", convert("getString", "abc").s()); assertEquals(RandomUUIDMarshaller.randomUUID, - convert("getCustomString", "abc").getS()); + convert("getCustomString", "abc").s()); } @Test public void testUuid() { UUID uuid = UUID.randomUUID(); - assertEquals(uuid.toString(), convert("getUuid", uuid).getS()); + assertEquals(uuid.toString(), convert("getUuid", uuid).s()); } @Test public void testDate() { assertEquals("1970-01-01T00:00:00.000Z", - convert("getDate", new Date(0)).getS()); + convert("getDate", new Date(0)).s()); Calendar c = GregorianCalendar.getInstance(); c.setTimeInMillis(0); assertEquals("1970-01-01T00:00:00.000Z", - convert("getCalendar", c).getS()); + convert("getCalendar", c).s()); } @Test public void testNumbers() { - assertEquals("0", convert("getByte", (byte) 0).getN()); - assertEquals("1", convert("getByte", (byte) 1).getN()); - assertEquals("0", convert("getBoxedByte", (byte) 0).getN()); - assertEquals("1", convert("getBoxedByte", (byte) 1).getN()); - - assertEquals("0", convert("getShort", (short) 0).getN()); - assertEquals("1", convert("getShort", (short) 1).getN()); - assertEquals("0", convert("getBoxedShort", (short) 0).getN()); - assertEquals("1", convert("getBoxedShort", (short) 1).getN()); - - assertEquals("0", convert("getInt", 0).getN()); - assertEquals("1", convert("getInt", 1).getN()); - assertEquals("0", convert("getBoxedInt", 0).getN()); - assertEquals("1", convert("getBoxedInt", 1).getN()); - - assertEquals("0", convert("getLong", 0l).getN()); - assertEquals("1", convert("getLong", 1l).getN()); - assertEquals("0", convert("getBoxedLong", 0l).getN()); - assertEquals("1", convert("getBoxedLong", 1l).getN()); - - assertEquals("0", convert("getBigInt", BigInteger.ZERO).getN()); - assertEquals("1", convert("getBigInt", BigInteger.ONE).getN()); - - assertEquals("0.0", convert("getFloat", 0f).getN()); - assertEquals("1.0", convert("getFloat", 1f).getN()); - assertEquals("0.0", convert("getBoxedFloat", 0f).getN()); - assertEquals("1.0", convert("getBoxedFloat", 1f).getN()); - - assertEquals("0.0", convert("getDouble", 0d).getN()); - assertEquals("1.0", convert("getDouble", 1d).getN()); - assertEquals("0.0", convert("getBoxedDouble", 0d).getN()); - assertEquals("1.0", convert("getBoxedDouble", 1d).getN()); - - assertEquals("0", convert("getBigDecimal", BigDecimal.ZERO).getN()); - assertEquals("1", convert("getBigDecimal", BigDecimal.ONE).getN()); + assertEquals("0", convert("getByte", (byte) 0).n()); + assertEquals("1", convert("getByte", (byte) 1).n()); + assertEquals("0", convert("getBoxedByte", (byte) 0).n()); + assertEquals("1", convert("getBoxedByte", (byte) 1).n()); + + assertEquals("0", convert("getShort", (short) 0).n()); + assertEquals("1", convert("getShort", (short) 1).n()); + assertEquals("0", convert("getBoxedShort", (short) 0).n()); + assertEquals("1", convert("getBoxedShort", (short) 1).n()); + + assertEquals("0", convert("getInt", 0).n()); + assertEquals("1", convert("getInt", 1).n()); + assertEquals("0", convert("getBoxedInt", 0).n()); + assertEquals("1", convert("getBoxedInt", 1).n()); + + assertEquals("0", convert("getLong", 0l).n()); + assertEquals("1", convert("getLong", 1l).n()); + assertEquals("0", convert("getBoxedLong", 0l).n()); + assertEquals("1", convert("getBoxedLong", 1l).n()); + + assertEquals("0", convert("getBigInt", BigInteger.ZERO).n()); + assertEquals("1", convert("getBigInt", BigInteger.ONE).n()); + + assertEquals("0.0", convert("getFloat", 0f).n()); + assertEquals("1.0", convert("getFloat", 1f).n()); + assertEquals("0.0", convert("getBoxedFloat", 0f).n()); + assertEquals("1.0", convert("getBoxedFloat", 1f).n()); + + assertEquals("0.0", convert("getDouble", 0d).n()); + assertEquals("1.0", convert("getDouble", 1d).n()); + assertEquals("0.0", convert("getBoxedDouble", 0d).n()); + assertEquals("1.0", convert("getBoxedDouble", 1d).n()); + + assertEquals("0", convert("getBigDecimal", BigDecimal.ZERO).n()); + assertEquals("1", convert("getBigDecimal", BigDecimal.ONE).n()); } @Test public void testBinary() { ByteBuffer value = ByteBuffer.wrap("value".getBytes()); - assertEquals(value.slice(), convert("getByteArray", "value".getBytes()).getB()); - assertEquals(value.slice(), convert("getByteBuffer", value.slice()).getB()); + assertEquals(value.slice(), convert("getByteArray", "value".getBytes()).b().asByteBuffer()); + assertEquals(value.slice(), convert("getByteBuffer", value.slice()).b().asByteBuffer()); } @Test public void testBooleanSet() { assertEquals(Collections.singletonList("1"), - convert("getBooleanSet", Collections.singleton(true)).getNS()); + convert("getBooleanSet", Collections.singleton(true)).ns()); assertEquals(Collections.singletonList("0"), - convert("getBooleanSet", Collections.singleton(false)).getNS()); + convert("getBooleanSet", Collections.singleton(false)).ns()); assertEquals(Arrays.asList("0", "1"), convert("getBooleanSet", new TreeSet() {{ add(true); add(false); - }}).getNS()); + }}).ns()); } @Test public void testStringSet() { assertEquals(Collections.singletonList("a"), - convert("getStringSet", Collections.singleton("a")).getSS()); + convert("getStringSet", Collections.singleton("a")).ss()); assertEquals(Collections.singletonList("b"), - convert("getStringSet", Collections.singleton("b")).getSS()); + convert("getStringSet", Collections.singleton("b")).ss()); assertEquals(Arrays.asList("a", "b", "c"), convert("getStringSet", new TreeSet() {{ add("a"); add("b"); add("c"); - }}).getSS()); + }}).ss()); } @Test @@ -173,10 +174,10 @@ public void testUuidSet() { final UUID three = UUID.randomUUID(); assertEquals(Collections.singletonList(one.toString()), - convert("getUuidSet", Collections.singleton(one)).getSS()); + convert("getUuidSet", Collections.singleton(one)).ss()); assertEquals(Collections.singletonList(two.toString()), - convert("getUuidSet", Collections.singleton(two)).getSS()); + convert("getUuidSet", Collections.singleton(two)).ss()); assertEquals( Arrays.asList( @@ -187,50 +188,50 @@ public void testUuidSet() { add(one); add(two); add(three); - }}).getSS()); + }}).ss()); } @Test public void testDateSet() { assertEquals(Collections.singletonList("1970-01-01T00:00:00.000Z"), convert("getDateSet", Collections.singleton(new Date(0))) - .getSS()); + .ss()); Calendar c = GregorianCalendar.getInstance(); c.setTimeInMillis(0); assertEquals(Collections.singletonList("1970-01-01T00:00:00.000Z"), convert("getCalendarSet", Collections.singleton(c)) - .getSS()); + .ss()); } @Test public void testNumberSet() { assertEquals(Collections.singletonList("0"), - convert("getByteSet", Collections.singleton((byte) 0)).getNS()); + convert("getByteSet", Collections.singleton((byte) 0)).ns()); assertEquals(Collections.singletonList("0"), - convert("getShortSet", Collections.singleton((short) 0)).getNS()); + convert("getShortSet", Collections.singleton((short) 0)).ns()); assertEquals(Collections.singletonList("0"), - convert("getIntSet", Collections.singleton(0)).getNS()); + convert("getIntSet", Collections.singleton(0)).ns()); assertEquals(Collections.singletonList("0"), - convert("getLongSet", Collections.singleton(0l)).getNS()); + convert("getLongSet", Collections.singleton(0l)).ns()); assertEquals(Collections.singletonList("0"), convert("getBigIntegerSet", Collections.singleton(BigInteger.ZERO)) - .getNS()); + .ns()); assertEquals(Collections.singletonList("0.0"), - convert("getFloatSet", Collections.singleton(0f)).getNS()); + convert("getFloatSet", Collections.singleton(0f)).ns()); assertEquals(Collections.singletonList("0.0"), - convert("getDoubleSet", Collections.singleton(0d)).getNS()); + convert("getDoubleSet", Collections.singleton(0d)).ns()); assertEquals(Collections.singletonList("0"), convert("getBigDecimalSet", Collections.singleton(BigDecimal.ZERO)) - .getNS()); + .ns()); assertEquals(Arrays.asList("0", "1", "2"), convert("getLongSet", new TreeSet() {{ add(0); add(1); add(2); - }}).getNS()); + }}).ns()); } @Test @@ -238,19 +239,19 @@ public void testBinarySet() { final ByteBuffer test = ByteBuffer.wrap("test".getBytes()); final ByteBuffer test2 = ByteBuffer.wrap("test2".getBytes()); - assertEquals(Collections.singletonList(test.slice()), + assertEquals(Collections.singletonList(SdkBytes.fromByteBuffer(test.slice())), convert("getByteArraySet", Collections.singleton("test".getBytes())) - .getBS()); + .bs()); - assertEquals(Collections.singletonList(test.slice()), + assertEquals(Collections.singletonList(SdkBytes.fromByteBuffer(test.slice())), convert("getByteBufferSet", Collections.singleton(test.slice())) - .getBS()); + .bs()); - assertEquals(Arrays.asList(test.slice(), test2.slice()), + assertEquals(Arrays.asList(SdkBytes.fromByteBuffer(test.slice()), SdkBytes.fromByteBuffer(test2.slice())), convert("getByteBufferSet",new TreeSet() {{ add(test.slice()); add(test2.slice()); - }}).getBS()); + }}).bs()); } @Test @@ -263,7 +264,7 @@ public String toString() { }; assertEquals(Collections.singletonList("hello"), - convert("getObjectSet", Collections.singleton(o)).getSS()); + convert("getObjectSet", Collections.singleton(o)).ss()); } @Test @@ -313,7 +314,7 @@ public void testS3Link() { + "\"bucket\":\"bucket\"," + "\"key\":\"key\"," + "\"region\":null}}", - convert("getS3Link", link).getS()); + convert("getS3Link", link).s()); } private AttributeValue convert(String getter, Object value) { diff --git a/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesV2CompatibleTest.java b/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesV2CompatibleTest.java index 368bb5a23c2d..789e78bd8b1a 100644 --- a/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesV2CompatibleTest.java +++ b/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesV2CompatibleTest.java @@ -35,7 +35,8 @@ import org.junit.Test; import com.amazonaws.auth.AWSCredentialsProvider; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.core.SdkBytes; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; import software.amazon.awssdk.mapper.dynamodb.pojos.SubClass; import software.amazon.awssdk.mapper.dynamodb.pojos.TestClass; import software.amazon.awssdk.mapper.dynamodb.pojos.UnannotatedSubClass; @@ -57,115 +58,115 @@ protected AttributeValue convert(Class clazz, Method getter, Object value @Test public void testBoolean() { - assertEquals("1", convert("getBoolean", true).getN()); - assertEquals("0", convert("getBoolean", false).getN()); - assertEquals("1", convert("getBoxedBoolean", true).getN()); - assertEquals("0", convert("getBoxedBoolean", false).getN()); + assertEquals("1", convert("getBoolean", true).n()); + assertEquals("0", convert("getBoolean", false).n()); + assertEquals("1", convert("getBoxedBoolean", true).n()); + assertEquals("0", convert("getBoxedBoolean", false).n()); - assertEquals(true, convert("getNativeBoolean", true).getBOOL()); - assertEquals(false, convert("getNativeBoolean", false).getBOOL()); + assertEquals(true, convert("getNativeBoolean", true).bool()); + assertEquals(false, convert("getNativeBoolean", false).bool()); } @Test public void testString() { - assertEquals("abc", convert("getString", "abc").getS()); + assertEquals("abc", convert("getString", "abc").s()); assertEquals(RandomUUIDMarshaller.randomUUID, - convert("getCustomString", "abc").getS()); + convert("getCustomString", "abc").s()); } @Test public void testUuid() { UUID uuid = UUID.randomUUID(); - assertEquals(uuid.toString(), convert("getUuid", uuid).getS()); + assertEquals(uuid.toString(), convert("getUuid", uuid).s()); } @Test public void testDate() { assertEquals("1970-01-01T00:00:00.000Z", - convert("getDate", new Date(0)).getS()); + convert("getDate", new Date(0)).s()); Calendar c = GregorianCalendar.getInstance(); c.setTimeInMillis(0); assertEquals("1970-01-01T00:00:00.000Z", - convert("getCalendar", c).getS()); + convert("getCalendar", c).s()); } @Test public void testNumbers() { - assertEquals("0", convert("getByte", (byte) 0).getN()); - assertEquals("1", convert("getByte", (byte) 1).getN()); - assertEquals("0", convert("getBoxedByte", (byte) 0).getN()); - assertEquals("1", convert("getBoxedByte", (byte) 1).getN()); - - assertEquals("0", convert("getShort", (short) 0).getN()); - assertEquals("1", convert("getShort", (short) 1).getN()); - assertEquals("0", convert("getBoxedShort", (short) 0).getN()); - assertEquals("1", convert("getBoxedShort", (short) 1).getN()); - - assertEquals("0", convert("getInt", 0).getN()); - assertEquals("1", convert("getInt", 1).getN()); - assertEquals("0", convert("getBoxedInt", 0).getN()); - assertEquals("1", convert("getBoxedInt", 1).getN()); - - assertEquals("0", convert("getLong", 0l).getN()); - assertEquals("1", convert("getLong", 1l).getN()); - assertEquals("0", convert("getBoxedLong", 0l).getN()); - assertEquals("1", convert("getBoxedLong", 1l).getN()); - - assertEquals("0", convert("getBigInt", BigInteger.ZERO).getN()); - assertEquals("1", convert("getBigInt", BigInteger.ONE).getN()); - - assertEquals("0.0", convert("getFloat", 0f).getN()); - assertEquals("1.0", convert("getFloat", 1f).getN()); - assertEquals("0.0", convert("getBoxedFloat", 0f).getN()); - assertEquals("1.0", convert("getBoxedFloat", 1f).getN()); - - assertEquals("0.0", convert("getDouble", 0d).getN()); - assertEquals("1.0", convert("getDouble", 1d).getN()); - assertEquals("0.0", convert("getBoxedDouble", 0d).getN()); - assertEquals("1.0", convert("getBoxedDouble", 1d).getN()); - - assertEquals("0", convert("getBigDecimal", BigDecimal.ZERO).getN()); - assertEquals("1", convert("getBigDecimal", BigDecimal.ONE).getN()); + assertEquals("0", convert("getByte", (byte) 0).n()); + assertEquals("1", convert("getByte", (byte) 1).n()); + assertEquals("0", convert("getBoxedByte", (byte) 0).n()); + assertEquals("1", convert("getBoxedByte", (byte) 1).n()); + + assertEquals("0", convert("getShort", (short) 0).n()); + assertEquals("1", convert("getShort", (short) 1).n()); + assertEquals("0", convert("getBoxedShort", (short) 0).n()); + assertEquals("1", convert("getBoxedShort", (short) 1).n()); + + assertEquals("0", convert("getInt", 0).n()); + assertEquals("1", convert("getInt", 1).n()); + assertEquals("0", convert("getBoxedInt", 0).n()); + assertEquals("1", convert("getBoxedInt", 1).n()); + + assertEquals("0", convert("getLong", 0l).n()); + assertEquals("1", convert("getLong", 1l).n()); + assertEquals("0", convert("getBoxedLong", 0l).n()); + assertEquals("1", convert("getBoxedLong", 1l).n()); + + assertEquals("0", convert("getBigInt", BigInteger.ZERO).n()); + assertEquals("1", convert("getBigInt", BigInteger.ONE).n()); + + assertEquals("0.0", convert("getFloat", 0f).n()); + assertEquals("1.0", convert("getFloat", 1f).n()); + assertEquals("0.0", convert("getBoxedFloat", 0f).n()); + assertEquals("1.0", convert("getBoxedFloat", 1f).n()); + + assertEquals("0.0", convert("getDouble", 0d).n()); + assertEquals("1.0", convert("getDouble", 1d).n()); + assertEquals("0.0", convert("getBoxedDouble", 0d).n()); + assertEquals("1.0", convert("getBoxedDouble", 1d).n()); + + assertEquals("0", convert("getBigDecimal", BigDecimal.ZERO).n()); + assertEquals("1", convert("getBigDecimal", BigDecimal.ONE).n()); } @Test public void testBinary() { ByteBuffer value = ByteBuffer.wrap("value".getBytes()); - assertEquals(value.slice(), convert("getByteArray", "value".getBytes()).getB()); - assertEquals(value.slice(), convert("getByteBuffer", value.slice()).getB()); + assertEquals(value.slice(), convert("getByteArray", "value".getBytes()).b().asByteBuffer()); + assertEquals(value.slice(), convert("getByteBuffer", value.slice()).b().asByteBuffer()); } @Test public void testBooleanSet() { assertEquals(Collections.singletonList("1"), - convert("getBooleanSet", Collections.singleton(true)).getNS()); + convert("getBooleanSet", Collections.singleton(true)).ns()); assertEquals(Collections.singletonList("0"), - convert("getBooleanSet", Collections.singleton(false)).getNS()); + convert("getBooleanSet", Collections.singleton(false)).ns()); assertEquals(Arrays.asList("0", "1"), convert("getBooleanSet", new TreeSet() {{ add(true); add(false); - }}).getNS()); + }}).ns()); } @Test public void testStringSet() { assertEquals(Collections.singletonList("a"), - convert("getStringSet", Collections.singleton("a")).getSS()); + convert("getStringSet", Collections.singleton("a")).ss()); assertEquals(Collections.singletonList("b"), - convert("getStringSet", Collections.singleton("b")).getSS()); + convert("getStringSet", Collections.singleton("b")).ss()); assertEquals(Arrays.asList("a", "b", "c"), convert("getStringSet", new TreeSet() {{ add("a"); add("b"); add("c"); - }}).getSS()); + }}).ss()); } @Test @@ -175,10 +176,10 @@ public void testUuidSet() { final UUID three = UUID.randomUUID(); assertEquals(Collections.singletonList(one.toString()), - convert("getUuidSet", Collections.singleton(one)).getSS()); + convert("getUuidSet", Collections.singleton(one)).ss()); assertEquals(Collections.singletonList(two.toString()), - convert("getUuidSet", Collections.singleton(two)).getSS()); + convert("getUuidSet", Collections.singleton(two)).ss()); assertEquals( Arrays.asList( @@ -189,50 +190,50 @@ public void testUuidSet() { add(one); add(two); add(three); - }}).getSS()); + }}).ss()); } @Test public void testDateSet() { assertEquals(Collections.singletonList("1970-01-01T00:00:00.000Z"), convert("getDateSet", Collections.singleton(new Date(0))) - .getSS()); + .ss()); Calendar c = GregorianCalendar.getInstance(); c.setTimeInMillis(0); assertEquals(Collections.singletonList("1970-01-01T00:00:00.000Z"), convert("getCalendarSet", Collections.singleton(c)) - .getSS()); + .ss()); } @Test public void testNumberSet() { assertEquals(Collections.singletonList("0"), - convert("getByteSet", Collections.singleton((byte) 0)).getNS()); + convert("getByteSet", Collections.singleton((byte) 0)).ns()); assertEquals(Collections.singletonList("0"), - convert("getShortSet", Collections.singleton((short) 0)).getNS()); + convert("getShortSet", Collections.singleton((short) 0)).ns()); assertEquals(Collections.singletonList("0"), - convert("getIntSet", Collections.singleton(0)).getNS()); + convert("getIntSet", Collections.singleton(0)).ns()); assertEquals(Collections.singletonList("0"), - convert("getLongSet", Collections.singleton(0l)).getNS()); + convert("getLongSet", Collections.singleton(0l)).ns()); assertEquals(Collections.singletonList("0"), convert("getBigIntegerSet", Collections.singleton(BigInteger.ZERO)) - .getNS()); + .ns()); assertEquals(Collections.singletonList("0.0"), - convert("getFloatSet", Collections.singleton(0f)).getNS()); + convert("getFloatSet", Collections.singleton(0f)).ns()); assertEquals(Collections.singletonList("0.0"), - convert("getDoubleSet", Collections.singleton(0d)).getNS()); + convert("getDoubleSet", Collections.singleton(0d)).ns()); assertEquals(Collections.singletonList("0"), convert("getBigDecimalSet", Collections.singleton(BigDecimal.ZERO)) - .getNS()); + .ns()); assertEquals(Arrays.asList("0", "1", "2"), convert("getLongSet", new TreeSet() {{ add(0); add(1); add(2); - }}).getNS()); + }}).ns()); } @Test @@ -240,19 +241,19 @@ public void testBinarySet() { final ByteBuffer test = ByteBuffer.wrap("test".getBytes()); final ByteBuffer test2 = ByteBuffer.wrap("test2".getBytes()); - assertEquals(Collections.singletonList(test.slice()), + assertEquals(Collections.singletonList(SdkBytes.fromByteBuffer(test.slice())), convert("getByteArraySet", Collections.singleton("test".getBytes())) - .getBS()); + .bs()); - assertEquals(Collections.singletonList(test.slice()), + assertEquals(Collections.singletonList(SdkBytes.fromByteBuffer(test.slice())), convert("getByteBufferSet", Collections.singleton(test.slice())) - .getBS()); + .bs()); - assertEquals(Arrays.asList(test.slice(), test2.slice()), + assertEquals(Arrays.asList(SdkBytes.fromByteBuffer(test.slice()), SdkBytes.fromByteBuffer(test2.slice())), convert("getByteBufferSet",new TreeSet() {{ add(test.slice()); add(test2.slice()); - }}).getBS()); + }}).bs()); } @Test @@ -265,76 +266,76 @@ public String toString() { }; assertEquals(Collections.singletonList("hello"), - convert("getObjectSet", Collections.singleton(o)).getSS()); + convert("getObjectSet", Collections.singleton(o)).ss()); } @Test public void testList() { assertEquals(Arrays.asList( - new AttributeValue("a"), - new AttributeValue("b"), - new AttributeValue("c")), - convert("getList", Arrays.asList("a", "b", "c")).getL()); + AttributeValue.builder().s("a").build(), + AttributeValue.builder().s("b").build(), + AttributeValue.builder().s("c").build()), + convert("getList", Arrays.asList("a", "b", "c")).l()); - assertEquals(Arrays.asList(new AttributeValue().withNULL(true)), - convert("getList", Collections.singletonList(null)).getL()); + assertEquals(Arrays.asList(AttributeValue.builder().nul(true).build()), + convert("getList", Collections.singletonList(null)).l()); } @Test public void testSetList() { assertEquals(Arrays.asList( - new AttributeValue().withSS("a"), - new AttributeValue().withSS("b"), - new AttributeValue().withSS("c")), + AttributeValue.builder().ss("a").build(), + AttributeValue.builder().ss("b").build(), + AttributeValue.builder().ss("c").build()), convert("getSetList", Arrays.asList( Collections.singleton("a"), Collections.singleton("b"), - Collections.singleton("c"))).getL()); + Collections.singleton("c"))).l()); } @Test public void testMap() { assertEquals(new HashMap() {{ - put("a", new AttributeValue("b")); - put("c", new AttributeValue("d")); - put("e", new AttributeValue("f")); + put("a", AttributeValue.builder().s("b").build()); + put("c", AttributeValue.builder().s("d").build()); + put("e", AttributeValue.builder().s("f").build()); }}, convert("getMap", new HashMap() {{ put("a", "b"); put("c", "d"); put("e", "f"); - }}).getM()); + }}).m()); - assertEquals(Collections.singletonMap("a", new AttributeValue().withNULL(true)), - convert("getMap", Collections.singletonMap("a", null)).getM()); + assertEquals(Collections.singletonMap("a", AttributeValue.builder().nul(true).build()), + convert("getMap", Collections.singletonMap("a", null)).m()); } @Test public void testSetMap() { assertEquals(new HashMap() {{ - put("a", new AttributeValue().withSS("a", "b")); + put("a", AttributeValue.builder().ss("a", "b").build()); }}, convert("getSetMap", new HashMap>() {{ put("a", new TreeSet(Arrays.asList("a", "b"))); - }}).getM()); + }}).m()); assertEquals(new HashMap() {{ - put("a", new AttributeValue().withSS("a")); - put("b", new AttributeValue().withNULL(true)); + put("a", AttributeValue.builder().ss("a").build()); + put("b", AttributeValue.builder().nul(true).build()); }}, convert("getSetMap", new HashMap>() {{ put("a", new TreeSet(Arrays.asList("a"))); put("b", null); - }}).getM()); + }}).m()); } @Test public void testObject() { assertEquals(new HashMap() {{ - put("name", new AttributeValue("name")); - put("value", new AttributeValue().withN("123")); + put("name", AttributeValue.builder().s("name").build()); + put("value", AttributeValue.builder().n("123").build()); }}, - convert("getObject", new SubClass()).getM()); + convert("getObject", new SubClass()).m()); } @Test @@ -357,7 +358,7 @@ public void testS3Link() { + "\"bucket\":\"bucket\"," + "\"key\":\"key\"," + "\"region\":null}}", - convert("getS3Link", link).getS()); + convert("getS3Link", link).s()); } private AttributeValue convert(String getter, Object value) { diff --git a/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesV2Test.java b/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesV2Test.java index 89dba77b0abe..6d9039ec663d 100644 --- a/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesV2Test.java +++ b/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesV2Test.java @@ -37,7 +37,8 @@ import org.junit.Test; import com.amazonaws.auth.AWSCredentialsProvider; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.core.SdkBytes; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; import software.amazon.awssdk.mapper.dynamodb.pojos.SubClass; import software.amazon.awssdk.mapper.dynamodb.pojos.TestClass; import software.amazon.awssdk.mapper.dynamodb.pojos.UnannotatedSubClass; @@ -60,84 +61,84 @@ protected AttributeValue convert(Class clazz, Method getter, Object value @Test public void testBoolean() { // These are all native booleans by default in the v2 schema - assertEquals(true, convert("getBoolean", true).getBOOL()); - assertEquals(false, convert("getBoolean", false).getBOOL()); - assertEquals(true, convert("getBoxedBoolean", true).getBOOL()); - assertEquals(false, convert("getBoxedBoolean", false).getBOOL()); - assertEquals(true, convert("getNativeBoolean", true).getBOOL()); - assertEquals(false, convert("getNativeBoolean", false).getBOOL()); + assertEquals(true, convert("getBoolean", true).bool()); + assertEquals(false, convert("getBoolean", false).bool()); + assertEquals(true, convert("getBoxedBoolean", true).bool()); + assertEquals(false, convert("getBoxedBoolean", false).bool()); + assertEquals(true, convert("getNativeBoolean", true).bool()); + assertEquals(false, convert("getNativeBoolean", false).bool()); } @Test public void testString() { - assertEquals("abc", convert("getString", "abc").getS()); + assertEquals("abc", convert("getString", "abc").s()); assertEquals(RandomUUIDMarshaller.randomUUID, - convert("getCustomString", "abc").getS()); + convert("getCustomString", "abc").s()); } @Test public void testUuid() { UUID uuid = UUID.randomUUID(); - assertEquals(uuid.toString(), convert("getUuid", uuid).getS()); + assertEquals(uuid.toString(), convert("getUuid", uuid).s()); } @Test public void testDate() { assertEquals("1970-01-01T00:00:00.000Z", - convert("getDate", new Date(0)).getS()); + convert("getDate", new Date(0)).s()); Calendar c = GregorianCalendar.getInstance(); c.setTimeInMillis(0); assertEquals("1970-01-01T00:00:00.000Z", - convert("getCalendar", c).getS()); + convert("getCalendar", c).s()); } @Test public void testNumbers() { - assertEquals("0", convert("getByte", (byte) 0).getN()); - assertEquals("1", convert("getByte", (byte) 1).getN()); - assertEquals("0", convert("getBoxedByte", (byte) 0).getN()); - assertEquals("1", convert("getBoxedByte", (byte) 1).getN()); - - assertEquals("0", convert("getShort", (short) 0).getN()); - assertEquals("1", convert("getShort", (short) 1).getN()); - assertEquals("0", convert("getBoxedShort", (short) 0).getN()); - assertEquals("1", convert("getBoxedShort", (short) 1).getN()); - - assertEquals("0", convert("getInt", 0).getN()); - assertEquals("1", convert("getInt", 1).getN()); - assertEquals("0", convert("getBoxedInt", 0).getN()); - assertEquals("1", convert("getBoxedInt", 1).getN()); - - assertEquals("0", convert("getLong", 0l).getN()); - assertEquals("1", convert("getLong", 1l).getN()); - assertEquals("0", convert("getBoxedLong", 0l).getN()); - assertEquals("1", convert("getBoxedLong", 1l).getN()); - - assertEquals("0", convert("getBigInt", BigInteger.ZERO).getN()); - assertEquals("1", convert("getBigInt", BigInteger.ONE).getN()); - - assertEquals("0.0", convert("getFloat", 0f).getN()); - assertEquals("1.0", convert("getFloat", 1f).getN()); - assertEquals("0.0", convert("getBoxedFloat", 0f).getN()); - assertEquals("1.0", convert("getBoxedFloat", 1f).getN()); - - assertEquals("0.0", convert("getDouble", 0d).getN()); - assertEquals("1.0", convert("getDouble", 1d).getN()); - assertEquals("0.0", convert("getBoxedDouble", 0d).getN()); - assertEquals("1.0", convert("getBoxedDouble", 1d).getN()); - - assertEquals("0", convert("getBigDecimal", BigDecimal.ZERO).getN()); - assertEquals("1", convert("getBigDecimal", BigDecimal.ONE).getN()); + assertEquals("0", convert("getByte", (byte) 0).n()); + assertEquals("1", convert("getByte", (byte) 1).n()); + assertEquals("0", convert("getBoxedByte", (byte) 0).n()); + assertEquals("1", convert("getBoxedByte", (byte) 1).n()); + + assertEquals("0", convert("getShort", (short) 0).n()); + assertEquals("1", convert("getShort", (short) 1).n()); + assertEquals("0", convert("getBoxedShort", (short) 0).n()); + assertEquals("1", convert("getBoxedShort", (short) 1).n()); + + assertEquals("0", convert("getInt", 0).n()); + assertEquals("1", convert("getInt", 1).n()); + assertEquals("0", convert("getBoxedInt", 0).n()); + assertEquals("1", convert("getBoxedInt", 1).n()); + + assertEquals("0", convert("getLong", 0l).n()); + assertEquals("1", convert("getLong", 1l).n()); + assertEquals("0", convert("getBoxedLong", 0l).n()); + assertEquals("1", convert("getBoxedLong", 1l).n()); + + assertEquals("0", convert("getBigInt", BigInteger.ZERO).n()); + assertEquals("1", convert("getBigInt", BigInteger.ONE).n()); + + assertEquals("0.0", convert("getFloat", 0f).n()); + assertEquals("1.0", convert("getFloat", 1f).n()); + assertEquals("0.0", convert("getBoxedFloat", 0f).n()); + assertEquals("1.0", convert("getBoxedFloat", 1f).n()); + + assertEquals("0.0", convert("getDouble", 0d).n()); + assertEquals("1.0", convert("getDouble", 1d).n()); + assertEquals("0.0", convert("getBoxedDouble", 0d).n()); + assertEquals("1.0", convert("getBoxedDouble", 1d).n()); + + assertEquals("0", convert("getBigDecimal", BigDecimal.ZERO).n()); + assertEquals("1", convert("getBigDecimal", BigDecimal.ONE).n()); } @Test public void testBinary() { ByteBuffer value = ByteBuffer.wrap("value".getBytes()); - assertEquals(value.slice(), convert("getByteArray", "value".getBytes()).getB()); - assertEquals(value.slice(), convert("getByteBuffer", value.slice()).getB()); + assertEquals(value.slice(), convert("getByteArray", "value".getBytes()).b().asByteBuffer()); + assertEquals(value.slice(), convert("getByteBuffer", value.slice()).b().asByteBuffer()); } @Test @@ -147,23 +148,23 @@ public void testBooleanSet() { AttributeValue value = convert("getBooleanSet", Collections.singleton(true)); - Assert.assertEquals(1, value.getL().size()); - Assert.assertEquals(true, value.getL().get(0).getBOOL()); + Assert.assertEquals(1, value.l().size()); + Assert.assertEquals(true, value.l().get(0).bool()); } @Test public void testStringSet() { assertEquals(Collections.singletonList("a"), - convert("getStringSet", Collections.singleton("a")).getSS()); + convert("getStringSet", Collections.singleton("a")).ss()); assertEquals(Collections.singletonList("b"), - convert("getStringSet", Collections.singleton("b")).getSS()); + convert("getStringSet", Collections.singleton("b")).ss()); assertEquals(Arrays.asList("a", "b", "c"), convert("getStringSet", new TreeSet() {{ add("a"); add("b"); add("c"); - }}).getSS()); + }}).ss()); } @Test @@ -173,10 +174,10 @@ public void testUuidSet() { final UUID three = UUID.randomUUID(); assertEquals(Collections.singletonList(one.toString()), - convert("getUuidSet", Collections.singleton(one)).getSS()); + convert("getUuidSet", Collections.singleton(one)).ss()); assertEquals(Collections.singletonList(two.toString()), - convert("getUuidSet", Collections.singleton(two)).getSS()); + convert("getUuidSet", Collections.singleton(two)).ss()); assertEquals( Arrays.asList( @@ -187,50 +188,50 @@ public void testUuidSet() { add(one); add(two); add(three); - }}).getSS()); + }}).ss()); } @Test public void testDateSet() { assertEquals(Collections.singletonList("1970-01-01T00:00:00.000Z"), convert("getDateSet", Collections.singleton(new Date(0))) - .getSS()); + .ss()); Calendar c = GregorianCalendar.getInstance(); c.setTimeInMillis(0); assertEquals(Collections.singletonList("1970-01-01T00:00:00.000Z"), convert("getCalendarSet", Collections.singleton(c)) - .getSS()); + .ss()); } @Test public void testNumberSet() { assertEquals(Collections.singletonList("0"), - convert("getByteSet", Collections.singleton((byte) 0)).getNS()); + convert("getByteSet", Collections.singleton((byte) 0)).ns()); assertEquals(Collections.singletonList("0"), - convert("getShortSet", Collections.singleton((short) 0)).getNS()); + convert("getShortSet", Collections.singleton((short) 0)).ns()); assertEquals(Collections.singletonList("0"), - convert("getIntSet", Collections.singleton(0)).getNS()); + convert("getIntSet", Collections.singleton(0)).ns()); assertEquals(Collections.singletonList("0"), - convert("getLongSet", Collections.singleton(0l)).getNS()); + convert("getLongSet", Collections.singleton(0l)).ns()); assertEquals(Collections.singletonList("0"), convert("getBigIntegerSet", Collections.singleton(BigInteger.ZERO)) - .getNS()); + .ns()); assertEquals(Collections.singletonList("0.0"), - convert("getFloatSet", Collections.singleton(0f)).getNS()); + convert("getFloatSet", Collections.singleton(0f)).ns()); assertEquals(Collections.singletonList("0.0"), - convert("getDoubleSet", Collections.singleton(0d)).getNS()); + convert("getDoubleSet", Collections.singleton(0d)).ns()); assertEquals(Collections.singletonList("0"), convert("getBigDecimalSet", Collections.singleton(BigDecimal.ZERO)) - .getNS()); + .ns()); assertEquals(Arrays.asList("0", "1", "2"), convert("getLongSet", new TreeSet() {{ add(0); add(1); add(2); - }}).getNS()); + }}).ns()); } @Test @@ -238,19 +239,19 @@ public void testBinarySet() { final ByteBuffer test = ByteBuffer.wrap("test".getBytes()); final ByteBuffer test2 = ByteBuffer.wrap("test2".getBytes()); - assertEquals(Collections.singletonList(test.slice()), + assertEquals(Collections.singletonList(SdkBytes.fromByteBuffer(test.slice())), convert("getByteArraySet", Collections.singleton("test".getBytes())) - .getBS()); + .bs()); - assertEquals(Collections.singletonList(test.slice()), + assertEquals(Collections.singletonList(SdkBytes.fromByteBuffer(test.slice())), convert("getByteBufferSet", Collections.singleton(test.slice())) - .getBS()); + .bs()); - assertEquals(Arrays.asList(test.slice(), test2.slice()), + assertEquals(Arrays.asList(SdkBytes.fromByteBuffer(test.slice()), SdkBytes.fromByteBuffer(test2.slice())), convert("getByteBufferSet",new TreeSet() {{ add(test.slice()); add(test2.slice()); - }}).getBS()); + }}).bs()); } @Test @@ -258,27 +259,27 @@ public void testObjectSet() { AttributeValue value = convert("getObjectSet", Collections.singleton(new SubClass())); - assertEquals(1, value.getL().size()); + assertEquals(1, value.l().size()); assertEquals(new HashMap() {{ - put("name", new AttributeValue("name")); - put("value", new AttributeValue().withN("123")); + put("name", AttributeValue.builder().s("name").build()); + put("value", AttributeValue.builder().n("123").build()); }}, - value.getL().get(0).getM()); + value.l().get(0).m()); - assertEquals(Arrays.asList(new AttributeValue().withNULL(true)), - convert("getObjectSet", Collections.singleton(null)).getL()); + assertEquals(Arrays.asList(AttributeValue.builder().nul(true).build()), + convert("getObjectSet", Collections.singleton(null)).l()); } @Test public void testList() { assertEquals(Arrays.asList( - new AttributeValue("a"), - new AttributeValue("b"), - new AttributeValue("c")), - convert("getList", Arrays.asList("a", "b", "c")).getL()); + AttributeValue.builder().s("a").build(), + AttributeValue.builder().s("b").build(), + AttributeValue.builder().s("c").build()), + convert("getList", Arrays.asList("a", "b", "c")).l()); - assertEquals(Arrays.asList(new AttributeValue().withNULL(true)), - convert("getList", Collections.singletonList(null)).getL()); + assertEquals(Arrays.asList(AttributeValue.builder().nul(true).build()), + convert("getList", Collections.singletonList(null)).l()); } @Test @@ -287,72 +288,72 @@ public void testObjectList() { "getObjectList", Collections.singletonList(new SubClass())); - assertEquals(1, value.getL().size()); + assertEquals(1, value.l().size()); assertEquals(new HashMap() {{ - put("name", new AttributeValue("name")); - put("value", new AttributeValue().withN("123")); + put("name", AttributeValue.builder().s("name").build()); + put("value", AttributeValue.builder().n("123").build()); }}, - value.getL().get(0).getM()); + value.l().get(0).m()); } @Test public void testSetList() { assertEquals( - Arrays.asList(new AttributeValue().withSS("a")), + Arrays.asList(AttributeValue.builder().ss("a").build()), convert("getSetList", Arrays.asList( - Collections.singleton("a"))).getL()); + Collections.singleton("a"))).l()); List> list = new ArrayList>(); list.add(null); assertEquals( - Arrays.asList(new AttributeValue().withNULL(true)), - convert("getSetList", list).getL()); + Arrays.asList(AttributeValue.builder().nul(true).build()), + convert("getSetList", list).l()); } @Test public void testMap() { assertEquals(new HashMap() {{ - put("a", new AttributeValue("b")); - put("c", new AttributeValue("d")); - put("e", new AttributeValue("f")); + put("a", AttributeValue.builder().s("b").build()); + put("c", AttributeValue.builder().s("d").build()); + put("e", AttributeValue.builder().s("f").build()); }}, convert("getMap", new HashMap() {{ put("a", "b"); put("c", "d"); put("e", "f"); - }}).getM()); + }}).m()); - assertEquals(Collections.singletonMap("a", new AttributeValue().withNULL(true)), - convert("getMap", Collections.singletonMap("a", null)).getM()); + assertEquals(Collections.singletonMap("a", AttributeValue.builder().nul(true).build()), + convert("getMap", Collections.singletonMap("a", null)).m()); } @Test public void testSetMap() { assertEquals(new HashMap() {{ - put("a", new AttributeValue().withSS("a", "b")); + put("a", AttributeValue.builder().ss("a", "b").build()); }}, convert("getSetMap", new HashMap>() {{ put("a", new TreeSet(Arrays.asList("a", "b"))); - }}).getM()); + }}).m()); assertEquals(new HashMap() {{ - put("a", new AttributeValue().withSS("a")); - put("b", new AttributeValue().withNULL(true)); + put("a", AttributeValue.builder().ss("a").build()); + put("b", AttributeValue.builder().nul(true).build()); }}, convert("getSetMap", new HashMap>() {{ put("a", new TreeSet(Arrays.asList("a"))); put("b", null); - }}).getM()); + }}).m()); } @Test public void testObject() { assertEquals(new HashMap() {{ - put("name", new AttributeValue("name")); - put("value", new AttributeValue().withN("123")); + put("name", AttributeValue.builder().s("name").build()); + put("value", AttributeValue.builder().n("123").build()); }}, - convert("getObject", new SubClass()).getM()); + convert("getObject", new SubClass()).m()); } @Test @@ -375,7 +376,7 @@ public void testS3Link() { + "\"bucket\":\"bucket\"," + "\"key\":\"key\"," + "\"region\":null}}", - convert("getS3Link", link).getS()); + convert("getS3Link", link).s()); } private AttributeValue convert(String getter, Object value) { diff --git a/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesV2UnconvertTest.java b/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesV2UnconvertTest.java index a449285489e7..1740fafb7da8 100644 --- a/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesV2UnconvertTest.java +++ b/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesV2UnconvertTest.java @@ -35,7 +35,8 @@ import org.junit.Test; import com.amazonaws.auth.AWSCredentialsProvider; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.core.SdkBytes; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; import software.amazon.awssdk.mapper.dynamodb.pojos.SubClass; import software.amazon.awssdk.mapper.dynamodb.pojos.TestClass; import software.amazon.awssdk.mapper.dynamodb.pojos.UnannotatedSubClass; @@ -59,95 +60,95 @@ protected Object unconvert(Class clazz, Method getter, Method setter, Att @Test public void testBoolean() { assertEquals(false, unconvert("getBoolean", "setBoolean", - new AttributeValue().withN("0"))); + AttributeValue.builder().n("0").build())); assertEquals(true, unconvert("getBoolean", "setBoolean", - new AttributeValue().withN("1"))); + AttributeValue.builder().n("1").build())); assertEquals(false, unconvert("getBoolean", "setBoolean", - new AttributeValue().withBOOL(false))); + AttributeValue.builder().bool(false).build())); assertEquals(true, unconvert("getBoolean", "setBoolean", - new AttributeValue().withBOOL(true))); + AttributeValue.builder().bool(true).build())); assertEquals(false, unconvert("getBoxedBoolean", "setBoxedBoolean", - new AttributeValue().withN("0"))); + AttributeValue.builder().n("0").build())); assertEquals(true, unconvert("getBoxedBoolean", "setBoxedBoolean", - new AttributeValue().withN("1"))); + AttributeValue.builder().n("1").build())); assertEquals(false, unconvert("getBoxedBoolean", "setBoxedBoolean", - new AttributeValue().withBOOL(false))); + AttributeValue.builder().bool(false).build())); assertEquals(true, unconvert("getBoxedBoolean", "setBoxedBoolean", - new AttributeValue().withBOOL(true))); + AttributeValue.builder().bool(true).build())); } @Test public void testString() { assertEquals("test", unconvert("getString", "setString", - new AttributeValue("test"))); + AttributeValue.builder().s("test").build())); Assert.assertNull(unconvert("getCustomString", "setCustomString", - new AttributeValue("ignoreme"))); + AttributeValue.builder().s("ignoreme").build())); } @Test public void testUuid() { UUID uuid = UUID.randomUUID(); assertEquals(uuid, unconvert("getUuid", "setUuid", - new AttributeValue(uuid.toString()))); + AttributeValue.builder().s(uuid.toString()).build())); } @Test public void testDate() { assertEquals(new Date(0), unconvert("getDate", "setDate", - new AttributeValue("1970-01-01T00:00:00.000Z"))); + AttributeValue.builder().s("1970-01-01T00:00:00.000Z").build())); Calendar c = GregorianCalendar.getInstance(); c.setTimeInMillis(0); assertEquals(c, unconvert("getCalendar", "setCalendar", - new AttributeValue("1970-01-01T00:00:00.000Z"))); + AttributeValue.builder().s("1970-01-01T00:00:00.000Z").build())); } @Test public void testNumbers() { assertEquals((byte) 1, unconvert("getByte", "setByte", - new AttributeValue().withN("1"))); + AttributeValue.builder().n("1").build())); assertEquals((byte) 1, unconvert("getBoxedByte", "setBoxedByte", - new AttributeValue().withN("1"))); + AttributeValue.builder().n("1").build())); assertEquals((short) 1, unconvert("getShort", "setShort", - new AttributeValue().withN("1"))); + AttributeValue.builder().n("1").build())); assertEquals((short) 1, unconvert("getBoxedShort", "setBoxedShort", - new AttributeValue().withN("1"))); + AttributeValue.builder().n("1").build())); assertEquals(1, unconvert("getInt", "setInt", - new AttributeValue().withN("1"))); + AttributeValue.builder().n("1").build())); assertEquals(1, unconvert("getBoxedInt", "setBoxedInt", - new AttributeValue().withN("1"))); + AttributeValue.builder().n("1").build())); assertEquals(1l, unconvert("getLong", "setLong", - new AttributeValue().withN("1"))); + AttributeValue.builder().n("1").build())); assertEquals(1l, unconvert("getBoxedLong", "setBoxedLong", - new AttributeValue().withN("1"))); + AttributeValue.builder().n("1").build())); assertEquals(BigInteger.ONE, unconvert("getBigInt", "setBigInt", - new AttributeValue().withN("1"))); + AttributeValue.builder().n("1").build())); assertEquals(1.5f, unconvert("getFloat", "setFloat", - new AttributeValue().withN("1.5"))); + AttributeValue.builder().n("1.5").build())); assertEquals(1.5f, unconvert("getBoxedFloat", "setBoxedFloat", - new AttributeValue().withN("1.5"))); + AttributeValue.builder().n("1.5").build())); assertEquals(1.5d, unconvert("getDouble", "setDouble", - new AttributeValue().withN("1.5"))); + AttributeValue.builder().n("1.5").build())); assertEquals(1.5d, unconvert("getBoxedDouble", "setBoxedDouble", - new AttributeValue().withN("1.5"))); + AttributeValue.builder().n("1.5").build())); assertEquals(BigDecimal.ONE, unconvert("getBigDecimal", "setBigDecimal", - new AttributeValue().withN("1"))); + AttributeValue.builder().n("1").build())); } @Test @@ -155,153 +156,153 @@ public void testBinary() { ByteBuffer test = ByteBuffer.wrap("test".getBytes()); Assert.assertTrue(Arrays.equals("test".getBytes(), (byte[]) unconvert( "getByteArray", "setByteArray", - new AttributeValue().withB(test.slice())))); + AttributeValue.builder().b(SdkBytes.fromByteBuffer(test.slice())).build()))); assertEquals(test.slice(), unconvert("getByteBuffer", "setByteBuffer", - new AttributeValue().withB(test.slice()))); + AttributeValue.builder().b(SdkBytes.fromByteBuffer(test.slice())).build())); } @Test public void testBooleanSet() { assertEquals(new HashSet() {{ add(true); }}, unconvert("getBooleanSet", "setBooleanSet", - new AttributeValue().withNS("1"))); + AttributeValue.builder().ns("1").build())); assertEquals(new HashSet() {{ add(false); }}, unconvert("getBooleanSet", "setBooleanSet", - new AttributeValue().withNS("0"))); + AttributeValue.builder().ns("0").build())); assertEquals(new HashSet() {{ add(true); add(false); }}, unconvert("getBooleanSet", "setBooleanSet", - new AttributeValue().withNS("0", "1"))); + AttributeValue.builder().ns("0", "1").build())); assertEquals(new HashSet() {{ add(true); }}, unconvert("getBooleanSet", "setBooleanSet", - new AttributeValue().withL( - new AttributeValue().withBOOL(true)))); + AttributeValue.builder().l( + AttributeValue.builder().bool(true).build()).build())); assertEquals(new HashSet() {{ add(false); }}, unconvert("getBooleanSet", "setBooleanSet", - new AttributeValue().withL( - new AttributeValue().withBOOL(false)))); + AttributeValue.builder().l( + AttributeValue.builder().bool(false).build()).build())); assertEquals(new HashSet() {{ add(false); add(true); }}, unconvert("getBooleanSet", "setBooleanSet", - new AttributeValue().withL( - new AttributeValue().withBOOL(false), - new AttributeValue().withBOOL(true)))); + AttributeValue.builder().l( + AttributeValue.builder().bool(false).build(), + AttributeValue.builder().bool(true).build()).build())); assertEquals(new HashSet() {{ add(null); }}, unconvert("getBooleanSet", "setBooleanSet", - new AttributeValue().withL( - new AttributeValue().withNULL(true)))); + AttributeValue.builder().l( + AttributeValue.builder().nul(true).build()).build())); } @Test public void testStringSet() { Assert.assertNull(unconvert("getStringSet", "setStringSet", - new AttributeValue().withNULL(true))); + AttributeValue.builder().nul(true).build())); assertEquals(new HashSet() {{ add("a"); add("b"); }}, unconvert("getStringSet", "setStringSet", - new AttributeValue().withSS("a", "b"))); + AttributeValue.builder().ss("a", "b").build())); } @Test public void testUuidSet() { Assert.assertNull(unconvert("getUuidSet", "setUuidSet", - new AttributeValue().withNULL(true))); + AttributeValue.builder().nul(true).build())); final UUID one = UUID.randomUUID(); final UUID two = UUID.randomUUID(); assertEquals(new HashSet() {{ add(one); add(two); }}, unconvert("getUuidSet", "setUuidSet", - new AttributeValue().withSS( + AttributeValue.builder().ss( one.toString(), - two.toString()))); + two.toString()).build())); } @Test public void testDateSet() { assertEquals(Collections.singleton(new Date(0)), - unconvert("getDateSet", "setDateSet", new AttributeValue() - .withSS("1970-01-01T00:00:00.000Z"))); + unconvert("getDateSet", "setDateSet", AttributeValue.builder() + .ss("1970-01-01T00:00:00.000Z").build())); Calendar c = GregorianCalendar.getInstance(); c.setTimeInMillis(0); assertEquals(Collections.singleton(c), unconvert("getCalendarSet", "setCalendarSet", - new AttributeValue() - .withSS("1970-01-01T00:00:00.000Z"))); + AttributeValue.builder() + .ss("1970-01-01T00:00:00.000Z").build())); } @Test public void testNumberSet() { Assert.assertNull(unconvert("getByteSet", "setByteSet", - new AttributeValue().withNULL(true))); + AttributeValue.builder().nul(true).build())); Assert.assertNull(unconvert("getShortSet", "setShortSet", - new AttributeValue().withNULL(true))); + AttributeValue.builder().nul(true).build())); Assert.assertNull(unconvert("getIntSet", "setIntSet", - new AttributeValue().withNULL(true))); + AttributeValue.builder().nul(true).build())); Assert.assertNull(unconvert("getLongSet", "setLongSet", - new AttributeValue().withNULL(true))); + AttributeValue.builder().nul(true).build())); Assert.assertNull(unconvert("getBigIntegerSet", "setBigIntegerSet", - new AttributeValue().withNULL(true))); + AttributeValue.builder().nul(true).build())); Assert.assertNull(unconvert("getFloatSet", "setFloatSet", - new AttributeValue().withNULL(true))); + AttributeValue.builder().nul(true).build())); Assert.assertNull(unconvert("getDoubleSet", "setDoubleSet", - new AttributeValue().withNULL(true))); + AttributeValue.builder().nul(true).build())); Assert.assertNull(unconvert("getBigDecimalSet", "setBigDecimalSet", - new AttributeValue().withNULL(true))); + AttributeValue.builder().nul(true).build())); assertEquals(new HashSet() {{ add((byte) 1); }}, unconvert("getByteSet", "setByteSet", - new AttributeValue().withNS("1"))); + AttributeValue.builder().ns("1").build())); assertEquals(new HashSet() {{ add((short) 1); }}, unconvert("getShortSet", "setShortSet", - new AttributeValue().withNS("1"))); + AttributeValue.builder().ns("1").build())); assertEquals(new HashSet() {{ add(1); }}, unconvert("getIntSet", "setIntSet", - new AttributeValue().withNS("1"))); + AttributeValue.builder().ns("1").build())); assertEquals(new HashSet() {{ add(1l); }}, unconvert("getLongSet", "setLongSet", - new AttributeValue().withNS("1"))); + AttributeValue.builder().ns("1").build())); assertEquals(new HashSet() {{ add(BigInteger.ONE); }}, unconvert("getBigIntegerSet", "setBigIntegerSet", - new AttributeValue().withNS("1"))); + AttributeValue.builder().ns("1").build())); assertEquals(new HashSet() {{ add(1.5f); }}, unconvert("getFloatSet", "setFloatSet", - new AttributeValue().withNS("1.5"))); + AttributeValue.builder().ns("1.5").build())); assertEquals(new HashSet() {{ add(1.5d); }}, unconvert("getDoubleSet", "setDoubleSet", - new AttributeValue().withNS("1.5"))); + AttributeValue.builder().ns("1.5").build())); assertEquals(new HashSet() {{ add(BigDecimal.ONE); }}, unconvert("getBigDecimalSet", "setBigDecimalSet", - new AttributeValue().withNS("1"))); + AttributeValue.builder().ns("1").build())); } @Test public void testBinarySet() { Assert.assertNull(unconvert("getByteArraySet", "setByteArraySet", - new AttributeValue().withNULL(true))); + AttributeValue.builder().nul(true).build())); Assert.assertNull(unconvert("getByteBufferSet", "setByteBufferSet", - new AttributeValue().withNULL(true))); + AttributeValue.builder().nul(true).build())); ByteBuffer test = ByteBuffer.wrap("test".getBytes()); Set result = (Set) unconvert( "getByteArraySet", "setByteArraySet", - new AttributeValue().withBS(test.slice())); + AttributeValue.builder().bs(SdkBytes.fromByteBuffer(test.slice())).build()); assertEquals(1, result.size()); Assert.assertTrue(Arrays.equals( @@ -310,25 +311,25 @@ public void testBinarySet() { Assert.assertEquals(Collections.singleton(test.slice()), unconvert("getByteBufferSet", "setByteBufferSet", - new AttributeValue().withBS(test.slice()))); + AttributeValue.builder().bs(SdkBytes.fromByteBuffer(test.slice())).build())); } @Test public void testObjectSet() { Object result = unconvert("getObjectSet", "setObjectSet", - new AttributeValue().withL(new AttributeValue().withM( + AttributeValue.builder().l(AttributeValue.builder().m( new HashMap() {{ - put("name", new AttributeValue("name")); - put("value", new AttributeValue().withN("123")); - put("null", new AttributeValue().withNULL(true)); + put("name", AttributeValue.builder().s("name").build()); + put("value", AttributeValue.builder().n("123").build()); + put("null", AttributeValue.builder().nul(true).build()); }} - ))); + ).build()).build()); assertEquals(Collections.singleton(new SubClass()), result); result = unconvert("getObjectSet", "setObjectSet", - new AttributeValue().withL( - new AttributeValue().withNULL(true))); + AttributeValue.builder().l( + AttributeValue.builder().nul(true).build()).build()); assertEquals(Collections.singleton(null), result); } @@ -336,107 +337,107 @@ public void testObjectSet() { @Test public void testList() { Assert.assertNull(unconvert("getList", "setList", - new AttributeValue().withNULL(true))); + AttributeValue.builder().nul(true).build())); assertEquals(Arrays.asList("a", "b", "c"), - unconvert("getList", "setList", new AttributeValue().withL( - new AttributeValue("a"), - new AttributeValue("b"), - new AttributeValue("c")))); + unconvert("getList", "setList", AttributeValue.builder().l( + AttributeValue.builder().s("a").build(), + AttributeValue.builder().s("b").build(), + AttributeValue.builder().s("c").build()).build())); assertEquals(Arrays.asList("a", null), - unconvert("getList", "setList", new AttributeValue().withL( - new AttributeValue("a"), - new AttributeValue().withNULL(true)))); + unconvert("getList", "setList", AttributeValue.builder().l( + AttributeValue.builder().s("a").build(), + AttributeValue.builder().nul(true).build()).build())); } @Test public void testObjectList() { Assert.assertNull(unconvert("getObjectList", "setObjectList", - new AttributeValue().withNULL(true))); + AttributeValue.builder().nul(true).build())); assertEquals(Arrays.asList(new SubClass(), null), unconvert("getObjectList", "setObjectList", - new AttributeValue().withL( - new AttributeValue().withM(new HashMap() {{ - put("name", new AttributeValue("name")); - put("value", new AttributeValue().withN("123")); - put("null", new AttributeValue().withNULL(true)); - }}), - new AttributeValue().withNULL(true)))); + AttributeValue.builder().l( + AttributeValue.builder().m(new HashMap() {{ + put("name", AttributeValue.builder().s("name").build()); + put("value", AttributeValue.builder().n("123").build()); + put("null", AttributeValue.builder().nul(true).build()); + }}).build(), + AttributeValue.builder().nul(true).build()).build())); } @Test public void testSetList() { Assert.assertNull(unconvert("getSetList", "setSetList", - new AttributeValue().withNULL(true))); + AttributeValue.builder().nul(true).build())); assertEquals(Arrays.asList(new Set[] { null }), - unconvert("getSetList", "setSetList", new AttributeValue().withL( - new AttributeValue().withNULL(true)))); + unconvert("getSetList", "setSetList", AttributeValue.builder().l( + AttributeValue.builder().nul(true).build()).build())); assertEquals(Arrays.asList(Collections.singleton("a")), - unconvert("getSetList", "setSetList", new AttributeValue().withL( - new AttributeValue().withSS("a")))); + unconvert("getSetList", "setSetList", AttributeValue.builder().l( + AttributeValue.builder().ss("a").build()).build())); } @Test public void testMap() { Assert.assertNull(unconvert("getMap", "setMap", - new AttributeValue().withNULL(true))); + AttributeValue.builder().nul(true).build())); assertEquals(new HashMap() {{ put("a", "b"); put("c", "d"); }}, - unconvert("getMap", "setMap", new AttributeValue().withM( + unconvert("getMap", "setMap", AttributeValue.builder().m( new HashMap() {{ - put("a", new AttributeValue("b")); - put("c", new AttributeValue("d")); - }}))); + put("a", AttributeValue.builder().s("b").build()); + put("c", AttributeValue.builder().s("d").build()); + }}).build())); assertEquals(new HashMap() {{ put("a", null); }}, - unconvert("getMap", "setMap", new AttributeValue().withM( + unconvert("getMap", "setMap", AttributeValue.builder().m( new HashMap() {{ - put("a", new AttributeValue().withNULL(true)); - }}))); + put("a", AttributeValue.builder().nul(true).build()); + }}).build())); } @Test public void testSetMap() { Assert.assertNull(unconvert("getSetMap", "setSetMap", - new AttributeValue().withNULL(true))); + AttributeValue.builder().nul(true).build())); assertEquals(new HashMap>() {{ put("a", null); put("b", new TreeSet(Arrays.asList("a", "b"))); }}, - unconvert("getSetMap", "setSetMap", new AttributeValue().withM( + unconvert("getSetMap", "setSetMap", AttributeValue.builder().m( new HashMap() {{ - put("a", new AttributeValue().withNULL(true)); - put("b", new AttributeValue().withSS("a", "b")); - }}))); + put("a", AttributeValue.builder().nul(true).build()); + put("b", AttributeValue.builder().ss("a", "b").build()); + }}).build())); } @Test public void testObject() { Assert.assertNull(unconvert("getObject", "setObject", - new AttributeValue().withNULL(true))); + AttributeValue.builder().nul(true).build())); assertEquals(new SubClass(), unconvert("getObject", "setObject", - new AttributeValue().withM(new HashMap() {{ - put("name", new AttributeValue("name")); - put("value", new AttributeValue().withN("123")); - }}))); + AttributeValue.builder().m(new HashMap() {{ + put("name", AttributeValue.builder().s("name").build()); + put("value", AttributeValue.builder().n("123").build()); + }}).build())); assertEquals(new SubClass(), unconvert("getObject", "setObject", - new AttributeValue().withM(new HashMap() {{ - put("name", new AttributeValue("name")); - put("value", new AttributeValue().withN("123")); - put("null", new AttributeValue().withNULL(true)); - }}))); + AttributeValue.builder().m(new HashMap() {{ + put("name", AttributeValue.builder().s("name").build()); + put("value", AttributeValue.builder().n("123").build()); + put("null", AttributeValue.builder().nul(true).build()); + }}).build())); } @Test @@ -446,7 +447,7 @@ public void testUnannotatedObject() throws Exception { .getMethod("setChild", UnannotatedSubClass.class); try { - unconvert(UnannotatedSubClass.class, getter, setter, new AttributeValue().withS("")); + unconvert(UnannotatedSubClass.class, getter, setter, AttributeValue.builder().s("").build()); Assert.fail("Expected DynamoDBMappingException"); } catch (DynamoDBMappingException e) { } @@ -455,10 +456,10 @@ public void testUnannotatedObject() throws Exception { @Test public void testS3Link() { S3Link link = (S3Link) unconvert("getS3Link", "setS3Link", - new AttributeValue("{\"s3\":{" + AttributeValue.builder().s("{\"s3\":{" + "\"bucket\":\"bucket\"," + "\"key\":\"key\"," - + "\"region\":null}}")); + + "\"region\":null}}").build()); assertEquals("bucket", link.getBucketName()); assertEquals("key", link.getKey()); diff --git a/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/TestParameters.java b/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/TestParameters.java index 39d90aee670a..7083a3cb2884 100644 --- a/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/TestParameters.java +++ b/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/TestParameters.java @@ -16,7 +16,7 @@ import java.util.Map; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; public class TestParameters implements AttributeTransformer.Parameters { diff --git a/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/UnmarshallerTest.java b/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/UnmarshallerTest.java index c8cf029ab495..8ef94ea89626 100644 --- a/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/UnmarshallerTest.java +++ b/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/UnmarshallerTest.java @@ -17,7 +17,7 @@ import java.lang.reflect.Method; import com.amazonaws.auth.AWSCredentialsProvider; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; public class UnmarshallerTest extends StandardModelFactoriesV2UnconvertTest { diff --git a/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/V1MarshallerTest.java b/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/V1MarshallerTest.java index b8c1889d79ed..0a84db9b02f6 100644 --- a/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/V1MarshallerTest.java +++ b/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/V1MarshallerTest.java @@ -16,7 +16,7 @@ import java.lang.reflect.Method; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; public class V1MarshallerTest extends StandardModelFactoriesV1Test { diff --git a/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/V2CompatMarshallerTest.java b/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/V2CompatMarshallerTest.java index 06f7e052d1b8..7402a76f4e77 100644 --- a/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/V2CompatMarshallerTest.java +++ b/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/V2CompatMarshallerTest.java @@ -16,7 +16,7 @@ import java.lang.reflect.Method; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; public class V2CompatMarshallerTest extends StandardModelFactoriesV2CompatibleTest { diff --git a/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/V2MarshallerTest.java b/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/V2MarshallerTest.java index bb320cd474f2..11c11902461f 100644 --- a/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/V2MarshallerTest.java +++ b/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/V2MarshallerTest.java @@ -16,7 +16,7 @@ import java.lang.reflect.Method; -import com.amazonaws.services.dynamodbv2.model.AttributeValue; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; public class V2MarshallerTest extends StandardModelFactoriesV2Test { From 9f5f4e6c6c4a128ddb3f20239a1ecf612ee1d80e Mon Sep 17 00:00:00 2001 From: RanVaknin <50976344+RanVaknin@users.noreply.github.com> Date: Mon, 27 Jul 2026 11:34:35 -0700 Subject: [PATCH 3/6] Fix comments, ubstub operations to reduce review burden --- services-custom/dynamodb-mapper/pom.xml | 10 ------ .../dynamodb/DynamoDBMapperFieldModel.java | 33 +++++++------------ .../mapper/dynamodb/MapperDateUtils.java | 24 +++----------- 3 files changed, 15 insertions(+), 52 deletions(-) diff --git a/services-custom/dynamodb-mapper/pom.xml b/services-custom/dynamodb-mapper/pom.xml index 42093be640e3..78382a4b308a 100644 --- a/services-custom/dynamodb-mapper/pom.xml +++ b/services-custom/dynamodb-mapper/pom.xml @@ -52,16 +52,6 @@ org.apache.maven.plugins maven-compiler-plugin - software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesTest.java software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesV1Test.java diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/DynamoDBMapperFieldModel.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/DynamoDBMapperFieldModel.java index 34d4f282c7a2..c5f0d4ac9302 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/DynamoDBMapperFieldModel.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/DynamoDBMapperFieldModel.java @@ -224,8 +224,7 @@ public final boolean indexed() { * @see com.amazonaws.services.dynamodbv2.model.Condition */ public final Condition beginsWith(final V value) { -// return new Condition().withComparisonOperator(BEGINS_WITH).withAttributeValueList(convert(value)); - throw new UnsupportedOperationException("Condition building not yet ported to v2 (query/scan deferred to a later PR)."); + return new Condition().withComparisonOperator(BEGINS_WITH).withAttributeValueList(convert(value)); } /** @@ -237,8 +236,7 @@ public final Condition beginsWith(final V value) { * @see com.amazonaws.services.dynamodbv2.model.Condition */ public final Condition between(final V lo, final V hi) { -// return new Condition().withComparisonOperator(BETWEEN).withAttributeValueList(convert(lo), convert(hi)); - throw new UnsupportedOperationException("Condition building not yet ported to v2 (query/scan deferred to a later PR)."); + return new Condition().withComparisonOperator(BETWEEN).withAttributeValueList(convert(lo), convert(hi)); } /** @@ -249,8 +247,7 @@ public final Condition between(final V lo, final V hi) { * @see com.amazonaws.services.dynamodbv2.model.Condition */ public final Condition contains(final V value) { -// return new Condition().withComparisonOperator(CONTAINS).withAttributeValueList(convert(value)); - throw new UnsupportedOperationException("Condition building not yet ported to v2 (query/scan deferred to a later PR)."); + return new Condition().withComparisonOperator(CONTAINS).withAttributeValueList(convert(value)); } /** @@ -261,8 +258,7 @@ public final Condition contains(final V value) { * @see com.amazonaws.services.dynamodbv2.model.Condition */ public final Condition eq(final V value) { -// return new Condition().withComparisonOperator(EQ).withAttributeValueList(convert(value)); - throw new UnsupportedOperationException("Condition building not yet ported to v2 (query/scan deferred to a later PR)."); + return new Condition().withComparisonOperator(EQ).withAttributeValueList(convert(value)); } /** @@ -273,8 +269,7 @@ public final Condition eq(final V value) { * @see com.amazonaws.services.dynamodbv2.model.Condition */ public final Condition ge(final V value) { -// return new Condition().withComparisonOperator(GE).withAttributeValueList(convert(value)); - throw new UnsupportedOperationException("Condition building not yet ported to v2 (query/scan deferred to a later PR)."); + return new Condition().withComparisonOperator(GE).withAttributeValueList(convert(value)); } /** @@ -285,8 +280,7 @@ public final Condition ge(final V value) { * @see com.amazonaws.services.dynamodbv2.model.Condition */ public final Condition gt(final V value) { -// return new Condition().withComparisonOperator(GT).withAttributeValueList(convert(value)); - throw new UnsupportedOperationException("Condition building not yet ported to v2 (query/scan deferred to a later PR)."); + return new Condition().withComparisonOperator(GT).withAttributeValueList(convert(value)); } /** @@ -297,8 +291,7 @@ public final Condition gt(final V value) { * @see com.amazonaws.services.dynamodbv2.model.Condition */ public final Condition in(final Collection values) { -// return new Condition().withComparisonOperator(IN).withAttributeValueList(LIST.convert(values, this)); - throw new UnsupportedOperationException("Condition building not yet ported to v2 (query/scan deferred to a later PR)."); + return new Condition().withComparisonOperator(IN).withAttributeValueList(LIST.convert(values, this)); } /** @@ -330,8 +323,7 @@ public final Condition isNull() { * @see com.amazonaws.services.dynamodbv2.model.Condition */ public final Condition le(final V value) { -// return new Condition().withComparisonOperator(LE).withAttributeValueList(convert(value)); - throw new UnsupportedOperationException("Condition building not yet ported to v2 (query/scan deferred to a later PR)."); + return new Condition().withComparisonOperator(LE).withAttributeValueList(convert(value)); } /** @@ -342,8 +334,7 @@ public final Condition le(final V value) { * @see com.amazonaws.services.dynamodbv2.model.Condition */ public final Condition lt(final V value) { -// return new Condition().withComparisonOperator(LT).withAttributeValueList(convert(value)); - throw new UnsupportedOperationException("Condition building not yet ported to v2 (query/scan deferred to a later PR)."); + return new Condition().withComparisonOperator(LT).withAttributeValueList(convert(value)); } /** @@ -354,8 +345,7 @@ public final Condition lt(final V value) { * @see com.amazonaws.services.dynamodbv2.model.Condition */ public final Condition ne(final V value) { -// return new Condition().withComparisonOperator(NE).withAttributeValueList(convert(value)); - throw new UnsupportedOperationException("Condition building not yet ported to v2 (query/scan deferred to a later PR)."); + return new Condition().withComparisonOperator(NE).withAttributeValueList(convert(value)); } /** @@ -366,8 +356,7 @@ public final Condition ne(final V value) { * @see com.amazonaws.services.dynamodbv2.model.Condition */ public final Condition notContains(final V value) { -// return new Condition().withComparisonOperator(NOT_CONTAINS).withAttributeValueList(convert(value)); - throw new UnsupportedOperationException("Condition building not yet ported to v2 (query/scan deferred to a later PR)."); + return new Condition().withComparisonOperator(NOT_CONTAINS).withAttributeValueList(convert(value)); } /** diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/MapperDateUtils.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/MapperDateUtils.java index 3868f80ad790..0b8a07354fc1 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/MapperDateUtils.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/MapperDateUtils.java @@ -1,8 +1,5 @@ /* - * Copyright 2010-2025 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Portions copyright 2006-2009 James Murty. Please see LICENSE.txt - * for applicable license terms and NOTICE.txt for applicable notices. + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -30,22 +27,9 @@ import software.amazon.awssdk.annotations.SdkInternalApi; /** - * Narrowly-scoped ISO-8601 date parsing and formatting for the mapper's converter layer. - * - *

The v1 {@code DynamoDBMapper} formatted and parsed {@link Date}/{@code Calendar} attributes - * with {@code com.amazonaws.util.DateUtils} from {@code aws-java-sdk-core}. That class is v1 SDK - * infrastructure (it pulls in {@code com.amazonaws.SdkClientException} and - * {@code com.amazonaws.util.JodaTime}) and cannot be depended on from a v2 module. The v2 SDK's - * own {@code software.amazon.awssdk.utils.DateUtils} is {@code java.time}-based and is not - * a drop-in: its parser rejects some ISO-8601 shapes v1 accepts (e.g. basic-format offsets like - * {@code -0700}) and its formatter omits trailing-zero milliseconds ({@code .000Z}), which would - * silently change the string form of data written by v1.

- * - *

To preserve byte-for-byte read/write compatibility with data produced by the v1 mapper, this - * class reproduces exactly the two ISO-8601 methods the converter layer uses, using the same - * Joda-Time formatters v1 used. It intentionally excludes the other 11 methods of the v1 utility - * (RFC-822, compressed-ISO, Unix-timestamp, etc.) that the mapper never calls. Do not grow this - * class beyond ISO-8601 parse/format.

+ * A thin port of only the ISO-8601 parse/format methods of the v1 {@code com.amazonaws.util.DateUtils} + * that the mapper's converter layer uses, kept on the same Joda-Time formatters to preserve byte-for-byte + * compatibility with dates written by the v1 mapper. */ @SdkInternalApi public final class MapperDateUtils { From 433befe7c1877fbc4a56dfc3bab9554afce197cf Mon Sep 17 00:00:00 2001 From: RanVaknin <50976344+RanVaknin@users.noreply.github.com> Date: Tue, 28 Jul 2026 00:05:11 -0700 Subject: [PATCH 4/6] Fix ByteBuffer to be mutable and fix marshaller exception handling in v2 converter port --- services-custom/dynamodb-mapper/pom.xml | 37 --------------- .../dynamodb/AbstractEnumMarshaller.java | 8 ++-- .../mapper/dynamodb/JsonMarshaller.java | 12 ++--- .../mapper/dynamodb/MapperExceptions.java | 45 +++++++++++++++++++ .../dynamodb/StandardModelFactories.java | 6 ++- .../ByteArraySetUnmarshaller.java | 10 +---- .../unmarshallers/ByteArrayUnmarshaller.java | 12 +---- .../ByteBufferSetUnmarshaller.java | 3 +- .../unmarshallers/ByteBufferUnmarshaller.java | 7 ++- .../StandardModelFactoriesEdgeCasesTest.java | 42 +++++++++++------ 10 files changed, 96 insertions(+), 86 deletions(-) create mode 100644 services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/MapperExceptions.java diff --git a/services-custom/dynamodb-mapper/pom.xml b/services-custom/dynamodb-mapper/pom.xml index 78382a4b308a..aa87523f3cd7 100644 --- a/services-custom/dynamodb-mapper/pom.xml +++ b/services-custom/dynamodb-mapper/pom.xml @@ -48,43 +48,6 @@
- - org.apache.maven.plugins - maven-compiler-plugin - - - software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesTest.java - software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesV1Test.java - software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesV2Test.java - software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesV2CompatibleTest.java - software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesV2UnconvertTest.java - software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesEdgeCasesTest.java - software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesOverrideTest.java - software/amazon/awssdk/mapper/dynamodb/V1MarshallerTest.java - software/amazon/awssdk/mapper/dynamodb/V2MarshallerTest.java - software/amazon/awssdk/mapper/dynamodb/V2CompatMarshallerTest.java - software/amazon/awssdk/mapper/dynamodb/UnmarshallerTest.java - software/amazon/awssdk/mapper/dynamodb/CachingMarshallerSetTest.java - software/amazon/awssdk/mapper/dynamodb/CachingUnmarshallerSetTest.java - software/amazon/awssdk/mapper/dynamodb/ConversionToAttributeValuesTest.java - software/amazon/awssdk/mapper/dynamodb/AttributeTransformerChainTest.java - software/amazon/awssdk/mapper/dynamodb/IncompatibleSubclassTest.java - software/amazon/awssdk/mapper/dynamodb/StringListMapTest.java - software/amazon/awssdk/mapper/dynamodb/S3LinkTest.java - software/amazon/awssdk/mapper/dynamodb/S3LinkIDTest.java - - software/amazon/awssdk/mapper/dynamodb/TestParameters.java - - software/amazon/awssdk/mapper/dynamodb/pojos/TestClass.java - software/amazon/awssdk/mapper/dynamodb/pojos/SubClass.java - software/amazon/awssdk/mapper/dynamodb/pojos/UnannotatedSubClass.java - software/amazon/awssdk/mapper/dynamodb/pojos/KeyAndVal.java - software/amazon/awssdk/mapper/dynamodb/pojos/AutoKeyAndVal.java - software/amazon/awssdk/mapper/dynamodb/pojos/DateRange.java - software/amazon/awssdk/mapper/dynamodb/pojos/Currency.java - - - org.apache.maven.plugins maven-dependency-plugin diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/AbstractEnumMarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/AbstractEnumMarshaller.java index 79459a1ec94f..707eec62c97b 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/AbstractEnumMarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/AbstractEnumMarshaller.java @@ -38,8 +38,8 @@ public abstract class AbstractEnumMarshaller> implements Dynam public String marshall(final T obj) { try { return obj.name(); - } catch (final RuntimeException e) { - throw e; + } catch (final Exception e) { + throw MapperExceptions.failure(e, "Unable to marshall the enum " + obj); } } @@ -50,8 +50,8 @@ public String marshall(final T obj) { public T unmarshall(final Class clazz, final String obj) { try { return Enum.valueOf(clazz, obj); - } catch (final RuntimeException e) { - throw e; + } catch (final Exception e) { + throw MapperExceptions.failure(e, "Unable to unmarshall the enum value " + obj); } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/JsonMarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/JsonMarshaller.java index f09ff85237cb..c9a1014c00fa 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/JsonMarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/JsonMarshaller.java @@ -63,10 +63,9 @@ public String marshall(T obj) { try { return writer.writeValueAsString(obj); - } catch (JsonProcessingException e) { - throw new DynamoDBMappingException( - "Unable to marshall the instance of " + obj.getClass() - + "into a string", e); + } catch (Exception e) { + throw MapperExceptions.failure(e, + "Unable to marshall the instance of " + obj.getClass() + "into a string"); } } @@ -74,11 +73,8 @@ public String marshall(T obj) { public T unmarshall(Class clazz, String json) { try { return mapper.readValue(json, (getValueType() == null ? clazz : getValueType())); - } catch (RuntimeException e) { - throw e; } catch (Exception e) { - throw new DynamoDBMappingException("Unable to unmarshall the string " + json - + "into " + clazz, e); + throw MapperExceptions.failure(e, "Unable to unmarshall the string " + json + "into " + clazz); } } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/MapperExceptions.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/MapperExceptions.java new file mode 100644 index 000000000000..149edb6763d5 --- /dev/null +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/MapperExceptions.java @@ -0,0 +1,45 @@ +/* + * Copyright 2011-2025 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://aws.amazon.com/apache2.0 + * + * This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and + * limitations under the License. + */ +package software.amazon.awssdk.mapper.dynamodb; + +import software.amazon.awssdk.core.exception.AbortedException; +import software.amazon.awssdk.core.exception.SdkClientException; + +/** + * Port of v1 {@code com.amazonaws.util.Throwables.failure}, using the v2 exception + * hierarchy. A {@link RuntimeException} is returned unchanged (the message argument is + * discarded, matching v1); an {@link Error} is rethrown; an {@link InterruptedException} + * becomes an {@link AbortedException}; any other checked exception becomes an + * {@link SdkClientException} (the v2 analog of v1's {@code AmazonClientException}). + */ +final class MapperExceptions { + + private MapperExceptions() { + } + + static RuntimeException failure(Throwable t, String message) { + if (t instanceof RuntimeException) { + return (RuntimeException) t; + } + if (t instanceof Error) { + throw (Error) t; + } + if (t instanceof InterruptedException) { + Thread.currentThread().interrupt(); + return AbortedException.create(message, t); + } + return SdkClientException.create(message, t); + } +} diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactories.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactories.java index fc234203ce5b..d68c8f40675f 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactories.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactories.java @@ -329,7 +329,8 @@ public DynamoDBTypeConverter newConverter(ConvertibleType t } @Override public ByteBuffer get(AttributeValue value) { - return value.b() == null ? null : value.b().asByteBuffer(); + // Writable copy for v1 parity; SdkBytes.asByteBuffer() would be read-only. + return value.b() == null ? null : ByteBuffer.wrap(value.b().asByteArray()); } @Override public AttributeValue build(ByteBuffer o) { @@ -409,7 +410,8 @@ public List get(AttributeValue value) { } final List result = new ArrayList(value.bs().size()); for (software.amazon.awssdk.core.SdkBytes sb : value.bs()) { - result.add(sb.asByteBuffer()); + // Writable copy for v1 parity; SdkBytes.asByteBuffer() would be read-only. + result.add(ByteBuffer.wrap(sb.asByteArray())); } return result; } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteArraySetUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteArraySetUnmarshaller.java index f1e967e0a3b1..0440c299a375 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteArraySetUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteArraySetUnmarshaller.java @@ -14,7 +14,6 @@ */ package software.amazon.awssdk.mapper.dynamodb.unmarshallers; -import java.nio.ByteBuffer; import java.util.HashSet; import java.util.Set; @@ -41,14 +40,7 @@ public Object unmarshall(AttributeValue value) { Set result = new HashSet(); for (software.amazon.awssdk.core.SdkBytes sdkBytes : value.bs()) { - ByteBuffer buffer = sdkBytes.asByteBuffer(); - if (buffer.hasArray()) { - result.add(buffer.array()); - } else { - byte[] array = new byte[buffer.remaining()]; - buffer.get(array); - result.add(array); - } + result.add(sdkBytes.asByteArray()); } return result; diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteArrayUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteArrayUnmarshaller.java index 526a0e8a2432..0d7013063457 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteArrayUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteArrayUnmarshaller.java @@ -14,8 +14,6 @@ */ package software.amazon.awssdk.mapper.dynamodb.unmarshallers; -import java.nio.ByteBuffer; - import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** @@ -35,14 +33,6 @@ private ByteArrayUnmarshaller() { @Override public Object unmarshall(AttributeValue value) { - ByteBuffer buffer = value.b().asByteBuffer(); - - if (buffer.hasArray()) { - return buffer.array(); - } - - byte[] array = new byte[buffer.remaining()]; - buffer.get(array); - return array; + return value.b().asByteArray(); } } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteBufferSetUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteBufferSetUnmarshaller.java index fbf50c775d1f..807b58bfc223 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteBufferSetUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteBufferSetUnmarshaller.java @@ -40,7 +40,8 @@ private ByteBufferSetUnmarshaller() { public Object unmarshall(AttributeValue value) { Set result = new HashSet(); for (software.amazon.awssdk.core.SdkBytes sdkBytes : value.bs()) { - result.add(sdkBytes.asByteBuffer()); + // Writable copy for v1 parity; SdkBytes.asByteBuffer() would be read-only. + result.add(ByteBuffer.wrap(sdkBytes.asByteArray())); } return result; } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteBufferUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteBufferUnmarshaller.java index b65090082788..a4f4be79a0fd 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteBufferUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteBufferUnmarshaller.java @@ -14,6 +14,8 @@ */ package software.amazon.awssdk.mapper.dynamodb.unmarshallers; +import java.nio.ByteBuffer; + import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** @@ -33,6 +35,9 @@ private ByteBufferUnmarshaller() { @Override public Object unmarshall(AttributeValue value) { - return value.b().asByteBuffer(); + // v2 SdkBytes.asByteBuffer() returns a read-only buffer; v1 getB() returned a + // writable one. Return a writable defensive copy to preserve v1 behavior for + // callers that mutate the returned buffer. asByteArray() already copies the bytes. + return ByteBuffer.wrap(value.b().asByteArray()); } } diff --git a/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesEdgeCasesTest.java b/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesEdgeCasesTest.java index 36baa464ba58..5b04d5f1d197 100644 --- a/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesEdgeCasesTest.java +++ b/services-custom/dynamodb-mapper/src/test/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactoriesEdgeCasesTest.java @@ -20,10 +20,12 @@ import java.lang.reflect.Method; import java.math.BigDecimal; import java.math.BigInteger; +import java.nio.ByteBuffer; import org.junit.Assert; import org.junit.Test; +import software.amazon.awssdk.core.SdkBytes; import software.amazon.awssdk.services.dynamodb.model.AttributeValue; import software.amazon.awssdk.mapper.dynamodb.pojos.AutoKeyAndVal; import software.amazon.awssdk.mapper.dynamodb.pojos.TestClass; @@ -75,24 +77,24 @@ private static DynamoDBMapperTableModel table(T object) { } @Test - public void convert_unicodeString_preserved() { + public void convert_withUnicodeString_preservesCharacters() { assertEquals("こんにちは", convert("getString", "こんにちは").s()); assertEquals("emoji-😀", convert("getString", "emoji-😀").s()); } @Test - public void unconvert_unicodeString_preserved() { + public void unconvert_withUnicodeString_preservesCharacters() { assertEquals("こんにちは", unconvert("getString", "setString", AttributeValue.builder().s("こんにちは").build())); } @Test - public void convert_emptyString_isDropped() { + public void convert_withEmptyString_returnsNull() { Assert.assertNull(convert("getString", "")); } @Test - public void convert_numericBoundaries_exactStrings() { + public void convert_withNumericBoundaries_producesExactStrings() { assertEquals(String.valueOf(Integer.MIN_VALUE), convert("getInt", Integer.MIN_VALUE).n()); assertEquals(String.valueOf(Integer.MAX_VALUE), convert("getInt", Integer.MAX_VALUE).n()); assertEquals(String.valueOf(Long.MIN_VALUE), convert("getLong", Long.MIN_VALUE).n()); @@ -100,7 +102,7 @@ public void convert_numericBoundaries_exactStrings() { } @Test - public void convert_bigNumbers_precisionPreserved() { + public void convert_withBigNumbers_preservesPrecision() { BigInteger big = new BigInteger("99999999999999999999"); assertEquals("99999999999999999999", convert("getBigInt", big).n()); @@ -109,12 +111,12 @@ public void convert_bigNumbers_precisionPreserved() { } @Test - public void convert_bigDecimal_scalePreserved() { + public void convert_withBigDecimal_preservesScale() { assertEquals("43.0", convert("getBigDecimal", new BigDecimal("43.0")).n()); } @Test - public void unconvert_integralType_fromDecimalString_throws() { + public void unconvert_withDecimalStringOnIntegralType_throwsNumberFormatException() { try { unconvert("getInt", "setInt", AttributeValue.builder().n("1.0").build()); fail("Expected NumberFormatException for decimal string on integral type"); @@ -124,7 +126,7 @@ public void unconvert_integralType_fromDecimalString_throws() { } @Test - public void convert_nonFiniteDouble() { + public void convert_withNonFiniteDouble_producesExactStrings() { assertEquals("NaN", convert("getDouble", Double.NaN).n()); assertEquals("Infinity", convert("getDouble", Double.POSITIVE_INFINITY).n()); assertEquals("-Infinity", convert("getDouble", Double.NEGATIVE_INFINITY).n()); @@ -139,19 +141,19 @@ public static class EnumPojo extends AutoKeyAndVal { } @Test - public void convert_enum_asString() { + public void convert_withEnum_producesString() { DynamoDBMapperTableModel model = table(new EnumPojo()); assertEquals("GREEN", model.field("val").convert(Color.GREEN).s()); } @Test - public void unconvert_enum_fromString() { + public void unconvert_withEnumString_producesEnum() { DynamoDBMapperTableModel model = table(new EnumPojo()); assertEquals(Color.BLUE, model.field("val").unconvert(AttributeValue.builder().s("BLUE").build())); } @Test - public void unconvert_enum_unknownValue_throws() { + public void unconvert_withUnknownEnumValue_throwsException() { DynamoDBMapperTableModel model = table(new EnumPojo()); try { model.field("val").unconvert(AttributeValue.builder().s("PURPLE").build()); @@ -190,7 +192,7 @@ public static class JsonPojo extends AutoKeyAndVal { } @Test - public void convert_json_asString() { + public void convert_withJsonPayload_producesString() { JsonPayload payload = new JsonPayload(); payload.setName("widget"); payload.setCount(7); @@ -204,7 +206,7 @@ public void convert_json_asString() { } @Test - public void json_roundTrip() { + public void convertAndUnconvert_withJsonPayload_roundTrips() { JsonPayload payload = new JsonPayload(); payload.setName("widget"); payload.setCount(7); @@ -215,4 +217,18 @@ public void json_roundTrip() { assertEquals(payload, back); } + + @Test + public void unconvert_withByteBuffer_returnsWritableBuffer() { + // v1 parity: v1 getB() returned a writable buffer. v2 SdkBytes.asByteBuffer() is + // read-only, so the unmarshaller returns a writable copy for callers that mutate it. + DynamoDBMapperTableModel model = v2Models.getTable(TestClass.class); + AttributeValue stored = AttributeValue.builder().b(SdkBytes.fromUtf8String("data")).build(); + + ByteBuffer result = (ByteBuffer) model.field("byteBuffer").unconvert(stored); + + Assert.assertFalse("returned buffer is writable (v1 parity)", result.isReadOnly()); + result.put(0, (byte) 'X'); + assertEquals((byte) 'X', result.get(0)); + } } From 1ed9ca496af2b13dd0ac4225094a71a247d1036e Mon Sep 17 00:00:00 2001 From: RanVaknin <50976344+RanVaknin@users.noreply.github.com> Date: Tue, 28 Jul 2026 00:19:03 -0700 Subject: [PATCH 5/6] Remove fully qualified imports --- .../mapper/dynamodb/StandardModelFactories.java | 11 ++++++----- .../unmarshallers/ByteArraySetUnmarshaller.java | 3 ++- .../unmarshallers/ByteBufferSetUnmarshaller.java | 3 ++- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactories.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactories.java index d68c8f40675f..179829b79652 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactories.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/StandardModelFactories.java @@ -15,6 +15,7 @@ package software.amazon.awssdk.mapper.dynamodb; import software.amazon.awssdk.annotations.SdkInternalApi; +import software.amazon.awssdk.core.SdkBytes; import software.amazon.awssdk.mapper.dynamodb.DynamoDBMapperFieldModel.DynamoDBAttributeType; import software.amazon.awssdk.mapper.dynamodb.DynamoDBMapperFieldModel.Reflect; import software.amazon.awssdk.mapper.dynamodb.DynamoDBMapperModelFactory.TableFactory; @@ -334,7 +335,7 @@ public ByteBuffer get(AttributeValue value) { } @Override public AttributeValue build(ByteBuffer o) { - return AttributeValue.builder().b(software.amazon.awssdk.core.SdkBytes.fromByteBuffer(o)).build(); + return AttributeValue.builder().b(SdkBytes.fromByteBuffer(o)).build(); } } @@ -409,7 +410,7 @@ public List get(AttributeValue value) { return null; } final List result = new ArrayList(value.bs().size()); - for (software.amazon.awssdk.core.SdkBytes sb : value.bs()) { + for (SdkBytes sb : value.bs()) { // Writable copy for v1 parity; SdkBytes.asByteBuffer() would be read-only. result.add(ByteBuffer.wrap(sb.asByteArray())); } @@ -417,10 +418,10 @@ public List get(AttributeValue value) { } @Override public AttributeValue build(List o) { - final List sdkBytes = - new ArrayList(o.size()); + final List sdkBytes = + new ArrayList(o.size()); for (ByteBuffer bb : o) { - sdkBytes.add(software.amazon.awssdk.core.SdkBytes.fromByteBuffer(bb)); + sdkBytes.add(SdkBytes.fromByteBuffer(bb)); } return AttributeValue.builder().bs(sdkBytes).build(); } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteArraySetUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteArraySetUnmarshaller.java index 0440c299a375..e44a71e501d8 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteArraySetUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteArraySetUnmarshaller.java @@ -17,6 +17,7 @@ import java.util.HashSet; import java.util.Set; +import software.amazon.awssdk.core.SdkBytes; import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** @@ -39,7 +40,7 @@ private ByteArraySetUnmarshaller() { public Object unmarshall(AttributeValue value) { Set result = new HashSet(); - for (software.amazon.awssdk.core.SdkBytes sdkBytes : value.bs()) { + for (SdkBytes sdkBytes : value.bs()) { result.add(sdkBytes.asByteArray()); } diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteBufferSetUnmarshaller.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteBufferSetUnmarshaller.java index 807b58bfc223..5c13da32c4eb 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteBufferSetUnmarshaller.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/unmarshallers/ByteBufferSetUnmarshaller.java @@ -18,6 +18,7 @@ import java.util.HashSet; import java.util.Set; +import software.amazon.awssdk.core.SdkBytes; import software.amazon.awssdk.services.dynamodb.model.AttributeValue; /** @@ -39,7 +40,7 @@ private ByteBufferSetUnmarshaller() { @Override public Object unmarshall(AttributeValue value) { Set result = new HashSet(); - for (software.amazon.awssdk.core.SdkBytes sdkBytes : value.bs()) { + for (SdkBytes sdkBytes : value.bs()) { // Writable copy for v1 parity; SdkBytes.asByteBuffer() would be read-only. result.add(ByteBuffer.wrap(sdkBytes.asByteArray())); } From 45bdadf638df18066a4eba4354c83bce9dea6ecb Mon Sep 17 00:00:00 2001 From: RanVaknin <50976344+RanVaknin@users.noreply.github.com> Date: Tue, 28 Jul 2026 11:40:01 -0700 Subject: [PATCH 6/6] Fix header --- .../mapper/dynamodb/MapperExceptions.java | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/MapperExceptions.java b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/MapperExceptions.java index 149edb6763d5..85c609e92c4a 100644 --- a/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/MapperExceptions.java +++ b/services-custom/dynamodb-mapper/src/main/java/software/amazon/awssdk/mapper/dynamodb/MapperExceptions.java @@ -1,16 +1,16 @@ /* - * Copyright 2011-2025 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at: + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at * - * http://aws.amazon.com/apache2.0 + * http://aws.amazon.com/apache2.0 * - * This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES - * OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and - * limitations under the License. + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. */ package software.amazon.awssdk.mapper.dynamodb; @@ -37,7 +37,6 @@ static RuntimeException failure(Throwable t, String message) { throw (Error) t; } if (t instanceof InterruptedException) { - Thread.currentThread().interrupt(); return AbortedException.create(message, t); } return SdkClientException.create(message, t);