From f104d16457c8db706a97eff1c5b24f3eb75dc800 Mon Sep 17 00:00:00 2001 From: JordonPhillips Date: Thu, 13 Mar 2025 17:49:58 +0100 Subject: [PATCH] Use SDK ID to generate service name if available --- .../aws/codegen/AwsServiceIdIntegration.java | 47 +++++++++++++++++++ ...hon.codegen.integrations.PythonIntegration | 1 + 2 files changed, 48 insertions(+) create mode 100644 codegen/aws/core/src/main/java/software/amazon/smithy/python/aws/codegen/AwsServiceIdIntegration.java diff --git a/codegen/aws/core/src/main/java/software/amazon/smithy/python/aws/codegen/AwsServiceIdIntegration.java b/codegen/aws/core/src/main/java/software/amazon/smithy/python/aws/codegen/AwsServiceIdIntegration.java new file mode 100644 index 000000000..bda2077cf --- /dev/null +++ b/codegen/aws/core/src/main/java/software/amazon/smithy/python/aws/codegen/AwsServiceIdIntegration.java @@ -0,0 +1,47 @@ +/* + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +package software.amazon.smithy.python.aws.codegen; + +import software.amazon.smithy.aws.traits.ServiceTrait; +import software.amazon.smithy.codegen.core.Symbol; +import software.amazon.smithy.codegen.core.SymbolProvider; +import software.amazon.smithy.model.Model; +import software.amazon.smithy.model.shapes.MemberShape; +import software.amazon.smithy.model.shapes.Shape; +import software.amazon.smithy.python.codegen.PythonSettings; +import software.amazon.smithy.python.codegen.integrations.PythonIntegration; +import software.amazon.smithy.utils.StringUtils; + +public final class AwsServiceIdIntegration implements PythonIntegration { + @Override + public SymbolProvider decorateSymbolProvider(Model model, PythonSettings settings, SymbolProvider symbolProvider) { + return new ServiceIdSymbolProvider(symbolProvider); + } + + private static class ServiceIdSymbolProvider implements SymbolProvider { + + private final SymbolProvider delegate; + + ServiceIdSymbolProvider(SymbolProvider delegate) { + this.delegate = delegate; + } + + @Override + public Symbol toSymbol(Shape shape) { + Symbol symbol = this.delegate.toSymbol(shape); + if (shape.isServiceShape() && shape.hasTrait(ServiceTrait.class)) { + var serviceTrait = shape.expectTrait(ServiceTrait.class); + var serviceName = StringUtils.capitalize(serviceTrait.getSdkId()).replace(" ", ""); + symbol = symbol.toBuilder().name(serviceName).build(); + } + return symbol; + } + + @Override + public String toMemberName(MemberShape shape) { + return this.delegate.toMemberName(shape); + } + } +} diff --git a/codegen/aws/core/src/main/resources/META-INF/services/software.amazon.smithy.python.codegen.integrations.PythonIntegration b/codegen/aws/core/src/main/resources/META-INF/services/software.amazon.smithy.python.codegen.integrations.PythonIntegration index c9ee36be9..a338df30c 100644 --- a/codegen/aws/core/src/main/resources/META-INF/services/software.amazon.smithy.python.codegen.integrations.PythonIntegration +++ b/codegen/aws/core/src/main/resources/META-INF/services/software.amazon.smithy.python.codegen.integrations.PythonIntegration @@ -5,5 +5,6 @@ software.amazon.smithy.python.aws.codegen.AwsAuthIntegration software.amazon.smithy.python.aws.codegen.AwsProtocolsIntegration +software.amazon.smithy.python.aws.codegen.AwsServiceIdIntegration software.amazon.smithy.python.aws.codegen.AwsUserAgentIntegration software.amazon.smithy.python.aws.codegen.AwsStandardRegionalEndpointsIntegration