Skip to content

Commit c395ac2

Browse files
committed
Updated after handling Matt's comments
1 parent c9078fc commit c395ac2

22 files changed

+1901
-1585
lines changed

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

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -86,14 +86,13 @@ static <T> BeanTableSchema<T> fromBean(Class<T> beanClass) {
8686
return BeanTableSchema.create(beanClass);
8787
}
8888

89-
9089
/**
91-
* Provides interfaces to interact with DynamoDB tables as {@link EnhancedDocument} where the complete Schema of the table
92-
* is not required.
93-
* @return A {@link DocumentTableSchema.Builder} for instantiating DocumentTableSchema.
90+
* Provides interfaces to interact with DynamoDB tables as {@link EnhancedDocument} where the complete Schema of the table is
91+
* not required.
9492
*
93+
* @return A {@link DocumentTableSchema.Builder} for instantiating DocumentTableSchema.
9594
*/
96-
static DocumentTableSchema.Builder documentSchemaBuilder(){
95+
static DocumentTableSchema.Builder documentSchemaBuilder() {
9796
return DocumentTableSchema.builder();
9897
}
9998

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

Lines changed: 161 additions & 195 deletions
Large diffs are not rendered by default.

services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/converter/attribute/JsonItemAttributeConverter.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,9 @@ public AttributeValue transformFrom(JsonNode input) {
7373

7474
@Override
7575
public JsonNode transformTo(AttributeValue input) {
76+
if (AttributeValue.fromNul(true).equals(input)) {
77+
return NullJsonNode.instance();
78+
}
7679
return EnhancedAttributeValue.fromAttributeValue(input).convert(VISITOR);
7780
}
7881

services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/converter/attribute/JsonNodeToAttributeValueMapConverter.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public static JsonNodeToAttributeValueMapConverter instance() {
3838

3939
@Override
4040
public AttributeValue visitNull() {
41-
return AttributeValue.builder().build();
41+
return AttributeValue.fromNul(true);
4242
}
4343

4444
@Override
@@ -70,7 +70,8 @@ public AttributeValue visitObject(Map<String, JsonNode> object) {
7070
.collect(Collectors.toMap(
7171
entry -> entry.getKey(),
7272
entry -> entry.getValue().visit(this),
73-
(left, right) -> left, LinkedHashMap::new))).build();
73+
(left, right) -> left, LinkedHashMap::new)))
74+
.build();
7475
}
7576

7677
@Override

services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/converter/attribute/SdkNumberAttributeConverter.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515

1616
package software.amazon.awssdk.enhanced.dynamodb.internal.converter.attribute;
1717

18-
import java.math.BigInteger;
1918
import software.amazon.awssdk.annotations.Immutable;
2019
import software.amazon.awssdk.annotations.SdkInternalApi;
2120
import software.amazon.awssdk.annotations.ThreadSafe;

services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/converter/string/SdkNumberStringConverter.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515

1616
package software.amazon.awssdk.enhanced.dynamodb.internal.converter.string;
1717

18-
import java.math.BigInteger;
1918
import software.amazon.awssdk.annotations.Immutable;
2019
import software.amazon.awssdk.annotations.SdkInternalApi;
2120
import software.amazon.awssdk.annotations.ThreadSafe;

services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/document/DefaultEnhancedDocument.java

Lines changed: 198 additions & 238 deletions
Large diffs are not rendered by default.

services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/document/DocumentUtils.java

Lines changed: 0 additions & 224 deletions
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
/*
2+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License").
5+
* You may not use this file except in compliance with the License.
6+
* A copy of the License is located at
7+
*
8+
* http://aws.amazon.com/apache2.0
9+
*
10+
* or in the "license" file accompanying this file. This file is distributed
11+
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
12+
* express or implied. See the License for the specific language governing
13+
* permissions and limitations under the License.
14+
*/
15+
16+
package software.amazon.awssdk.enhanced.dynamodb.internal.document;
17+
18+
import java.util.LinkedHashMap;
19+
import java.util.List;
20+
import java.util.Map;
21+
import java.util.stream.Collectors;
22+
import software.amazon.awssdk.annotations.SdkInternalApi;
23+
import software.amazon.awssdk.protocols.jsoncore.JsonNode;
24+
import software.amazon.awssdk.protocols.jsoncore.JsonNodeVisitor;
25+
26+
@SdkInternalApi
27+
public class IdentityJsonNodeVisitor implements JsonNodeVisitor<Object> {
28+
@Override
29+
public Object visitNull() {
30+
return null;
31+
}
32+
33+
@Override
34+
public Object visitBoolean(boolean bool) {
35+
return bool;
36+
}
37+
38+
@Override
39+
public Object visitNumber(String number) {
40+
return number;
41+
}
42+
43+
@Override
44+
public Object visitString(String string) {
45+
return string;
46+
}
47+
48+
@Override
49+
public Object visitArray(List<JsonNode> array) {
50+
return array.stream()
51+
.map(n -> n.visit(this))
52+
.collect(Collectors.toList());
53+
}
54+
55+
@Override
56+
public Object visitObject(Map<String, JsonNode> object) {
57+
Map<String, Object> result = new LinkedHashMap<>(object.size());
58+
object.forEach((k, v) -> {
59+
result.put(k, v.visit(this));
60+
});
61+
return result;
62+
}
63+
64+
@Override
65+
public Object visitEmbeddedObject(Object embeddedObject) {
66+
return embeddedObject;
67+
}
68+
}

0 commit comments

Comments
 (0)