Skip to content

Commit 40d115a

Browse files
chore: don't pass in an isInput bool
1 parent 60f42b9 commit 40d115a

File tree

2 files changed

+223
-55
lines changed

2 files changed

+223
-55
lines changed

codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AwsRestXml.java

Lines changed: 86 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -138,19 +138,40 @@ private boolean usesWrappedErrorResponse(GenerationContext context) {
138138
}
139139

140140
@Override
141-
protected void writeDefaultHeaders(GenerationContext context, Shape operationOrError, boolean isInput) {
142-
super.writeDefaultHeaders(context, operationOrError, isInput);
143-
if (isInput && operationOrError.isOperationShape()) {
144-
AwsProtocolUtils.generateUnsignedPayloadSigV4Header(context, operationOrError.asOperationShape().get());
145-
}
141+
protected void writeDefaultInputHeaders(GenerationContext context, OperationShape operation) {
142+
AwsProtocolUtils.generateUnsignedPayloadSigV4Header(context, operation);
143+
}
144+
145+
@Override
146+
public void serializeInputDocumentBody(
147+
GenerationContext context,
148+
OperationShape operation,
149+
List<HttpBinding> documentBindings
150+
) {
151+
serializeDocumentBody(context, documentBindings);
146152
}
147153

148154
@Override
149-
protected void serializeDocumentBody(
155+
public void serializeOutputDocumentBody(
150156
GenerationContext context,
151157
OperationShape operation,
152-
List<HttpBinding> documentBindings,
153-
boolean isInput
158+
List<HttpBinding> documentBindings
159+
) {
160+
serializeDocumentBody(context, documentBindings);
161+
}
162+
163+
@Override
164+
public void serializeErrorDocumentBody(
165+
GenerationContext context,
166+
StructureShape error,
167+
List<HttpBinding> documentBindings
168+
) {
169+
serializeDocumentBody(context, documentBindings);
170+
}
171+
172+
private void serializeDocumentBody(
173+
GenerationContext context,
174+
List<HttpBinding> documentBindings
154175
) {
155176
// Short circuit when we have no bindings.
156177
TypeScriptWriter writer = context.getWriter();
@@ -198,11 +219,38 @@ protected void serializeDocumentBody(
198219
}
199220

200221
@Override
201-
protected void serializePayload(
222+
protected void serializeInputPayload(
223+
GenerationContext context,
224+
OperationShape operation,
225+
HttpBinding payloadBinding
226+
) {
227+
super.serializeInputPayload(context, operation, payloadBinding);
228+
serializePayload(context, payloadBinding);
229+
}
230+
231+
@Override
232+
protected void serializeOutputPayload(
202233
GenerationContext context,
203234
OperationShape operation,
204-
HttpBinding payloadBinding,
205-
boolean isInput
235+
HttpBinding payloadBinding
236+
) {
237+
super.serializeOutputPayload(context, operation, payloadBinding);
238+
serializePayload(context, payloadBinding);
239+
}
240+
241+
@Override
242+
protected void serializeErrorPayload(
243+
GenerationContext context,
244+
StructureShape error,
245+
HttpBinding payloadBinding
246+
) {
247+
super.serializeErrorPayload(context, error, payloadBinding);
248+
serializePayload(context, payloadBinding);
249+
}
250+
251+
private void serializePayload(
252+
GenerationContext context,
253+
HttpBinding payloadBinding
206254
) {
207255
SymbolProvider symbolProvider = context.getSymbolProvider();
208256
TypeScriptWriter writer = context.getWriter();
@@ -250,11 +298,35 @@ protected void writeErrorCodeParser(GenerationContext context) {
250298
}
251299

252300
@Override
301+
public void deserializeInputDocumentBody(
302+
GenerationContext context,
303+
OperationShape operation,
304+
List<HttpBinding> documentBindings
305+
) {
306+
deserializeDocumentBody(context, documentBindings);
307+
}
308+
309+
@Override
310+
public void deserializeOutputDocumentBody(
311+
GenerationContext context,
312+
OperationShape operation,
313+
List<HttpBinding> documentBindings
314+
) {
315+
deserializeDocumentBody(context, documentBindings);
316+
}
317+
318+
@Override
319+
public void deserializeErrorDocumentBody(
320+
GenerationContext context,
321+
StructureShape error,
322+
List<HttpBinding> documentBindings
323+
) {
324+
deserializeDocumentBody(context, documentBindings);
325+
}
326+
253327
protected void deserializeDocumentBody(
254328
GenerationContext context,
255-
Shape operationOrError,
256-
List<HttpBinding> documentBindings,
257-
boolean isInput
329+
List<HttpBinding> documentBindings
258330
) {
259331
SymbolProvider symbolProvider = context.getSymbolProvider();
260332
XmlShapeDeserVisitor shapeVisitor = new XmlShapeDeserVisitor(context);

codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/RestJsonProtocolGenerator.java

Lines changed: 137 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -87,36 +87,62 @@ public void generateSharedComponents(GenerationContext context) {
8787
}
8888

8989
@Override
90-
protected void writeDefaultHeaders(GenerationContext context, Shape operationOrError, boolean isInput) {
91-
super.writeDefaultHeaders(context, operationOrError, isInput);
92-
if (operationOrError.isOperationShape()) {
93-
OperationShape operation = operationOrError.asOperationShape().get();
94-
if (isInput) {
95-
AwsProtocolUtils.generateUnsignedPayloadSigV4Header(context, operation);
96-
}
97-
} else if (operationOrError.isStructureShape()) {
98-
context.getWriter().write("'x-amzn-errortype': $S,", operationOrError.getId().getName());
90+
protected void writeDefaultInputHeaders(GenerationContext context, OperationShape operation) {
91+
AwsProtocolUtils.generateUnsignedPayloadSigV4Header(context, operation);
92+
}
93+
94+
@Override
95+
protected void writeDefaultErrorHeaders(GenerationContext context, StructureShape error) {
96+
context.getWriter().write("'x-amzn-errortype': $S,", error.getId().getName());
97+
}
98+
99+
@Override
100+
public void serializeInputDocumentBody(
101+
GenerationContext context,
102+
OperationShape operation,
103+
List<HttpBinding> documentBindings
104+
) {
105+
// Short circuit when we have no bindings.
106+
TypeScriptWriter writer = context.getWriter();
107+
if (documentBindings.isEmpty()) {
108+
writer.write("body = \"\";");
109+
return;
99110
}
111+
serializeDocumentBody(context, documentBindings);
100112
}
101113

102114
@Override
103-
public void serializeDocumentBody(
115+
public void serializeOutputDocumentBody(
104116
GenerationContext context,
105117
OperationShape operation,
106-
List<HttpBinding> documentBindings,
107-
boolean isInput
118+
List<HttpBinding> documentBindings
108119
) {
109120
// Short circuit when we have no bindings.
110121
TypeScriptWriter writer = context.getWriter();
111122
if (documentBindings.isEmpty()) {
112-
if (isInput) {
113-
writer.write("body = \"\";");
114-
} else {
115-
writer.write("body = \"{}\";");
116-
}
123+
writer.write("body = \"{}\";");
117124
return;
118125
}
126+
serializeDocumentBody(context, documentBindings);
127+
}
119128

129+
@Override
130+
public void serializeErrorDocumentBody(
131+
GenerationContext context,
132+
StructureShape error,
133+
List<HttpBinding> documentBindings
134+
) {
135+
// Short circuit when we have no bindings.
136+
TypeScriptWriter writer = context.getWriter();
137+
if (documentBindings.isEmpty()) {
138+
writer.write("body = \"{}\";");
139+
return;
140+
}
141+
serializeDocumentBody(context, documentBindings);
142+
}
143+
144+
private void serializeDocumentBody(GenerationContext context, List<HttpBinding> documentBindings) {
145+
TypeScriptWriter writer = context.getWriter();
120146
SymbolProvider symbolProvider = context.getSymbolProvider();
121147

122148
writer.openBlock("body = JSON.stringify({", "});", () -> {
@@ -148,15 +174,39 @@ public void serializeDocumentBody(
148174
}
149175

150176
@Override
151-
protected void serializePayload(
177+
protected void serializeInputPayload(
178+
GenerationContext context,
179+
OperationShape operation,
180+
HttpBinding payloadBinding
181+
) {
182+
super.serializeInputPayload(context, operation, payloadBinding);
183+
serializePayload(context, payloadBinding);
184+
}
185+
186+
@Override
187+
protected void serializeOutputPayload(
152188
GenerationContext context,
153189
OperationShape operation,
154-
HttpBinding payloadBinding,
155-
boolean isInput
190+
HttpBinding payloadBinding
156191
) {
157-
// We want the standard serialization, but need to alter it to JSON.
158-
super.serializePayload(context, operation, payloadBinding, isInput);
192+
super.serializeOutputPayload(context, operation, payloadBinding);
193+
serializePayload(context, payloadBinding);
194+
}
159195

196+
@Override
197+
protected void serializeErrorPayload(
198+
GenerationContext context,
199+
StructureShape error,
200+
HttpBinding payloadBinding
201+
) {
202+
super.serializeErrorPayload(context, error, payloadBinding);
203+
serializePayload(context, payloadBinding);
204+
}
205+
206+
private void serializePayload(
207+
GenerationContext context,
208+
HttpBinding payloadBinding
209+
) {
160210
TypeScriptWriter writer = context.getWriter();
161211
MemberShape payloadMember = payloadBinding.getMember();
162212
Shape target = context.getModel().expectShape(payloadMember.getTarget());
@@ -179,17 +229,9 @@ private DocumentMemberSerVisitor getMemberSerVisitor(GenerationContext context,
179229
return new JsonMemberSerVisitor(context, dataSource, getDocumentTimestampFormat());
180230
}
181231

182-
@Override
183-
protected boolean shouldWriteDefaultBody(GenerationContext context, Shape operationOrError, boolean isInput) {
184-
if (!isInput) {
185-
// Operations that have any defined output shape should always send a default body.
186-
if (operationOrError.isOperationShape()) {
187-
OperationShape operation = operationOrError.asOperationShape().get();
188-
return operation.getOutput().isPresent();
189-
}
190-
return true;
191-
}
192-
return super.shouldWriteDefaultBody(context, operationOrError, isInput);
232+
protected boolean shouldWriteDefaultOutputBody(GenerationContext context, OperationShape operation) {
233+
// Operations that have any defined output shape should always send a default body.
234+
return operation.getOutput().isPresent();
193235
}
194236

195237
@Override
@@ -201,11 +243,35 @@ protected void writeErrorCodeParser(GenerationContext context) {
201243
}
202244

203245
@Override
204-
public void deserializeDocumentBody(
246+
public void deserializeInputDocumentBody(
247+
GenerationContext context,
248+
OperationShape operation,
249+
List<HttpBinding> documentBindings
250+
) {
251+
deserializeDocumentBody(context, documentBindings);
252+
}
253+
254+
@Override
255+
public void deserializeOutputDocumentBody(
256+
GenerationContext context,
257+
OperationShape operation,
258+
List<HttpBinding> documentBindings
259+
) {
260+
deserializeDocumentBody(context, documentBindings);
261+
}
262+
263+
@Override
264+
public void deserializeErrorDocumentBody(
205265
GenerationContext context,
206-
Shape operationOrError,
207-
List<HttpBinding> documentBindings,
208-
boolean isInput
266+
StructureShape error,
267+
List<HttpBinding> documentBindings
268+
) {
269+
deserializeDocumentBody(context, documentBindings);
270+
}
271+
272+
private void deserializeDocumentBody(
273+
GenerationContext context,
274+
List<HttpBinding> documentBindings
209275
) {
210276
TypeScriptWriter writer = context.getWriter();
211277
SymbolProvider symbolProvider = context.getSymbolProvider();
@@ -226,20 +292,50 @@ public void deserializeDocumentBody(
226292
}
227293
}
228294

229-
protected HttpBinding readResponsePayload(
295+
@Override
296+
protected HttpBinding deserializeInputPayload(
297+
GenerationContext context,
298+
OperationShape operation,
299+
HttpBinding payloadBinding
300+
) {
301+
HttpBinding returnedBinding = super.deserializeInputPayload(context, operation, payloadBinding);
302+
readPayload(context, payloadBinding);
303+
return returnedBinding;
304+
}
305+
306+
@Override
307+
protected HttpBinding deserializeOutputPayload(
308+
GenerationContext context,
309+
OperationShape operation,
310+
HttpBinding payloadBinding
311+
) {
312+
HttpBinding returnedBinding = super.deserializeOutputPayload(context, operation, payloadBinding);
313+
readPayload(context, payloadBinding);
314+
return returnedBinding;
315+
}
316+
317+
@Override
318+
protected HttpBinding deserializeErrorPayload(
319+
GenerationContext context,
320+
StructureShape error,
321+
HttpBinding payloadBinding
322+
) {
323+
HttpBinding returnedBinding = super.deserializeErrorPayload(context, error, payloadBinding);
324+
readPayload(context, payloadBinding);
325+
return returnedBinding;
326+
}
327+
328+
protected void readPayload(
230329
GenerationContext context,
231330
HttpBinding payloadBinding
232331
) {
233-
HttpBinding returnedBinding = super.readResponsePayload(context, payloadBinding);
234332
TypeScriptWriter writer = context.getWriter();
235333
Shape target = context.getModel().expectShape(payloadBinding.getMember().getTarget());
236334

237335
// Decode the body from a JSON string.
238336
if (target instanceof DocumentShape) {
239337
writer.write("contents.$L = JSON.parse(data);", payloadBinding.getMemberName());
240338
}
241-
242-
return returnedBinding;
243339
}
244340

245341
private DocumentMemberDeserVisitor getMemberDeserVisitor(GenerationContext context, String dataSource) {

0 commit comments

Comments
 (0)