|
15 | 15 |
|
16 | 16 | package software.amazon.smithy.aws.typescript.codegen; |
17 | 17 |
|
| 18 | +import java.util.Collection; |
| 19 | +import java.util.Map; |
18 | 20 | import java.util.Set; |
| 21 | +import java.util.TreeSet; |
19 | 22 | import software.amazon.smithy.aws.traits.ServiceTrait; |
20 | 23 | import software.amazon.smithy.aws.traits.protocols.AwsQueryCompatibleTrait; |
21 | 24 | import software.amazon.smithy.aws.typescript.codegen.protocols.DeserializerElisionDenyList; |
@@ -56,6 +59,36 @@ abstract class JsonRpcProtocolGenerator extends HttpRpcProtocolGenerator { |
56 | 59 | super(true); |
57 | 60 | } |
58 | 61 |
|
| 62 | + @Override |
| 63 | + public void generateSharedComponents(GenerationContext context) { |
| 64 | + super.generateSharedComponents(context); |
| 65 | + AwsProtocolUtils.generateJsonParseBody(context); |
| 66 | + AwsProtocolUtils.generateJsonParseErrorBody(context); |
| 67 | + AwsProtocolUtils.addItempotencyAutofillImport(context); |
| 68 | + |
| 69 | + TypeScriptWriter writer = context.getWriter(); |
| 70 | + writer.addUseImports(getApplicationProtocol().getResponseType()); |
| 71 | + writer.addDependency(AwsDependency.AWS_SDK_CORE); |
| 72 | + writer.addImport("loadRestJsonErrorCode", null, AwsDependency.AWS_SDK_CORE); |
| 73 | + |
| 74 | + if (context.getService().hasTrait(AwsQueryCompatibleTrait.class)) { |
| 75 | + AwsProtocolUtils.generateJsonParseBodyWithQueryHeader(context); |
| 76 | + } |
| 77 | + writer.write( |
| 78 | + context.getStringStore().flushVariableDeclarationCode() |
| 79 | + ); |
| 80 | + } |
| 81 | + |
| 82 | + @Override |
| 83 | + public void generateProtocolTests(GenerationContext context) { |
| 84 | + AwsProtocolUtils.generateProtocolTests(this, context); |
| 85 | + } |
| 86 | + |
| 87 | + @Override |
| 88 | + public Map<String, TreeSet<String>> getErrorAliases(GenerationContext context, Collection<OperationShape> operations) { |
| 89 | + return AwsProtocolUtils.getErrorAliases(context, operations); |
| 90 | + } |
| 91 | + |
59 | 92 | @Override |
60 | 93 | protected String getOperationPath(GenerationContext context, OperationShape operationShape) { |
61 | 94 | return "/"; |
@@ -97,26 +130,6 @@ protected void generateDocumentBodyShapeDeserializers(GenerationContext context, |
97 | 130 | ); |
98 | 131 | } |
99 | 132 |
|
100 | | - @Override |
101 | | - public void generateSharedComponents(GenerationContext context) { |
102 | | - super.generateSharedComponents(context); |
103 | | - AwsProtocolUtils.generateJsonParseBody(context); |
104 | | - AwsProtocolUtils.generateJsonParseErrorBody(context); |
105 | | - AwsProtocolUtils.addItempotencyAutofillImport(context); |
106 | | - |
107 | | - TypeScriptWriter writer = context.getWriter(); |
108 | | - writer.addUseImports(getApplicationProtocol().getResponseType()); |
109 | | - writer.addDependency(AwsDependency.AWS_SDK_CORE); |
110 | | - writer.addImport("loadRestJsonErrorCode", null, AwsDependency.AWS_SDK_CORE); |
111 | | - |
112 | | - if (context.getService().hasTrait(AwsQueryCompatibleTrait.class)) { |
113 | | - AwsProtocolUtils.generateJsonParseBodyWithQueryHeader(context); |
114 | | - } |
115 | | - writer.write( |
116 | | - context.getStringStore().flushVariableDeclarationCode() |
117 | | - ); |
118 | | - } |
119 | | - |
120 | 133 | @Override |
121 | 134 | protected void writeRequestHeaders(GenerationContext context, OperationShape operation) { |
122 | 135 | TypeScriptWriter writer = context.getWriter(); |
@@ -164,10 +177,6 @@ protected void serializeInputDocument( |
164 | 177 | writer.write("body = JSON.stringify($L);", inputStructure.accept(getMemberSerVisitor(context, "input"))); |
165 | 178 | } |
166 | 179 |
|
167 | | - private DocumentMemberSerVisitor getMemberSerVisitor(GenerationContext context, String dataSource) { |
168 | | - return new JsonMemberSerVisitor(context, dataSource, getDocumentTimestampFormat()); |
169 | | - } |
170 | | - |
171 | 180 | @Override |
172 | 181 | protected boolean writeUndefinedInputBody(GenerationContext context, OperationShape operation) { |
173 | 182 | TypeScriptWriter writer = context.getWriter(); |
@@ -203,17 +212,16 @@ protected void deserializeOutputDocument( |
203 | 212 | writer.write("contents = $L;", outputStructure.accept(getMemberDeserVisitor(context, "data"))); |
204 | 213 | } |
205 | 214 |
|
206 | | - private ShapeVisitor<String> getMemberDeserVisitor(GenerationContext context, String dataSource) { |
207 | | - return new JsonMemberDeserVisitor(context, dataSource, getDocumentTimestampFormat()); |
| 215 | + @Override |
| 216 | + protected boolean enableSerdeElision() { |
| 217 | + return true; |
208 | 218 | } |
209 | 219 |
|
210 | | - @Override |
211 | | - public void generateProtocolTests(GenerationContext context) { |
212 | | - AwsProtocolUtils.generateProtocolTests(this, context); |
| 220 | + private DocumentMemberSerVisitor getMemberSerVisitor(GenerationContext context, String dataSource) { |
| 221 | + return new JsonMemberSerVisitor(context, dataSource, getDocumentTimestampFormat()); |
213 | 222 | } |
214 | 223 |
|
215 | | - @Override |
216 | | - protected boolean enableSerdeElision() { |
217 | | - return true; |
| 224 | + private ShapeVisitor<String> getMemberDeserVisitor(GenerationContext context, String dataSource) { |
| 225 | + return new JsonMemberDeserVisitor(context, dataSource, getDocumentTimestampFormat()); |
218 | 226 | } |
219 | 227 | } |
0 commit comments