|
22 | 22 | import software.amazon.smithy.codegen.core.SymbolProvider;
|
23 | 23 | import software.amazon.smithy.model.Model;
|
24 | 24 | import software.amazon.smithy.model.knowledge.TopDownIndex;
|
| 25 | +import software.amazon.smithy.model.shapes.MemberShape; |
25 | 26 | import software.amazon.smithy.model.shapes.OperationShape;
|
26 | 27 | import software.amazon.smithy.model.shapes.ServiceShape;
|
27 | 28 | import software.amazon.smithy.utils.SmithyInternalApi;
|
@@ -94,19 +95,28 @@ public void run() {
|
94 | 95 | writer.writeDocs(
|
95 | 96 | "@see {@link " + operationSymbol.getName() + "}"
|
96 | 97 | );
|
97 |
| - writer.write("$L(\n" |
98 |
| - + " args: $T,\n" |
99 |
| - + " options?: $T,\n" |
100 |
| - + "): Promise<$T>;", methodName, input, applicationProtocol.getOptionsType(), output); |
101 |
| - writer.write("$L(\n" |
102 |
| - + " args: $T,\n" |
103 |
| - + " cb: (err: any, data?: $T) => void\n" |
104 |
| - + "): void;", methodName, input, output); |
105 |
| - writer.write("$L(\n" |
106 |
| - + " args: $T,\n" |
107 |
| - + " options: $T,\n" |
108 |
| - + " cb: (err: any, data?: $T) => void\n" |
109 |
| - + "): void;", methodName, input, applicationProtocol.getOptionsType(), output); |
| 98 | + boolean inputOptional = model.getShape(operation.getInputShape()).map( |
| 99 | + shape -> shape.getAllMembers().values().stream().noneMatch(MemberShape::isRequired) |
| 100 | + ).orElse(true); |
| 101 | + if (inputOptional) { |
| 102 | + writer.write("$L(): Promise<$T>;", methodName, output); |
| 103 | + } |
| 104 | + writer.write(""" |
| 105 | + $1L( |
| 106 | + args: $2T, |
| 107 | + options?: $3T, |
| 108 | + ): Promise<$4T>; |
| 109 | + $1L( |
| 110 | + args: $2T, |
| 111 | + cb: (err: any, data?: $4T) => void |
| 112 | + ): void; |
| 113 | + $1L( |
| 114 | + args: $2T, |
| 115 | + options: $3T, |
| 116 | + cb: (err: any, data?: $4T) => void |
| 117 | + ): void;""", |
| 118 | + methodName, input, applicationProtocol.getOptionsType(), output |
| 119 | + ); |
110 | 120 | writer.write("");
|
111 | 121 | }
|
112 | 122 | });
|
|
0 commit comments