diff --git a/build_tools/aws-sdk-code-generator/lib/aws-sdk-code-generator/service.rb b/build_tools/aws-sdk-code-generator/lib/aws-sdk-code-generator/service.rb index 334e3b5a9ee..f96c03851f0 100644 --- a/build_tools/aws-sdk-code-generator/lib/aws-sdk-code-generator/service.rb +++ b/build_tools/aws-sdk-code-generator/lib/aws-sdk-code-generator/service.rb @@ -192,6 +192,31 @@ def deprecated? @deprecated end + # @return list of validation messages + def validate + errors = [] + @api.fetch('metadata', {}).keys.sort.each do |key| + if AwsSdkCodeGenerator::Views::ClientApiModule::METADATA_KEYS[key].nil? + errors << { + type: :invalid_key, + message: "invalid/unsupported metadata key `#{key}`" + } + end + end + + @api.fetch('shapes', {}).each do |shape_name, shape| + shape.each_pair do |key, _| + unless AwsSdkCodeGenerator::Views::ClientApiModule::SHAPE_KEYS.key?(key) + errors << { + type: :invalid_key, + message: "invalid/unsupported shape key `#{key}` on `#{shape_name}`" + } + end + end + end + errors + end + # @api private def inspect "#<#{self.class.name}>" diff --git a/build_tools/aws-sdk-code-generator/lib/aws-sdk-code-generator/views/client_api_module.rb b/build_tools/aws-sdk-code-generator/lib/aws-sdk-code-generator/views/client_api_module.rb index 452fd4c0924..5a838a41b48 100644 --- a/build_tools/aws-sdk-code-generator/lib/aws-sdk-code-generator/views/client_api_module.rb +++ b/build_tools/aws-sdk-code-generator/lib/aws-sdk-code-generator/views/client_api_module.rb @@ -192,7 +192,7 @@ def metadata value: @service.api['metadata'][key].inspect } elsif METADATA_KEYS[key].nil? - raise "unhandled metadata key #{key.inspect}" + warn "unhandled metadata key #{key.inspect}" end end metadata @@ -317,7 +317,7 @@ def shape_constructor_args(shape_name, shape) args << "#{key}: #{value.inspect}" elsif SHAPE_KEYS[key].nil? - raise "unhandled shape key #{key.inspect}" + warn "unhandled shape key #{key.inspect}" end end args.join(', ')