|
28 | 28 | import software.amazon.smithy.codegen.core.SymbolProvider; |
29 | 29 | import software.amazon.smithy.model.Model; |
30 | 30 | import software.amazon.smithy.model.knowledge.TopDownIndex; |
| 31 | +import software.amazon.smithy.model.shapes.MemberShape; |
31 | 32 | import software.amazon.smithy.model.shapes.OperationShape; |
32 | 33 | import software.amazon.smithy.model.shapes.ServiceShape; |
33 | 34 | import software.amazon.smithy.model.shapes.StructureShape; |
@@ -203,13 +204,14 @@ private static Map<String, Object> getPluginFunctionParams( |
203 | 204 | params.put("requestChecksumRequired", httpChecksumTrait.isRequestChecksumRequired()); |
204 | 205 | httpChecksumTrait.getRequestAlgorithmMember().ifPresent(requestAlgorithmMember -> { |
205 | 206 | params.put("requestAlgorithmMember", requestAlgorithmMember); |
206 | | - operation.getInput().ifPresent(inputShapeId -> { |
207 | | - StructureShape inputShape = model.expectShape(inputShapeId, StructureShape.class); |
208 | | - inputShape.getMember(requestAlgorithmMember).ifPresent(requestAlgorithmMemberShape -> { |
209 | | - requestAlgorithmMemberShape.getTrait(HttpHeaderTrait.class).ifPresent(httpHeaderTrait -> { |
210 | | - params.put("requestAlgorithmMemberHttpHeader", httpHeaderTrait.getValue()); |
211 | | - }); |
212 | | - }); |
| 207 | + |
| 208 | + // We know that input shape is structure, and contains requestAlgorithmMember. |
| 209 | + StructureShape inputShape = model.expectShape(operation.getInput().get(), StructureShape.class); |
| 210 | + MemberShape requestAlgorithmMemberShape = inputShape.getAllMembers().get(requestAlgorithmMember); |
| 211 | + |
| 212 | + // Set requestAlgorithmMemberHttpHeader if HttpHeaderTrait is present. |
| 213 | + requestAlgorithmMemberShape.getTrait(HttpHeaderTrait.class).ifPresent(httpHeaderTrait -> { |
| 214 | + params.put("requestAlgorithmMemberHttpHeader", httpHeaderTrait.getValue()); |
213 | 215 | }); |
214 | 216 | }); |
215 | 217 | httpChecksumTrait.getRequestValidationModeMember().ifPresent(requestValidationModeMember -> { |
|
0 commit comments