Skip to content

Commit 9d19e32

Browse files
committed
Use Model instead of deprecated ShapeIndex
1 parent 038bc6e commit 9d19e32

File tree

9 files changed

+38
-41
lines changed

9 files changed

+38
-41
lines changed

smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/CodegenVisitor.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@
3636
import software.amazon.smithy.model.shapes.OperationShape;
3737
import software.amazon.smithy.model.shapes.ServiceShape;
3838
import software.amazon.smithy.model.shapes.Shape;
39-
import software.amazon.smithy.model.shapes.ShapeIndex;
4039
import software.amazon.smithy.model.shapes.ShapeVisitor;
4140
import software.amazon.smithy.model.shapes.StringShape;
4241
import software.amazon.smithy.model.shapes.StructureShape;
@@ -64,7 +63,7 @@ class CodegenVisitor extends ShapeVisitor.Default<Void> {
6463
private final ServiceShape service;
6564
private final FileManifest fileManifest;
6665
private final SymbolProvider symbolProvider;
67-
private final ShapeIndex nonTraits;
66+
private final Model nonTraits;
6867
private final TypeScriptDelegator writers;
6968
private final List<TypeScriptIntegration> integrations = new ArrayList<>();
7069
private final List<RuntimeClientPlugin> runtimePlugins = new ArrayList<>();
@@ -73,7 +72,7 @@ class CodegenVisitor extends ShapeVisitor.Default<Void> {
7372

7473
CodegenVisitor(PluginContext context) {
7574
settings = TypeScriptSettings.from(context.getModel(), context.getSettings());
76-
nonTraits = context.getNonTraitShapes();
75+
nonTraits = context.getModelWithoutTraitShapes();
7776
model = context.getModel();
7877
service = settings.getService(model);
7978
fileManifest = context.getFileManifest();

smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/SymbolVisitor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ final class SymbolVisitor implements SymbolProvider, ShapeVisitor<Symbol> {
9191

9292
// Get each structure that's used as output or errors.
9393
OperationIndex operationIndex = model.getKnowledge(OperationIndex.class);
94-
model.getShapeIndex().shapes(OperationShape.class).forEach(operationShape -> {
94+
model.shapes(OperationShape.class).forEach(operationShape -> {
9595
operationIndex.getOutput(operationShape).ifPresent(outputShapes::add);
9696
outputShapes.addAll(operationIndex.getErrors(operationShape));
9797
});
@@ -297,7 +297,7 @@ public Symbol unionShape(UnionShape shape) {
297297

298298
@Override
299299
public Symbol memberShape(MemberShape shape) {
300-
Shape targetShape = model.getShapeIndex().getShape(shape.getTarget())
300+
Shape targetShape = model.getShape(shape.getTarget())
301301
.orElseThrow(() -> new CodegenException("Shape not found: " + shape.getTarget()));
302302
Symbol targetSymbol = targetShape.accept(this);
303303

smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/TypeScriptSettings.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ public static TypeScriptSettings from(Model model, ObjectNode config) {
8484

8585
// TODO: this seems reusable across generators.
8686
private static ShapeId inferService(Model model) {
87-
List<ShapeId> services = model.getShapeIndex()
87+
List<ShapeId> services = model
8888
.shapes(ServiceShape.class)
8989
.map(Shape::getId)
9090
.sorted()
@@ -205,7 +205,7 @@ public void setPluginSettings(ObjectNode pluginSettings) {
205205
* @throws CodegenException if the service is invalid or not found.
206206
*/
207207
public ServiceShape getService(Model model) {
208-
return model.getShapeIndex()
208+
return model
209209
.getShape(getService())
210210
.orElseThrow(() -> new CodegenException("Service shape not found: " + getService()))
211211
.asServiceShape()

smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/TypeScriptWriter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ boolean writeShapeDocs(Shape shape) {
210210
* @return Returns true if docs were written.
211211
*/
212212
boolean writeMemberDocs(Model model, MemberShape member) {
213-
return member.getMemberTrait(model.getShapeIndex(), DocumentationTrait.class)
213+
return member.getMemberTrait(model, DocumentationTrait.class)
214214
.map(DocumentationTrait::getValue)
215215
.map(docs -> {
216216
writeDocs(docs);

smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/HttpBindingProtocolGenerator.java

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import software.amazon.smithy.codegen.core.Symbol;
2828
import software.amazon.smithy.codegen.core.SymbolProvider;
2929
import software.amazon.smithy.codegen.core.SymbolReference;
30+
import software.amazon.smithy.model.Model;
3031
import software.amazon.smithy.model.knowledge.HttpBinding;
3132
import software.amazon.smithy.model.knowledge.HttpBindingIndex;
3233
import software.amazon.smithy.model.knowledge.TopDownIndex;
@@ -41,7 +42,6 @@
4142
import software.amazon.smithy.model.shapes.NumberShape;
4243
import software.amazon.smithy.model.shapes.OperationShape;
4344
import software.amazon.smithy.model.shapes.Shape;
44-
import software.amazon.smithy.model.shapes.ShapeIndex;
4545
import software.amazon.smithy.model.shapes.StringShape;
4646
import software.amazon.smithy.model.shapes.StructureShape;
4747
import software.amazon.smithy.model.shapes.TimestampShape;
@@ -200,7 +200,7 @@ private void generateOperationSerializer(
200200
// Track all shapes bound to the document so their serializers may be generated.
201201
documentBindings.stream()
202202
.map(HttpBinding::getMember)
203-
.map(member -> context.getModel().getShapeIndex().getShape(member.getTarget()).get())
203+
.map(member -> context.getModel().expectShape(member.getTarget()))
204204
.forEach(serializingDocumentShapes::add);
205205
writer.write("body: body,");
206206
}
@@ -224,11 +224,11 @@ private List<HttpBinding> writeRequestLabels(
224224
List<HttpBinding> labelBindings = bindingIndex.getRequestBindings(operation, Location.LABEL);
225225

226226
if (!labelBindings.isEmpty()) {
227-
ShapeIndex index = context.getModel().getShapeIndex();
227+
Model model = context.getModel();
228228
writer.write("let resolvedPath = $S;", trait.getUri());
229229
for (HttpBinding binding : labelBindings) {
230230
String memberName = symbolProvider.toMemberName(binding.getMember());
231-
Shape target = index.getShape(binding.getMember().getTarget()).get();
231+
Shape target = model.expectShape(binding.getMember().getTarget());
232232
String labelValue = getInputValue(context, binding.getLocation(), "input." + memberName,
233233
binding.getMember(), target);
234234

@@ -258,12 +258,12 @@ private List<HttpBinding> writeRequestQueryString(
258258
List<HttpBinding> queryBindings = bindingIndex.getRequestBindings(operation, Location.QUERY);
259259

260260
if (!queryBindings.isEmpty()) {
261-
ShapeIndex index = context.getModel().getShapeIndex();
261+
Model model = context.getModel();
262262
writer.write("const query: any = {};");
263263
for (HttpBinding binding : queryBindings) {
264264
String memberName = symbolProvider.toMemberName(binding.getMember());
265265
writer.openBlock("if (input.$L !== undefined) {", "}", memberName, () -> {
266-
Shape target = index.getShape(binding.getMember().getTarget()).get();
266+
Shape target = model.expectShape(binding.getMember().getTarget());
267267
String queryValue = getInputValue(context, binding.getLocation(), "input." + memberName,
268268
binding.getMember(), target);
269269
writer.write("query['$L'] = $L;", binding.getLocationName(), queryValue);
@@ -289,11 +289,11 @@ private void writeHeaders(
289289
writeDefaultHeaders(context, operation);
290290

291291
operation.getInput().ifPresent(outputId -> {
292-
ShapeIndex index = context.getModel().getShapeIndex();
292+
Model model = context.getModel();
293293
for (HttpBinding binding : bindingIndex.getRequestBindings(operation, Location.HEADER)) {
294294
String memberName = symbolProvider.toMemberName(binding.getMember());
295295
writer.openBlock("if (input.$L !== undefined) {", "}", memberName, () -> {
296-
Shape target = index.getShape(binding.getMember().getTarget()).get();
296+
Shape target = model.expectShape(binding.getMember().getTarget());
297297
String headerValue = getInputValue(context, binding.getLocation(), "input." + memberName,
298298
binding.getMember(), target);
299299
writer.write("headers[$S] = $L;", binding.getLocationName(), headerValue);
@@ -304,8 +304,8 @@ private void writeHeaders(
304304
for (HttpBinding binding : bindingIndex.getRequestBindings(operation, Location.PREFIX_HEADERS)) {
305305
String memberName = symbolProvider.toMemberName(binding.getMember());
306306
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());
309309
// Iterate through each entry in the member.
310310
writer.openBlock("Object.keys(input.$L).forEach(suffix => {", "});", memberName, () -> {
311311
// Use a ! since we already validated the input member is defined above.
@@ -344,7 +344,7 @@ private List<HttpBinding> writeRequestBody(
344344
// Write the default `body` property.
345345
writer.write("let body: any = {};");
346346
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());
348348
writer.write("body = $L;", getInputValue(
349349
context, Location.PAYLOAD, "input." + memberName, binding.getMember(), target));
350350
});
@@ -527,7 +527,7 @@ private void generateOperationDeserializer(
527527
Symbol symbol = symbolProvider.toSymbol(operation);
528528
SymbolReference responseType = getApplicationProtocol().getResponseType();
529529
HttpBindingIndex bindingIndex = context.getModel().getKnowledge(HttpBindingIndex.class);
530-
ShapeIndex shapeIndex = context.getModel().getShapeIndex();
530+
Model model = context.getModel();
531531
TypeScriptWriter writer = context.getWriter();
532532

533533
// Ensure that the response type is imported.
@@ -558,7 +558,7 @@ private void generateOperationDeserializer(
558558
operation.getOutput().ifPresent(outputId -> {
559559
writer.write("__type: $S,", outputId.getName());
560560
// 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();
562562
new TreeMap<>(target.getAllMembers())
563563
.forEach((memberName, memberShape) -> writer.write("$L: undefined,", memberName));
564564
});
@@ -567,7 +567,7 @@ private void generateOperationDeserializer(
567567
List<HttpBinding> documentBindings = readResponseBody(context, operation, bindingIndex);
568568
// Track all shapes bound to the document so their deserializers may be generated.
569569
documentBindings.forEach(binding -> {
570-
Shape target = shapeIndex.getShape(binding.getMember().getTarget()).get();
570+
Shape target = model.expectShape(binding.getMember().getTarget());
571571
deserializingDocumentShapes.add(target);
572572
});
573573
writer.write("return Promise.resolve(contents);");
@@ -584,7 +584,7 @@ private void generateErrorDeserializer(GenerationContext context, StructureShape
584584
TypeScriptWriter writer = context.getWriter();
585585
SymbolProvider symbolProvider = context.getSymbolProvider();
586586
HttpBindingIndex bindingIndex = context.getModel().getKnowledge(HttpBindingIndex.class);
587-
ShapeIndex shapeIndex = context.getModel().getShapeIndex();
587+
Model model = context.getModel();
588588
Symbol errorSymbol = symbolProvider.toSymbol(error);
589589
String errorDeserMethodName = ProtocolGenerator.getDeserFunctionName(errorSymbol,
590590
context.getProtocolName()) + "Response";
@@ -608,7 +608,7 @@ private void generateErrorDeserializer(GenerationContext context, StructureShape
608608
List<HttpBinding> documentBindings = readResponseBody(context, error, bindingIndex);
609609
// Track all shapes bound to the document so their deserializers may be generated.
610610
documentBindings.forEach(binding -> {
611-
Shape target = shapeIndex.getShape(binding.getMember().getTarget()).get();
611+
Shape target = model.expectShape(binding.getMember().getTarget());
612612
deserializingDocumentShapes.add(target);
613613
});
614614
writer.write("return contents;");
@@ -625,11 +625,11 @@ private void readHeaders(
625625
TypeScriptWriter writer = context.getWriter();
626626
SymbolProvider symbolProvider = context.getSymbolProvider();
627627

628-
ShapeIndex index = context.getModel().getShapeIndex();
628+
Model model = context.getModel();
629629
for (HttpBinding binding : bindingIndex.getResponseBindings(operationOrError, Location.HEADER)) {
630630
String memberName = symbolProvider.toMemberName(binding.getMember());
631631
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());
633633
String headerValue = getOutputValue(context, binding.getLocation(),
634634
"output.headers['" + binding.getLocationName() + "']", binding.getMember(), target);
635635
writer.write("contents.$L = $L;", memberName, headerValue);
@@ -646,8 +646,8 @@ private void readHeaders(
646646
// Generate a single block for each group of prefix headers.
647647
writer.openBlock("if (header.startsWith($S)) {", "}", binding.getLocationName(), () -> {
648648
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());
651651
String headerValue = getOutputValue(context, binding.getLocation(),
652652
"output.headers[header]", binding.getMember(), target);
653653

@@ -682,7 +682,7 @@ private List<HttpBinding> readResponseBody(
682682
if (!payloadBindings.isEmpty()) {
683683
// There can only be one payload binding.
684684
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());
686686
writer.write("contents.$L = $L;", binding.getMemberName(), getOutputValue(context,
687687
Location.PAYLOAD, "data", binding.getMember(), target));
688688
return payloadBindings;

smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/HttpProtocolGeneratorUtils.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,8 +152,7 @@ static Set<StructureShape> generateErrorDispatcher(
152152
writer.openBlock("switch (errorCode) {", "}", () -> {
153153
// Generate the case statement for each error, invoking the specific deserializer.
154154
new TreeSet<>(operation.getErrors()).forEach(errorId -> {
155-
StructureShape error = context.getModel().getShapeIndex().getShape(errorId)
156-
.get().asStructureShape().get();
155+
StructureShape error = context.getModel().expectShape(errorId).asStructureShape().get();
157156
// Track errors bound to the operation so their deserializers may be generated.
158157
errorShapes.add(error);
159158
Symbol errorSymbol = symbolProvider.toSymbol(error);

smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/HttpRpcProtocolGenerator.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -151,8 +151,8 @@ private void writeRequestHeaders(GenerationContext context, OperationShape opera
151151
private boolean writeRequestBody(GenerationContext context, OperationShape operation) {
152152
if (operation.getInput().isPresent()) {
153153
// If there's an input present, we know it's a structure.
154-
StructureShape inputShape = context.getModel().getShapeIndex().getShape(operation.getInput().get())
155-
.get().asStructureShape().get();
154+
StructureShape inputShape = context.getModel().expectShape(operation.getInput().get())
155+
.asStructureShape().get();
156156

157157
// Track input shapes so their serializers may be generated.
158158
serializingDocumentShapes.add(inputShape);
@@ -295,8 +295,7 @@ private void generateErrorDeserializer(GenerationContext context, StructureShape
295295
private void readResponseBody(GenerationContext context, OperationShape operation) {
296296
operation.getOutput().ifPresent(outputId -> {
297297
// If there's an output present, we know it's a structure.
298-
StructureShape outputShape = context.getModel().getShapeIndex().getShape(outputId)
299-
.get().asStructureShape().get();
298+
StructureShape outputShape = context.getModel().expectShape(outputId).asStructureShape().get();
300299

301300
// Track output shapes so their deserializers may be generated.
302301
deserializingDocumentShapes.add(outputShape);

smithy-typescript-codegen/src/test/java/software/amazon/smithy/typescript/codegen/SymbolProviderTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,8 @@ public void outputStructuresAreMetadataBearers() {
109109
.assemble()
110110
.unwrap();
111111

112-
Shape input = model.getShapeIndex().getShape(ShapeId.from("smithy.example#GetFooInput")).get();
113-
Shape output = model.getShapeIndex().getShape(ShapeId.from("smithy.example#GetFooOutput")).get();
112+
Shape input = model.expectShape(ShapeId.from("smithy.example#GetFooInput"));
113+
Shape output = model.expectShape(ShapeId.from("smithy.example#GetFooOutput"));
114114
SymbolProvider provider = TypeScriptCodegenPlugin.createSymbolProvider(model);
115115
Symbol inputSymbol = provider.toSymbol(input);
116116
Symbol outputSymbol = provider.toSymbol(output);
@@ -136,7 +136,7 @@ public void createsCommandModules() {
136136
.assemble()
137137
.unwrap();
138138

139-
Shape command = model.getShapeIndex().getShape(ShapeId.from("smithy.example#GetFoo")).get();
139+
Shape command = model.expectShape(ShapeId.from("smithy.example#GetFoo"));
140140
SymbolProvider provider = TypeScriptCodegenPlugin.createSymbolProvider(model);
141141
Symbol commandSymbol = provider.toSymbol(command);
142142

0 commit comments

Comments
 (0)