Skip to content

Commit 0b2f8e4

Browse files
committed
Add missing node mapper for document types
1 parent 25f4023 commit 0b2f8e4

File tree

9 files changed

+74
-1
lines changed

9 files changed

+74
-1
lines changed

smithy-trait-codegen/src/it/java/software/amazon/smithy/traitcodegen/test/CreatesTraitTest.java

+11
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,13 @@
99
import com.example.traits.enums.IntEnumTrait;
1010
import com.example.traits.enums.StringEnumTrait;
1111
import com.example.traits.enums.SuitTrait;
12+
import com.example.traits.lists.DocumentListTrait;
1213
import com.example.traits.lists.ListMember;
1314
import com.example.traits.lists.NumberListTrait;
1415
import com.example.traits.lists.StringListTrait;
1516
import com.example.traits.lists.StructureListTrait;
1617
import com.example.traits.maps.MapValue;
18+
import com.example.traits.maps.StringDocumentMapTrait;
1719
import com.example.traits.maps.StringStringMapTrait;
1820
import com.example.traits.maps.StringToStructMapTrait;
1921
import com.example.traits.mixins.StructWithMixinTrait;
@@ -81,6 +83,10 @@ static Stream<Arguments> createTraitTests() {
8183
ListMember.builder().a("first").b(1).c("other").build().toNode(),
8284
ListMember.builder().a("second").b(2).c("more").build().toNode()
8385
)),
86+
Arguments.of(DocumentListTrait.ID, ArrayNode.fromNodes(
87+
ObjectNode.builder().withMember("a", "b").build(),
88+
ObjectNode.builder().withMember("c", "d").withMember("e", "f").build()
89+
)),
8490
// Maps
8591
Arguments.of(StringStringMapTrait.ID, StringStringMapTrait.builder()
8692
.putValues("a", "first").putValues("b", "other").build().toNode()
@@ -90,6 +96,11 @@ static Stream<Arguments> createTraitTests() {
9096
.putValues("two", MapValue.builder().a("bar").b(4).build())
9197
.build().toNode()
9298
),
99+
Arguments.of(StringDocumentMapTrait.ID, StringDocumentMapTrait.builder()
100+
.putValues("a", ObjectNode.builder().withMember("a", "a").build())
101+
.putValues("b", ObjectNode.builder().withMember("b", "b").build())
102+
.build().toNode()
103+
),
93104
// Mixins
94105
Arguments.of(StructureListWithMixinMemberTrait.ID,
95106
ArrayNode.fromNodes(ObjectNode.builder().withMember("a", "a").withMember("d", "d").build())),

smithy-trait-codegen/src/it/java/software/amazon/smithy/traitcodegen/test/LoadsFromModelTest.java

+11
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,12 @@
1616
import com.example.traits.idref.IdRefStructTrait;
1717
import com.example.traits.idref.IdRefStructWithNestedIdsTrait;
1818
import com.example.traits.idref.NestedIdRefHolder;
19+
import com.example.traits.lists.DocumentListTrait;
1920
import com.example.traits.lists.ListMember;
2021
import com.example.traits.lists.NumberListTrait;
2122
import com.example.traits.lists.StructureListTrait;
2223
import com.example.traits.maps.MapValue;
24+
import com.example.traits.maps.StringDocumentMapTrait;
2325
import com.example.traits.maps.StringStringMapTrait;
2426
import com.example.traits.maps.StringToStructMapTrait;
2527
import com.example.traits.mixins.ListMemberWithMixin;
@@ -115,6 +117,10 @@ static Stream<Arguments> loadsModelTests() {
115117
MapUtils.of("getValues", ListUtils.of(
116118
ListMember.builder().a("first").b(1).c("other").build(),
117119
ListMember.builder().a("second").b(2).c("more").build()))),
120+
Arguments.of("lists/document-list-trait.smithy", DocumentListTrait.class,
121+
MapUtils.of("getValues", ListUtils.of(
122+
ObjectNode.builder().withMember("a", "a").build(),
123+
ObjectNode.builder().withMember("b", "b").withMember("c", "c").build()))),
118124
// Maps
119125
Arguments.of("maps/string-string-map-trait.smithy", StringStringMapTrait.class,
120126
MapUtils.of("getValues", MapUtils.of("a", "stuff",
@@ -123,6 +129,11 @@ static Stream<Arguments> loadsModelTests() {
123129
MapUtils.of("getValues", MapUtils.of(
124130
"one", MapValue.builder().a("foo").b(2).build(),
125131
"two", MapValue.builder().a("bar").b(4).build()))),
132+
Arguments.of("maps/string-to-document-map-trait.smithy", StringDocumentMapTrait.class,
133+
MapUtils.of("getValues", MapUtils.of(
134+
"a", ObjectNode.builder().withMember("a", "a").build(),
135+
"b", ObjectNode.builder().withMember("b", "b").withMember("c", "c").build()
136+
))),
126137
// Mixins
127138
Arguments.of("mixins/struct-with-mixin-member.smithy", StructureListWithMixinMemberTrait.class,
128139
MapUtils.of("getValues", ListUtils.of(
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
$version: "2.0"
2+
3+
namespace test.smithy.traitcodegen
4+
5+
use test.smithy.traitcodegen.lists#DocumentListTrait
6+
7+
8+
@DocumentListTrait([
9+
{ a : "a"},
10+
{
11+
b : "b"
12+
c : "c"
13+
}
14+
])
15+
structure myStruct {
16+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
$version: "2.0"
2+
3+
namespace test.smithy.traitcodegen
4+
5+
use test.smithy.traitcodegen.maps#StringDocumentMap
6+
7+
@StringDocumentMap(
8+
a: { a : "a" }
9+
b: {
10+
b : "b"
11+
c : "c"
12+
}
13+
)
14+
structure myStruct {
15+
}

smithy-trait-codegen/src/main/java/software/amazon/smithy/traitcodegen/generators/FromNodeMapperVisitor.java

+1
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ public Void floatShape(FloatShape shape) {
112112

113113
@Override
114114
public Void documentShape(DocumentShape shape) {
115+
writer.write("$L.expectObjectNode()", varName);
115116
return null;
116117
}
117118

smithy-trait-codegen/src/test/java/software/amazon/smithy/traitcodegen/TraitCodegenPluginTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828

2929

3030
public class TraitCodegenPluginTest {
31-
private static final int EXPECTED_NUMBER_OF_FILES = 56;
31+
private static final int EXPECTED_NUMBER_OF_FILES = 58;
3232

3333
private MockManifest manifest;
3434
private Model model;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
$version: "2.0"
2+
3+
namespace test.smithy.traitcodegen.lists
4+
5+
@trait
6+
list DocumentListTrait {
7+
member: Document
8+
}

smithy-trait-codegen/src/test/resources/META-INF/smithy/manifest

+2
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,10 @@ ignored.smithy
1313
lists/number-list-trait.smithy
1414
lists/string-list-trait.smithy
1515
lists/struct-list-trait.smithy
16+
lists/document-list-trait.smithy
1617
maps/string-string-map-trait.smithy
1718
maps/string-to-struct-map-trait.smithy
19+
maps/string-to-document-map-trait.smithy
1820
mixins/struct-with-mixin-member.smithy
1921
mixins/struct-with-only-mixin-member.smithy
2022
names/snake-case-structure.smithy
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
$version: "2.0"
2+
3+
namespace test.smithy.traitcodegen.maps
4+
5+
@trait
6+
map StringDocumentMap {
7+
key: String
8+
value: Document
9+
}

0 commit comments

Comments
 (0)