From 6134722b550a5a27b3e1018fb7ed6690e5fec984 Mon Sep 17 00:00:00 2001 From: Reed Passaretti Date: Mon, 15 Mar 2021 10:46:17 -0400 Subject: [PATCH] Empty beans are now preserved through serialization and deserialization --- .../bugfix-AmazonDynamoDBEnhanced-dbd1477.json | 6 ++++++ .../dynamodb/mapper/StaticImmutableTableSchema.java | 8 ++------ .../dynamodb/mapper/StaticImmutableTableSchemaTest.java | 2 +- .../enhanced/dynamodb/mapper/StaticTableSchemaTest.java | 2 +- 4 files changed, 10 insertions(+), 8 deletions(-) create mode 100644 .changes/next-release/bugfix-AmazonDynamoDBEnhanced-dbd1477.json diff --git a/.changes/next-release/bugfix-AmazonDynamoDBEnhanced-dbd1477.json b/.changes/next-release/bugfix-AmazonDynamoDBEnhanced-dbd1477.json new file mode 100644 index 000000000000..0bed6050bf34 --- /dev/null +++ b/.changes/next-release/bugfix-AmazonDynamoDBEnhanced-dbd1477.json @@ -0,0 +1,6 @@ +{ + "category": "Amazon DynamoDB Enhanced", + "contributor": "reed53", + "type": "bugfix", + "description": "Empty beans are now preserved through serialization and deserialization" +} diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/StaticImmutableTableSchema.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/StaticImmutableTableSchema.java index 896b4901b59b..cd4ebe1b8d82 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/StaticImmutableTableSchema.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/mapper/StaticImmutableTableSchema.java @@ -439,8 +439,7 @@ public StaticTableMetadata tableMetadata() { @Override public T mapToItem(Map attributeMap) { - // Lazily instantiate the builder once we have an attribute to write - B builder = null; + B builder = constructNewBuilder(); Map, Map> flattenedAttributeValuesMap = new LinkedHashMap<>(); for (Map.Entry entry : attributeMap.entrySet()) { @@ -451,9 +450,6 @@ public T mapToItem(Map attributeMap) { ResolvedImmutableAttribute attributeMapper = indexedMappers.get(key); if (attributeMapper != null) { - if (builder == null) { - builder = constructNewBuilder(); - } attributeMapper.updateItemMethod().accept(builder, value); } else { @@ -479,7 +475,7 @@ public T mapToItem(Map attributeMap) { builder = entry.getKey().mapToItem(builder, this::constructNewBuilder, entry.getValue()); } - return builder == null ? null : buildItemFunction.apply(builder); + return buildItemFunction.apply(builder); } @Override diff --git a/services-custom/dynamodb-enhanced/src/test/java/software/amazon/awssdk/enhanced/dynamodb/mapper/StaticImmutableTableSchemaTest.java b/services-custom/dynamodb-enhanced/src/test/java/software/amazon/awssdk/enhanced/dynamodb/mapper/StaticImmutableTableSchemaTest.java index 177384e358bb..511964dce3bb 100644 --- a/services-custom/dynamodb-enhanced/src/test/java/software/amazon/awssdk/enhanced/dynamodb/mapper/StaticImmutableTableSchemaTest.java +++ b/services-custom/dynamodb-enhanced/src/test/java/software/amazon/awssdk/enhanced/dynamodb/mapper/StaticImmutableTableSchemaTest.java @@ -1499,7 +1499,7 @@ private void verifyNullAttribute(EnhancedType attributeType, assertThat(resultMap, is(expectedMap)); FakeMappedItem resultItem = tableSchema.mapToItem(expectedMap); - assertThat(resultItem, is(nullValue())); + assertThat(resultItem, is(FakeMappedItem.builder().build())); } private void verifyNullableAttribute(EnhancedType attributeType, diff --git a/services-custom/dynamodb-enhanced/src/test/java/software/amazon/awssdk/enhanced/dynamodb/mapper/StaticTableSchemaTest.java b/services-custom/dynamodb-enhanced/src/test/java/software/amazon/awssdk/enhanced/dynamodb/mapper/StaticTableSchemaTest.java index fc43da907b08..d366b759203b 100644 --- a/services-custom/dynamodb-enhanced/src/test/java/software/amazon/awssdk/enhanced/dynamodb/mapper/StaticTableSchemaTest.java +++ b/services-custom/dynamodb-enhanced/src/test/java/software/amazon/awssdk/enhanced/dynamodb/mapper/StaticTableSchemaTest.java @@ -1517,7 +1517,7 @@ private void verifyNullAttribute(EnhancedType attributeType, assertThat(resultMap, is(expectedMap)); FakeMappedItem resultItem = tableSchema.mapToItem(expectedMap); - assertThat(resultItem, is(nullValue())); + assertThat(resultItem, is(FakeMappedItem.builder().build())); } private void verifyNullableAttribute(EnhancedType attributeType,