Skip to content

Commit 69d5a2f

Browse files
chore: don't pass in an isInput bool
1 parent bbfc031 commit 69d5a2f

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
@@ -136,19 +136,40 @@ private boolean usesWrappedErrorResponse(GenerationContext context) {
136136
}
137137

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

146152
@Override
147-
protected void serializeDocumentBody(
153+
public void serializeOutputDocumentBody(
148154
GenerationContext context,
149155
OperationShape operation,
150-
List<HttpBinding> documentBindings,
151-
boolean isInput
156+
List<HttpBinding> documentBindings
157+
) {
158+
serializeDocumentBody(context, documentBindings);
159+
}
160+
161+
@Override
162+
public void serializeErrorDocumentBody(
163+
GenerationContext context,
164+
StructureShape error,
165+
List<HttpBinding> documentBindings
166+
) {
167+
serializeDocumentBody(context, documentBindings);
168+
}
169+
170+
private void serializeDocumentBody(
171+
GenerationContext context,
172+
List<HttpBinding> documentBindings
152173
) {
153174
// Short circuit when we have no bindings.
154175
TypeScriptWriter writer = context.getWriter();
@@ -196,11 +217,38 @@ protected void serializeDocumentBody(
196217
}
197218

198219
@Override
199-
protected void serializePayload(
220+
protected void serializeInputPayload(
221+
GenerationContext context,
222+
OperationShape operation,
223+
HttpBinding payloadBinding
224+
) {
225+
super.serializeInputPayload(context, operation, payloadBinding);
226+
serializePayload(context, payloadBinding);
227+
}
228+
229+
@Override
230+
protected void serializeOutputPayload(
200231
GenerationContext context,
201232
OperationShape operation,
202-
HttpBinding payloadBinding,
203-
boolean isInput
233+
HttpBinding payloadBinding
234+
) {
235+
super.serializeOutputPayload(context, operation, payloadBinding);
236+
serializePayload(context, payloadBinding);
237+
}
238+
239+
@Override
240+
protected void serializeErrorPayload(
241+
GenerationContext context,
242+
StructureShape error,
243+
HttpBinding payloadBinding
244+
) {
245+
super.serializeErrorPayload(context, error, payloadBinding);
246+
serializePayload(context, payloadBinding);
247+
}
248+
249+
private void serializePayload(
250+
GenerationContext context,
251+
HttpBinding payloadBinding
204252
) {
205253
SymbolProvider symbolProvider = context.getSymbolProvider();
206254
TypeScriptWriter writer = context.getWriter();
@@ -248,11 +296,35 @@ protected void writeErrorCodeParser(GenerationContext context) {
248296
}
249297

250298
@Override
299+
public void deserializeInputDocumentBody(
300+
GenerationContext context,
301+
OperationShape operation,
302+
List<HttpBinding> documentBindings
303+
) {
304+
deserializeDocumentBody(context, documentBindings);
305+
}
306+
307+
@Override
308+
public void deserializeOutputDocumentBody(
309+
GenerationContext context,
310+
OperationShape operation,
311+
List<HttpBinding> documentBindings
312+
) {
313+
deserializeDocumentBody(context, documentBindings);
314+
}
315+
316+
@Override
317+
public void deserializeErrorDocumentBody(
318+
GenerationContext context,
319+
StructureShape error,
320+
List<HttpBinding> documentBindings
321+
) {
322+
deserializeDocumentBody(context, documentBindings);
323+
}
324+
251325
protected void deserializeDocumentBody(
252326
GenerationContext context,
253-
Shape operationOrError,
254-
List<HttpBinding> documentBindings,
255-
boolean isInput
327+
List<HttpBinding> documentBindings
256328
) {
257329
SymbolProvider symbolProvider = context.getSymbolProvider();
258330
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
@@ -85,36 +85,62 @@ public void generateSharedComponents(GenerationContext context) {
8585
}
8686

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

100112
@Override
101-
public void serializeDocumentBody(
113+
public void serializeOutputDocumentBody(
102114
GenerationContext context,
103115
OperationShape operation,
104-
List<HttpBinding> documentBindings,
105-
boolean isInput
116+
List<HttpBinding> documentBindings
106117
) {
107118
// Short circuit when we have no bindings.
108119
TypeScriptWriter writer = context.getWriter();
109120
if (documentBindings.isEmpty()) {
110-
if (isInput) {
111-
writer.write("body = \"\";");
112-
} else {
113-
writer.write("body = \"{}\";");
114-
}
121+
writer.write("body = \"{}\";");
115122
return;
116123
}
124+
serializeDocumentBody(context, documentBindings);
125+
}
117126

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

120146
writer.openBlock("body = JSON.stringify({", "});", () -> {
@@ -146,15 +172,39 @@ public void serializeDocumentBody(
146172
}
147173

148174
@Override
149-
protected void serializePayload(
175+
protected void serializeInputPayload(
176+
GenerationContext context,
177+
OperationShape operation,
178+
HttpBinding payloadBinding
179+
) {
180+
super.serializeInputPayload(context, operation, payloadBinding);
181+
serializePayload(context, payloadBinding);
182+
}
183+
184+
@Override
185+
protected void serializeOutputPayload(
150186
GenerationContext context,
151187
OperationShape operation,
152-
HttpBinding payloadBinding,
153-
boolean isInput
188+
HttpBinding payloadBinding
154189
) {
155-
// We want the standard serialization, but need to alter it to JSON.
156-
super.serializePayload(context, operation, payloadBinding, isInput);
190+
super.serializeOutputPayload(context, operation, payloadBinding);
191+
serializePayload(context, payloadBinding);
192+
}
157193

194+
@Override
195+
protected void serializeErrorPayload(
196+
GenerationContext context,
197+
StructureShape error,
198+
HttpBinding payloadBinding
199+
) {
200+
super.serializeErrorPayload(context, error, payloadBinding);
201+
serializePayload(context, payloadBinding);
202+
}
203+
204+
private void serializePayload(
205+
GenerationContext context,
206+
HttpBinding payloadBinding
207+
) {
158208
TypeScriptWriter writer = context.getWriter();
159209
MemberShape payloadMember = payloadBinding.getMember();
160210
Shape target = context.getModel().expectShape(payloadMember.getTarget());
@@ -177,17 +227,9 @@ private DocumentMemberSerVisitor getMemberSerVisitor(GenerationContext context,
177227
return new JsonMemberSerVisitor(context, dataSource, getDocumentTimestampFormat());
178228
}
179229

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

193235
@Override
@@ -199,11 +241,35 @@ protected void writeErrorCodeParser(GenerationContext context) {
199241
}
200242

201243
@Override
202-
public void deserializeDocumentBody(
244+
public void deserializeInputDocumentBody(
245+
GenerationContext context,
246+
OperationShape operation,
247+
List<HttpBinding> documentBindings
248+
) {
249+
deserializeDocumentBody(context, documentBindings);
250+
}
251+
252+
@Override
253+
public void deserializeOutputDocumentBody(
254+
GenerationContext context,
255+
OperationShape operation,
256+
List<HttpBinding> documentBindings
257+
) {
258+
deserializeDocumentBody(context, documentBindings);
259+
}
260+
261+
@Override
262+
public void deserializeErrorDocumentBody(
203263
GenerationContext context,
204-
Shape operationOrError,
205-
List<HttpBinding> documentBindings,
206-
boolean isInput
264+
StructureShape error,
265+
List<HttpBinding> documentBindings
266+
) {
267+
deserializeDocumentBody(context, documentBindings);
268+
}
269+
270+
private void deserializeDocumentBody(
271+
GenerationContext context,
272+
List<HttpBinding> documentBindings
207273
) {
208274
TypeScriptWriter writer = context.getWriter();
209275
SymbolProvider symbolProvider = context.getSymbolProvider();
@@ -224,20 +290,50 @@ public void deserializeDocumentBody(
224290
}
225291
}
226292

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

235333
// Decode the body from a JSON string.
236334
if (target instanceof DocumentShape) {
237335
writer.write("contents.$L = JSON.parse(data);", payloadBinding.getMemberName());
238336
}
239-
240-
return returnedBinding;
241337
}
242338

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

0 commit comments

Comments
 (0)