diff --git a/aws/client/aws-client-awsjson/src/main/java/software/amazon/smithy/java/aws/client/awsjson/AwsJson1Protocol.java b/aws/client/aws-client-awsjson/src/main/java/software/amazon/smithy/java/aws/client/awsjson/AwsJson1Protocol.java index b28b6b6392..f5fd8b8e64 100644 --- a/aws/client/aws-client-awsjson/src/main/java/software/amazon/smithy/java/aws/client/awsjson/AwsJson1Protocol.java +++ b/aws/client/aws-client-awsjson/src/main/java/software/amazon/smithy/java/aws/client/awsjson/AwsJson1Protocol.java @@ -31,8 +31,12 @@ public AwsJson1Protocol(ShapeId service) { } private static ShapeId extractErrorType(Document document, String namespace) { + // Per the awsJson1_0 spec, the __type discriminator may carry an over-the-wire namespace + // like "com.amazonaws.dynamodb.v20120810#ResourceNotFoundException" that doesn't match + // the model's namespace. Strip the namespace and let parseDiscriminator re-attach the + // service's namespace so registry lookup succeeds. return DocumentDeserializer.parseDiscriminator( - ErrorTypeUtils.removeUri(ErrorTypeUtils.readTypeAndCode(document)), + ErrorTypeUtils.removeNamespaceAndUri(ErrorTypeUtils.readTypeAndCode(document)), namespace); }