Skip to content

Commit f023ef9

Browse files
committed
Compilation issue and toStringMethod for JsonNode
1 parent caf50c3 commit f023ef9

File tree

7 files changed

+92
-74
lines changed

7 files changed

+92
-74
lines changed

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

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -319,11 +319,10 @@ static Builder builder() {
319319
*
320320
* @param attributeName Name of the attribute.
321321
* @return value of the specified attribute in the current document as a non-null Boolean.
322-
* @throws RuntimeException
323-
* if either the attribute doesn't exist or if the attribute
324-
* value cannot be converted into a boolean value.
322+
* @throws RuntimeException if either the attribute doesn't exist or if the attribute value cannot be converted into a boolean
323+
* value.
325324
*/
326-
boolean getBoolean(String attributeName);
325+
Boolean getBoolean(String attributeName);
327326

328327
/**
329328
* Gets the value as Object for a given attribute in the current document.

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -280,8 +280,7 @@ public String toJson() {
280280
.fromM(DocumentUtils.objectMapToAttributeMap(this.attributeValueObjectMap, attributeConverterProviders));
281281
JsonItemAttributeConverter jsonItemAttributeConverter = JsonItemAttributeConverter.create();
282282
JsonNode jsonNode = jsonItemAttributeConverter.transformTo(jsonMap);
283-
Document document = jsonNode.visit(new DocumentUnmarshaller());
284-
return document.toString();
283+
return jsonNode != null ? jsonNode.toString() : null;
285284
}
286285

287286
public static class DefaultBuilder implements EnhancedDocument.Builder {

services-custom/dynamodb-enhanced/src/test/java/software/amazon/awssdk/enhanced/dynamodb/TableSchemaTest.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import org.junit.rules.ExpectedException;
2323
import software.amazon.awssdk.enhanced.dynamodb.functionaltests.models.FakeItem;
2424
import software.amazon.awssdk.enhanced.dynamodb.mapper.BeanTableSchema;
25-
import software.amazon.awssdk.enhanced.dynamodb.mapper.DocumentTableSchema;
2625
import software.amazon.awssdk.enhanced.dynamodb.mapper.ImmutableTableSchema;
2726
import software.amazon.awssdk.enhanced.dynamodb.mapper.StaticTableSchema;
2827
import software.amazon.awssdk.enhanced.dynamodb.mapper.testbeans.InvalidBean;
@@ -71,10 +70,4 @@ public void fromClass_invalidClassThrowsException() {
7170
exception.expectMessage("InvalidBean");
7271
TableSchema.fromClass(InvalidBean.class);
7372
}
74-
75-
@Test
76-
public void fromClass_fromDocumentSchemaBuilder() {
77-
DocumentTableSchema tableSchema = TableSchema.fromDocumentSchemaBuilder().build();
78-
assertThat(tableSchema).isInstanceOf(DocumentTableSchema.class);
79-
}
8073
}

services-custom/dynamodb-enhanced/src/test/java/software/amazon/awssdk/enhanced/dynamodb/functionaltests/DocumentSchemaTableTest.java

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@
2020
import static org.hamcrest.MatcherAssert.assertThat;
2121

2222
import org.junit.jupiter.api.Test;
23-
import software.amazon.awssdk.core.exception.SdkClientException;
2423
import software.amazon.awssdk.enhanced.dynamodb.AttributeValueType;
2524
import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedClient;
2625
import software.amazon.awssdk.enhanced.dynamodb.DynamoDbTable;
26+
import software.amazon.awssdk.enhanced.dynamodb.TableMetadata;
2727
import software.amazon.awssdk.enhanced.dynamodb.TableSchema;
2828
import software.amazon.awssdk.enhanced.dynamodb.document.EnhancedDocument;
2929

@@ -35,9 +35,9 @@ public class DocumentSchemaTableTest extends LocalDynamoDbSyncTestBase {
3535

3636
private final DynamoDbTable<EnhancedDocument> mappedTable = enhancedClient.table(
3737
getConcreteTableName("table-name"),
38-
TableSchema.fromDocumentSchemaBuilder()
39-
.primaryKey("sampleHashKey", AttributeValueType.S)
40-
.sortKey("sampleSortKey", AttributeValueType.S)
38+
TableSchema.documentSchemaBuilder()
39+
.addIndexPartitionKey(TableMetadata.primaryIndexName(), "sampleHashKey", AttributeValueType.S)
40+
.addIndexSortKey("sort-index","sampleSortKey", AttributeValueType.S)
4141
.build());
4242

4343

@@ -49,9 +49,9 @@ public class DocumentSchemaTableTest extends LocalDynamoDbSyncTestBase {
4949
void createTableWithPrimaryKeyAndSortKey(){
5050
DynamoDbTable<EnhancedDocument> table = enhancedClient.table(
5151
getConcreteTableName("table-name"),
52-
TableSchema.fromDocumentSchemaBuilder()
53-
.primaryKey("sampleHashKey", AttributeValueType.S)
54-
.sortKey("sampleSortKey", AttributeValueType.S)
52+
TableSchema.documentSchemaBuilder()
53+
.addIndexPartitionKey(TableMetadata.primaryIndexName(), "sampleHashKey", AttributeValueType.S)
54+
.addIndexSortKey("sort-index","sampleSortKey", AttributeValueType.S)
5555
.build());
5656

5757

@@ -66,7 +66,7 @@ void createTableWithPrimaryKeyAndSortKey(){
6666
void createTableWithOutPrimaryKeyAndSortKey(){
6767
DynamoDbTable<EnhancedDocument> table = enhancedClient.table(
6868
getConcreteTableName("table-name"),
69-
TableSchema.fromDocumentSchemaBuilder()
69+
TableSchema.documentSchemaBuilder()
7070
.build());
7171

7272
assertThatExceptionOfType(IllegalArgumentException.class)
@@ -80,7 +80,7 @@ void createTableWithOutPrimaryKeyAndSortKey(){
8080
void createTableWithPrimaryKeyAndNOSortKey(){
8181
DynamoDbTable<EnhancedDocument> table = enhancedClient.table(
8282
getConcreteTableName("table-name"),
83-
TableSchema.fromDocumentSchemaBuilder()
83+
TableSchema.documentSchemaBuilder()
8484
.build());
8585

8686
assertThatExceptionOfType(IllegalArgumentException.class)
@@ -103,14 +103,14 @@ void putItem() throws InterruptedException {
103103
System.out.println("mappedTable.tableName() "+mappedTable.tableName());
104104

105105
mappedTable.putItem(EnhancedDocument.builder()
106-
.addString("sampleHashKey", "one_hash")
107-
.addString("sampleSortKey", "one_sort")
106+
.putString("sampleHashKey", "one_hash")
107+
.putString("sampleSortKey", "one_sort")
108108
.build());
109109

110110
Thread.sleep(2000);
111111
EnhancedDocument item = mappedTable.getItem(EnhancedDocument.builder()
112-
.addString("sampleHashKey", "one_hash")
113-
.addString("sampleSortKey", "one_sort")
112+
.putString("sampleHashKey", "one_hash")
113+
.putString("sampleSortKey", "one_sort")
114114
.build());
115115
System.out.println("item "+item.toJson());
116116
}

services-custom/dynamodb-enhanced/src/test/java/software/amazon/awssdk/enhanced/dynamodb/functionaltests/document/CreateTableTest.java

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,11 @@
2323
import software.amazon.awssdk.enhanced.dynamodb.AttributeValueType;
2424
import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedClient;
2525
import software.amazon.awssdk.enhanced.dynamodb.DynamoDbTable;
26+
import software.amazon.awssdk.enhanced.dynamodb.TableMetadata;
2627
import software.amazon.awssdk.enhanced.dynamodb.TableSchema;
28+
import software.amazon.awssdk.enhanced.dynamodb.converters.document.CustomAttributeForDocumentConverterProvider;
2729
import software.amazon.awssdk.enhanced.dynamodb.document.EnhancedDocument;
2830
import software.amazon.awssdk.enhanced.dynamodb.functionaltests.LocalDynamoDbSyncTestBase;
29-
import software.amazon.awssdk.enhanced.dynamodb.functionaltests.document.converter.CustomAttributeConverterProvider;
3031
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
3132

3233
public final class CreateTableTest extends LocalDynamoDbSyncTestBase {
@@ -44,10 +45,10 @@ void createTableWithPrimaryKeyAndSortKey() {
4445
String tableName = getConcreteTableName("table-name");
4546
DynamoDbTable<EnhancedDocument> table = enhancedClient.table(
4647
tableName,
47-
TableSchema.fromDocumentSchemaBuilder()
48-
.primaryKey("sampleHashKey", AttributeValueType.S)
49-
.sortKey("sampleSortKey", AttributeValueType.S)
50-
.attributeConverterProviders(CustomAttributeConverterProvider.create(),
48+
TableSchema.documentSchemaBuilder()
49+
.addIndexPartitionKey(TableMetadata.primaryIndexName(),"sampleHashKey", AttributeValueType.S)
50+
.addIndexSortKey("sortIndex","sampleSortKey", AttributeValueType.S)
51+
.attributeConverterProviders(CustomAttributeForDocumentConverterProvider.create(),
5152
AttributeConverterProvider.defaultProvider())
5253
.build());
5354

@@ -61,7 +62,7 @@ void createTableWithPrimaryKeyAndSortKey() {
6162
void createTableWithOutPrimaryKeyAndSortKey(){
6263
DynamoDbTable<EnhancedDocument> table = enhancedClient.table(
6364
getConcreteTableName("table-name"),
64-
TableSchema.fromDocumentSchemaBuilder()
65+
TableSchema.documentSchemaBuilder()
6566
.build());
6667

6768
assertThatExceptionOfType(IllegalArgumentException.class)
@@ -76,8 +77,8 @@ void createTableWithPrimaryKeyAndNOSortKey(){
7677
String tableName = getConcreteTableName("table-name-no-sort");
7778
DynamoDbTable<EnhancedDocument> table = enhancedClient.table(
7879
tableName,
79-
TableSchema.fromDocumentSchemaBuilder()
80-
.primaryKey("sampleHashKey", AttributeValueType.S)
80+
TableSchema.documentSchemaBuilder()
81+
.addIndexPartitionKey(TableMetadata.primaryIndexName(),"sampleHashKey", AttributeValueType.S)
8182
.build());
8283

8384
table.createTable();
@@ -92,8 +93,8 @@ void createTableWithPrimaryKeyAndNOSortKeOtherKeyy(){
9293
String tableName = getConcreteTableName("table-name-no-sort");
9394
DynamoDbTable<EnhancedDocument> table = enhancedClient.table(
9495
tableName,
95-
TableSchema.fromDocumentSchemaBuilder()
96-
.primaryKey("sampleHashKey", AttributeValueType.S)
96+
TableSchema.documentSchemaBuilder()
97+
.addIndexPartitionKey(TableMetadata.primaryIndexName(),"sampleHashKey", AttributeValueType.S)
9798
.build());
9899

99100
table.createTable();

services-custom/dynamodb-enhanced/src/test/java/software/amazon/awssdk/enhanced/dynamodb/functionaltests/document/PutDocumentTestTest.java

Lines changed: 64 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -17,27 +17,25 @@
1717

1818
import static org.assertj.core.api.Assertions.assertThat;
1919
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
20+
import static org.hamcrest.Matchers.is;
21+
import static org.hamcrest.Matchers.nullValue;
22+
import static software.amazon.awssdk.enhanced.dynamodb.model.QueryConditional.keyEqualTo;
23+
import static software.amazon.awssdk.enhanced.dynamodb.model.QueryConditional.sortBetween;
2024

21-
import java.math.BigDecimal;
22-
import java.util.Arrays;
23-
import java.util.Collections;
24-
import java.util.stream.Collectors;
25-
import java.util.stream.Stream;
2625
import org.junit.jupiter.api.AfterEach;
27-
import org.junit.jupiter.api.BeforeAll;
2826
import org.junit.jupiter.api.BeforeEach;
2927
import org.junit.jupiter.api.Test;
30-
import software.amazon.awssdk.core.SdkBytes;
31-
import software.amazon.awssdk.core.SdkNumber;
3228
import software.amazon.awssdk.enhanced.dynamodb.AttributeConverterProvider;
3329
import software.amazon.awssdk.enhanced.dynamodb.AttributeValueType;
3430
import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedClient;
3531
import software.amazon.awssdk.enhanced.dynamodb.DynamoDbTable;
32+
import software.amazon.awssdk.enhanced.dynamodb.TableMetadata;
3633
import software.amazon.awssdk.enhanced.dynamodb.TableSchema;
34+
import software.amazon.awssdk.enhanced.dynamodb.converters.document.CustomAttributeForDocumentConverterProvider;
35+
import software.amazon.awssdk.enhanced.dynamodb.converters.document.CustomClassForDocumentAPI;
3736
import software.amazon.awssdk.enhanced.dynamodb.document.EnhancedDocument;
3837
import software.amazon.awssdk.enhanced.dynamodb.functionaltests.LocalDynamoDbSyncTestBase;
39-
import software.amazon.awssdk.enhanced.dynamodb.functionaltests.document.converter.CustomAttributeConverterProvider;
40-
import software.amazon.awssdk.enhanced.dynamodb.functionaltests.document.converter.CustomClass;
38+
import software.amazon.awssdk.enhanced.dynamodb.model.PageIterable;
4139
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
4240
import software.amazon.awssdk.services.dynamodb.model.DynamoDbException;
4341

@@ -52,10 +50,11 @@ public class PutDocumentTestTest extends LocalDynamoDbSyncTestBase {
5250
public static final String SORT_KEY = "sampleSortKey";
5351
private DynamoDbTable<EnhancedDocument> table = enhancedClient.table(
5452
tableName,
55-
TableSchema.fromDocumentSchemaBuilder()
56-
.primaryKey(HASH_KEY, AttributeValueType.S)
57-
.sortKey(SORT_KEY, AttributeValueType.S)
58-
.attributeConverterProviders(CustomAttributeConverterProvider.create(),
53+
TableSchema.documentSchemaBuilder()
54+
.addIndexPartitionKey(TableMetadata.primaryIndexName(),HASH_KEY, AttributeValueType.S)
55+
.addIndexPartitionKey("part-index","group", AttributeValueType.S)
56+
.addIndexSortKey("sort_index","sort_key2", AttributeValueType.N)
57+
.attributeConverterProviders(CustomAttributeForDocumentConverterProvider.create(),
5958
AttributeConverterProvider.defaultProvider())
6059
.build());
6160

@@ -74,47 +73,75 @@ public void clearAll(){
7473
void putSimpleDocumentWithSimpleValues() {
7574
table.putItem(EnhancedDocument
7675
.builder()
77-
.addString(HASH_KEY, "first_hash")
78-
.addString(SORT_KEY, "1_sort")
79-
.addNull("null_Key")
80-
.addBoolean("boolean_key", true)
81-
.addNumber("number_int", 2)
82-
.addNumber("number_SdkNumber", SdkNumber.fromString("5"))
83-
.addSdkBytes("SdkBytes", SdkBytes.fromUtf8String("sample_binary"))
76+
.putString(HASH_KEY, "first_hash")
77+
.putString(SORT_KEY, "1_sort")
78+
.putNumber("party", 1 )
8479
.build());
8580

8681
assertThat(
8782
table.getItem(EnhancedDocument.builder()
88-
.add(SORT_KEY, "1_sort")
89-
.addString(HASH_KEY, "first_hash").build()).get(SORT_KEY)).isEqualTo("1_sort");
83+
.putObject(SORT_KEY, "1_sort")
84+
.putString(HASH_KEY, "first_hash").build()).get(SORT_KEY)).isEqualTo("1_sort");
9085

9186

9287
}
9388

9489
@Test
9590
void putSetOfValues(){
91+
table.putItem(EnhancedDocument
92+
.builder()
93+
.putString(HASH_KEY, "first_hash_1")
94+
.putString(SORT_KEY, "1_sort")
95+
.putNumber("sort_key2", 2)
96+
.putNumber("party", 1 )
97+
.build());
98+
99+
100+
table.putItem(EnhancedDocument
101+
.builder()
102+
.putString(HASH_KEY, "first_hash_2")
103+
.putString(SORT_KEY, "1_sort")
104+
.putNumber("sort_key2", 3)
105+
.putNumber("party", 1 )
106+
107+
.build());
108+
109+
96110

97-
table.putItem(r -> r.item(EnhancedDocument.builder()
98-
.addString(HASH_KEY, "first_hash")
99-
.addString(SORT_KEY, "1_sort")
100-
.addStringSet("stringSet",
101-
Stream.of("str1", "str2", "str2").collect(Collectors.toSet()))
102-
.addNumberSet("numberSet",
103-
Stream.of(1, new BigDecimal(2), 3.00).collect(Collectors.toSet()))
104-
.addSdkBytesSet("sdk_bytes",
105-
Stream.of(SdkBytes.fromUtf8String("a"),
106-
SdkBytes.fromUtf8String("b")).collect(Collectors.toSet()))
107-
.build()));
111+
table.putItem(EnhancedDocument
112+
.builder()
113+
.putString(HASH_KEY, "first_hash_2")
114+
.putString(SORT_KEY, "1_sort")
115+
.putNumber("sort_key2", 6)
116+
.putNumber("party", 1 )
117+
.build());
118+
119+
PageIterable<EnhancedDocument> firstHashOne =
120+
table.query(sortBetween(r->r.sortValue(3).partitionValue( "part-index"), s-> s.sortValue(10).partitionValue(
121+
"part-index")));
122+
123+
124+
// PageIterable<EnhancedDocument> query =
125+
// table.query(q -> q.queryConditional(QueryConditional.sortBeginsWith(Key.builder().sortValue("2").partitionValue(
126+
// "first").build())));
127+
128+
129+
System.out.println("OUTPUT");
130+
firstHashOne.items().forEach(t -> t.toJson());
108131

109132
}
110133

111134

135+
136+
137+
112138
@Test
113139
void putCustomClass_with_NoConverterInDoc(){
114140
assertThatExceptionOfType(IllegalStateException.class).isThrownBy(
115141
() -> table.putItem(EnhancedDocument.builder()
116142
// Combination of different Types
117-
.add("customClass", CustomClass.builder().foo("value").build())
143+
.putObject("customClass",
144+
CustomClassForDocumentAPI.builder().string("value").build())
118145
.build())
119146

120147
);
@@ -129,15 +156,15 @@ void putSimpleDocumentWithNoHash() {
129156
// ServiceSideException
130157
assertThatExceptionOfType(DynamoDbException.class)
131158
.isThrownBy(() ->table.putItem(EnhancedDocument.builder()
132-
.addString(HASH_KEY, "first_hash")
159+
.putString(HASH_KEY, "first_hash")
133160
.build()))
134161
.withMessageContaining("One of the required keys was not given a value (Service: DynamoDb, Status Code: 400");
135162

136163

137164
assertThatExceptionOfType(DynamoDbException.class)
138165
.isThrownBy(() ->table.putItem(EnhancedDocument
139166
.builder()
140-
.addString(SORT_KEY, "1_sort")
167+
.putString(SORT_KEY, "1_sort")
141168
.build()))
142169
.withMessageContaining("One of the required keys was not given a value (Service: DynamoDb, Status Code: 400");
143170

services-custom/dynamodb-enhanced/src/test/java/software/amazon/awssdk/enhanced/dynamodb/mapper/DocumentTableSchemaTest.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
import java.util.ArrayList;
2626
import java.util.Arrays;
2727
import java.util.Collections;
28-
import java.util.LinkedHashMap;
2928
import java.util.List;
3029
import java.util.Map;
3130
import java.util.Set;

0 commit comments

Comments
 (0)