27
27
import software .amazon .smithy .codegen .core .Symbol ;
28
28
import software .amazon .smithy .codegen .core .SymbolProvider ;
29
29
import software .amazon .smithy .codegen .core .SymbolReference ;
30
+ import software .amazon .smithy .model .Model ;
30
31
import software .amazon .smithy .model .knowledge .HttpBinding ;
31
32
import software .amazon .smithy .model .knowledge .HttpBindingIndex ;
32
33
import software .amazon .smithy .model .knowledge .TopDownIndex ;
41
42
import software .amazon .smithy .model .shapes .NumberShape ;
42
43
import software .amazon .smithy .model .shapes .OperationShape ;
43
44
import software .amazon .smithy .model .shapes .Shape ;
44
- import software .amazon .smithy .model .shapes .ShapeIndex ;
45
45
import software .amazon .smithy .model .shapes .StringShape ;
46
46
import software .amazon .smithy .model .shapes .StructureShape ;
47
47
import software .amazon .smithy .model .shapes .TimestampShape ;
@@ -200,7 +200,7 @@ private void generateOperationSerializer(
200
200
// Track all shapes bound to the document so their serializers may be generated.
201
201
documentBindings .stream ()
202
202
.map (HttpBinding ::getMember )
203
- .map (member -> context .getModel ().getShapeIndex (). getShape ( member .getTarget ()). get ( ))
203
+ .map (member -> context .getModel ().expectShape ( member .getTarget ()))
204
204
.forEach (serializingDocumentShapes ::add );
205
205
writer .write ("body: body," );
206
206
}
@@ -224,11 +224,11 @@ private List<HttpBinding> writeRequestLabels(
224
224
List <HttpBinding > labelBindings = bindingIndex .getRequestBindings (operation , Location .LABEL );
225
225
226
226
if (!labelBindings .isEmpty ()) {
227
- ShapeIndex index = context .getModel (). getShapeIndex ();
227
+ Model model = context .getModel ();
228
228
writer .write ("let resolvedPath = $S;" , trait .getUri ());
229
229
for (HttpBinding binding : labelBindings ) {
230
230
String memberName = symbolProvider .toMemberName (binding .getMember ());
231
- Shape target = index . getShape (binding .getMember ().getTarget ()). get ( );
231
+ Shape target = model . expectShape (binding .getMember ().getTarget ());
232
232
String labelValue = getInputValue (context , binding .getLocation (), "input." + memberName ,
233
233
binding .getMember (), target );
234
234
@@ -258,12 +258,12 @@ private List<HttpBinding> writeRequestQueryString(
258
258
List <HttpBinding > queryBindings = bindingIndex .getRequestBindings (operation , Location .QUERY );
259
259
260
260
if (!queryBindings .isEmpty ()) {
261
- ShapeIndex index = context .getModel (). getShapeIndex ();
261
+ Model model = context .getModel ();
262
262
writer .write ("const query: any = {};" );
263
263
for (HttpBinding binding : queryBindings ) {
264
264
String memberName = symbolProvider .toMemberName (binding .getMember ());
265
265
writer .openBlock ("if (input.$L !== undefined) {" , "}" , memberName , () -> {
266
- Shape target = index . getShape (binding .getMember ().getTarget ()). get ( );
266
+ Shape target = model . expectShape (binding .getMember ().getTarget ());
267
267
String queryValue = getInputValue (context , binding .getLocation (), "input." + memberName ,
268
268
binding .getMember (), target );
269
269
writer .write ("query['$L'] = $L;" , binding .getLocationName (), queryValue );
@@ -289,11 +289,11 @@ private void writeHeaders(
289
289
writeDefaultHeaders (context , operation );
290
290
291
291
operation .getInput ().ifPresent (outputId -> {
292
- ShapeIndex index = context .getModel (). getShapeIndex ();
292
+ Model model = context .getModel ();
293
293
for (HttpBinding binding : bindingIndex .getRequestBindings (operation , Location .HEADER )) {
294
294
String memberName = symbolProvider .toMemberName (binding .getMember ());
295
295
writer .openBlock ("if (input.$L !== undefined) {" , "}" , memberName , () -> {
296
- Shape target = index . getShape (binding .getMember ().getTarget ()). get ( );
296
+ Shape target = model . expectShape (binding .getMember ().getTarget ());
297
297
String headerValue = getInputValue (context , binding .getLocation (), "input." + memberName ,
298
298
binding .getMember (), target );
299
299
writer .write ("headers[$S] = $L;" , binding .getLocationName (), headerValue );
@@ -304,8 +304,8 @@ private void writeHeaders(
304
304
for (HttpBinding binding : bindingIndex .getRequestBindings (operation , Location .PREFIX_HEADERS )) {
305
305
String memberName = symbolProvider .toMemberName (binding .getMember ());
306
306
writer .openBlock ("if (input.$L !== undefined) {" , "}" , memberName , () -> {
307
- MapShape prefixMap = index . getShape (binding .getMember ().getTarget ()). get ( ).asMapShape ().get ();
308
- Shape target = index . getShape (prefixMap .getValue ().getTarget ()). get ( );
307
+ MapShape prefixMap = model . expectShape (binding .getMember ().getTarget ()).asMapShape ().get ();
308
+ Shape target = model . expectShape (prefixMap .getValue ().getTarget ());
309
309
// Iterate through each entry in the member.
310
310
writer .openBlock ("Object.keys(input.$L).forEach(suffix => {" , "});" , memberName , () -> {
311
311
// Use a ! since we already validated the input member is defined above.
@@ -344,7 +344,7 @@ private List<HttpBinding> writeRequestBody(
344
344
// Write the default `body` property.
345
345
writer .write ("let body: any = {};" );
346
346
writer .openBlock ("if (input.$L !== undefined) {" , "}" , memberName , () -> {
347
- Shape target = context .getModel ().getShapeIndex (). getShape ( binding .getMember ().getTarget ()). get ( );
347
+ Shape target = context .getModel ().expectShape ( binding .getMember ().getTarget ());
348
348
writer .write ("body = $L;" , getInputValue (
349
349
context , Location .PAYLOAD , "input." + memberName , binding .getMember (), target ));
350
350
});
@@ -527,7 +527,7 @@ private void generateOperationDeserializer(
527
527
Symbol symbol = symbolProvider .toSymbol (operation );
528
528
SymbolReference responseType = getApplicationProtocol ().getResponseType ();
529
529
HttpBindingIndex bindingIndex = context .getModel ().getKnowledge (HttpBindingIndex .class );
530
- ShapeIndex shapeIndex = context .getModel (). getShapeIndex ();
530
+ Model model = context .getModel ();
531
531
TypeScriptWriter writer = context .getWriter ();
532
532
533
533
// Ensure that the response type is imported.
@@ -558,7 +558,7 @@ private void generateOperationDeserializer(
558
558
operation .getOutput ().ifPresent (outputId -> {
559
559
writer .write ("__type: $S," , outputId .getName ());
560
560
// Set all the members to undefined to meet type constraints.
561
- StructureShape target = shapeIndex . getShape (outputId ). get ( ).asStructureShape ().get ();
561
+ StructureShape target = model . expectShape (outputId ).asStructureShape ().get ();
562
562
new TreeMap <>(target .getAllMembers ())
563
563
.forEach ((memberName , memberShape ) -> writer .write ("$L: undefined," , memberName ));
564
564
});
@@ -567,7 +567,7 @@ private void generateOperationDeserializer(
567
567
List <HttpBinding > documentBindings = readResponseBody (context , operation , bindingIndex );
568
568
// Track all shapes bound to the document so their deserializers may be generated.
569
569
documentBindings .forEach (binding -> {
570
- Shape target = shapeIndex . getShape (binding .getMember ().getTarget ()). get ( );
570
+ Shape target = model . expectShape (binding .getMember ().getTarget ());
571
571
deserializingDocumentShapes .add (target );
572
572
});
573
573
writer .write ("return Promise.resolve(contents);" );
@@ -584,7 +584,7 @@ private void generateErrorDeserializer(GenerationContext context, StructureShape
584
584
TypeScriptWriter writer = context .getWriter ();
585
585
SymbolProvider symbolProvider = context .getSymbolProvider ();
586
586
HttpBindingIndex bindingIndex = context .getModel ().getKnowledge (HttpBindingIndex .class );
587
- ShapeIndex shapeIndex = context .getModel (). getShapeIndex ();
587
+ Model model = context .getModel ();
588
588
Symbol errorSymbol = symbolProvider .toSymbol (error );
589
589
String errorDeserMethodName = ProtocolGenerator .getDeserFunctionName (errorSymbol ,
590
590
context .getProtocolName ()) + "Response" ;
@@ -608,7 +608,7 @@ private void generateErrorDeserializer(GenerationContext context, StructureShape
608
608
List <HttpBinding > documentBindings = readResponseBody (context , error , bindingIndex );
609
609
// Track all shapes bound to the document so their deserializers may be generated.
610
610
documentBindings .forEach (binding -> {
611
- Shape target = shapeIndex . getShape (binding .getMember ().getTarget ()). get ( );
611
+ Shape target = model . expectShape (binding .getMember ().getTarget ());
612
612
deserializingDocumentShapes .add (target );
613
613
});
614
614
writer .write ("return contents;" );
@@ -625,11 +625,11 @@ private void readHeaders(
625
625
TypeScriptWriter writer = context .getWriter ();
626
626
SymbolProvider symbolProvider = context .getSymbolProvider ();
627
627
628
- ShapeIndex index = context .getModel (). getShapeIndex ();
628
+ Model model = context .getModel ();
629
629
for (HttpBinding binding : bindingIndex .getResponseBindings (operationOrError , Location .HEADER )) {
630
630
String memberName = symbolProvider .toMemberName (binding .getMember ());
631
631
writer .openBlock ("if (output.headers[$S] !== undefined) {" , "}" , binding .getLocationName (), () -> {
632
- Shape target = index . getShape (binding .getMember ().getTarget ()). get ( );
632
+ Shape target = model . expectShape (binding .getMember ().getTarget ());
633
633
String headerValue = getOutputValue (context , binding .getLocation (),
634
634
"output.headers['" + binding .getLocationName () + "']" , binding .getMember (), target );
635
635
writer .write ("contents.$L = $L;" , memberName , headerValue );
@@ -646,8 +646,8 @@ private void readHeaders(
646
646
// Generate a single block for each group of prefix headers.
647
647
writer .openBlock ("if (header.startsWith($S)) {" , "}" , binding .getLocationName (), () -> {
648
648
String memberName = symbolProvider .toMemberName (binding .getMember ());
649
- MapShape prefixMap = index . getShape (binding .getMember ().getTarget ()). get ( ).asMapShape ().get ();
650
- Shape target = index . getShape (prefixMap .getValue ().getTarget ()). get ( );
649
+ MapShape prefixMap = model . expectShape (binding .getMember ().getTarget ()).asMapShape ().get ();
650
+ Shape target = model . expectShape (prefixMap .getValue ().getTarget ());
651
651
String headerValue = getOutputValue (context , binding .getLocation (),
652
652
"output.headers[header]" , binding .getMember (), target );
653
653
@@ -682,7 +682,7 @@ private List<HttpBinding> readResponseBody(
682
682
if (!payloadBindings .isEmpty ()) {
683
683
// There can only be one payload binding.
684
684
HttpBinding binding = payloadBindings .get (0 );
685
- Shape target = context .getModel ().getShapeIndex (). getShape ( binding .getMember ().getTarget ()). get ( );
685
+ Shape target = context .getModel ().expectShape ( binding .getMember ().getTarget ());
686
686
writer .write ("contents.$L = $L;" , binding .getMemberName (), getOutputValue (context ,
687
687
Location .PAYLOAD , "data" , binding .getMember (), target ));
688
688
return payloadBindings ;
0 commit comments