Skip to content

Commit 990263b

Browse files
authored
awsQueryError trait support (#1283)
* Support awsQueryError trait * Regenerated Clients
1 parent f4c4e7c commit 990263b

File tree

13 files changed

+262
-248
lines changed

13 files changed

+262
-248
lines changed

codegen/protocol-test-codegen/smithy-build.json

+7-14
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,7 @@
1313
"plugins": {
1414
"go-codegen": {
1515
"service": "aws.protocoltests.ec2#AwsEc2",
16-
"module": "github.com/aws/aws-sdk-go-v2/internal/protocoltest/ec2query",
17-
"moduleVersion": "1.0"
16+
"module": "github.com/aws/aws-sdk-go-v2/internal/protocoltest/ec2query"
1817
}
1918
}
2019
},
@@ -30,8 +29,7 @@
3029
"plugins": {
3130
"go-codegen": {
3231
"service": "aws.protocoltests.json#JsonProtocol",
33-
"module": "github.com/aws/aws-sdk-go-v2/internal/protocoltest/jsonrpc",
34-
"moduleVersion": "1.0"
32+
"module": "github.com/aws/aws-sdk-go-v2/internal/protocoltest/jsonrpc"
3533
}
3634
}
3735
},
@@ -47,8 +45,7 @@
4745
"plugins": {
4846
"go-codegen": {
4947
"service": "aws.protocoltests.json10#JsonRpc10",
50-
"module": "github.com/aws/aws-sdk-go-v2/internal/protocoltest/jsonrpc10",
51-
"moduleVersion": "1.0"
48+
"module": "github.com/aws/aws-sdk-go-v2/internal/protocoltest/jsonrpc10"
5249
}
5350
}
5451
},
@@ -64,8 +61,7 @@
6461
"plugins": {
6562
"go-codegen": {
6663
"service": "aws.protocoltests.query#AwsQuery",
67-
"module": "github.com/aws/aws-sdk-go-v2/internal/protocoltest/query",
68-
"moduleVersion": "1.0"
64+
"module": "github.com/aws/aws-sdk-go-v2/internal/protocoltest/query"
6965
}
7066
}
7167
},
@@ -81,8 +77,7 @@
8177
"plugins": {
8278
"go-codegen": {
8379
"service": "aws.protocoltests.restjson#RestJson",
84-
"module": "github.com/aws/aws-sdk-go-v2/internal/protocoltest/awsrestjson",
85-
"moduleVersion": "1.0"
80+
"module": "github.com/aws/aws-sdk-go-v2/internal/protocoltest/awsrestjson"
8681
}
8782
}
8883
},
@@ -98,8 +93,7 @@
9893
"plugins": {
9994
"go-codegen": {
10095
"service": "aws.protocoltests.restxml#RestXml",
101-
"module": "github.com/aws/aws-sdk-go-v2/internal/protocoltest/restxml",
102-
"moduleVersion": "1.0"
96+
"module": "github.com/aws/aws-sdk-go-v2/internal/protocoltest/restxml"
10397
}
10498
}
10599
},
@@ -115,8 +109,7 @@
115109
"plugins": {
116110
"go-codegen": {
117111
"service": "aws.protocoltests.restxml.xmlns#RestXmlWithNamespace",
118-
"module": "github.com/aws/aws-sdk-go-v2/internal/protocoltest/restxmlwithnamespace",
119-
"moduleVersion": "1.0"
112+
"module": "github.com/aws/aws-sdk-go-v2/internal/protocoltest/restxmlwithnamespace"
120113
}
121114
}
122115
}

codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/AwsQuery.java

+26-4
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,11 @@
44
import static software.amazon.smithy.aws.go.codegen.AwsProtocolUtils.handleDecodeError;
55
import static software.amazon.smithy.aws.go.codegen.XmlProtocolUtils.initializeXmlDecoder;
66

7+
import java.util.Map;
8+
import java.util.Optional;
79
import java.util.Set;
10+
import java.util.TreeMap;
11+
import software.amazon.smithy.aws.traits.protocols.AwsQueryErrorTrait;
812
import software.amazon.smithy.aws.traits.protocols.AwsQueryTrait;
913
import software.amazon.smithy.codegen.core.Symbol;
1014
import software.amazon.smithy.go.codegen.GoWriter;
@@ -25,7 +29,6 @@
2529
* Handles generating the aws query protocol for services.
2630
*
2731
* @inheritDoc
28-
*
2932
* @see HttpRpcProtocolGenerator
3033
*/
3134
class AwsQuery extends HttpRpcProtocolGenerator {
@@ -81,8 +84,8 @@ protected void serializeInputDocument(GenerationContext context, OperationShape
8184

8285
writer.openBlock("if request, err = request.SetStream(bytes.NewReader(bodyWriter.Bytes())); err != nil {",
8386
"}", () -> {
84-
writer.write("return out, metadata, &smithy.SerializationError{Err: err}");
85-
});
87+
writer.write("return out, metadata, &smithy.SerializationError{Err: err}");
88+
});
8689
}
8790

8891
@Override
@@ -97,7 +100,7 @@ protected void deserializeOutputDocument(GenerationContext context, OperationSha
97100
StructureShape output = ProtocolUtils.expectOutput(context.getModel(), operation);
98101
String functionName = ProtocolGenerator.getDocumentDeserializerFunctionName(
99102
output, context.getService(), getProtocolName());
100-
initializeXmlDecoder(writer, "response.Body", "out, metadata, ","nil");
103+
initializeXmlDecoder(writer, "response.Body", "out, metadata, ", "nil");
101104
unwrapOutputDocument(context, operation);
102105
writer.write("err = $L(&output, decoder)", functionName);
103106
handleDecodeError(writer, "out, metadata, ");
@@ -152,4 +155,23 @@ protected void writeErrorMessageCodeDeserializer(GenerationContext context) {
152155
public void generateProtocolTests(GenerationContext context) {
153156
AwsProtocolUtils.generateHttpProtocolTests(context);
154157
}
158+
159+
@Override
160+
public Map<String, ShapeId> getOperationErrors(GenerationContext context, OperationShape operation) {
161+
Map<String, ShapeId> errors = new TreeMap<>();
162+
163+
operation.getErrors().forEach(shapeId -> {
164+
Shape errorShape = context.getModel().expectShape(shapeId);
165+
String errorName = shapeId.getName(context.getService());
166+
167+
Optional<AwsQueryErrorTrait> errorShapeTrait = errorShape.getTrait(AwsQueryErrorTrait.class);
168+
if (errorShapeTrait.isPresent()) {
169+
errors.put(errorShapeTrait.get().getCode(), shapeId);
170+
} else {
171+
errors.put(errorName, shapeId);
172+
}
173+
});
174+
175+
return errors;
176+
}
155177
}

internal/protocoltest/query/api_op_GreetingWithErrors_test.go

-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/protocoltest/query/deserializers.go

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

service/cloudfront/deserializers.go

+3-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

service/cognitoidentityprovider/deserializers.go

+6-6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

service/elasticache/deserializers.go

+6-6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

service/elasticbeanstalk/deserializers.go

+3-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)