diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/StructureGenerator.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/StructureGenerator.java index 4a11f2d72..10ca80d80 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/StructureGenerator.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/StructureGenerator.java @@ -19,6 +19,7 @@ import java.util.Set; import software.amazon.polymorph.smithygo.localservice.nameresolver.DafnyNameResolver; import software.amazon.polymorph.smithygo.localservice.nameresolver.SmithyNameResolver; +import software.amazon.polymorph.smithygo.utils.GoCodegenUtils; import software.amazon.polymorph.traits.ReferenceTrait; import software.amazon.smithy.aws.traits.ServiceTrait; import software.amazon.smithy.codegen.core.Symbol; @@ -156,23 +157,7 @@ public void renderStructure(Runnable runnable, boolean isInputStructure) { } } else { if (SmithyNameResolver.isShapeFromAWSSDK(targetShape)) { - final var typesNamespace = SmithyNameResolver.smithyTypesNamespace(targetShape, model); - if (typesNamespace.endsWith("types")) { - writer.addImportFromModule( - SmithyNameResolver.getGoModuleNameForSdkNamespace( - targetShape.getId().getNamespace() - ), - "types", - typesNamespace - ); - } else { - writer.addImport( - SmithyNameResolver.getGoModuleNameForSdkNamespace( - targetShape.getId().getNamespace() - ) - ); - } - + GoCodegenUtils.importAwsSDKShape(targetShape, model, writer); } else if ( !member .toShapeId() diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/ValidationGenerator.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/ValidationGenerator.java index bc9eb6839..669c1f267 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/ValidationGenerator.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/ValidationGenerator.java @@ -519,13 +519,7 @@ private void renderListShape( ); if (isExternalShape) { if (SmithyNameResolver.isShapeFromAWSSDK(currentShape)) { - writer.addImportFromModule( - SmithyNameResolver.getGoModuleNameForSdkNamespace( - currentShape.getId().getNamespace() - ), - "types", - SmithyNameResolver.smithyTypesNamespace(currentShape, model) - ); + GoCodegenUtils.importAwsSDKShape(currentShape, model, writer); } else { writer.addImportFromModule( SmithyNameResolver.getGoModuleNameForSmithyNamespace( @@ -616,13 +610,7 @@ private void renderMapShape( ); if (isExternalShape) { if (SmithyNameResolver.isShapeFromAWSSDK(currentShape)) { - writer.addImportFromModule( - SmithyNameResolver.getGoModuleNameForSdkNamespace( - currentShape.getId().getNamespace() - ), - "types", - SmithyNameResolver.smithyTypesNamespace(currentShape, model) - ); + GoCodegenUtils.importAwsSDKShape(currentShape, model, writer); } else { writer.addImportFromModule( SmithyNameResolver.getGoModuleNameForSmithyNamespace( @@ -691,13 +679,7 @@ private void renderUnionShape( ); if (isExternalShape) { if (SmithyNameResolver.isShapeFromAWSSDK(currentShape)) { - writer.addImportFromModule( - SmithyNameResolver.getGoModuleNameForSdkNamespace( - currentShape.getId().getNamespace() - ), - "types", - SmithyNameResolver.smithyTypesNamespace(currentShape, model) - ); + GoCodegenUtils.importAwsSDKShape(currentShape, model, writer); } else { writer.addImportFromModule( SmithyNameResolver.getGoModuleNameForSmithyNamespace( diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/shapevisitor/DafnyToSmithyShapeVisitor.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/shapevisitor/DafnyToSmithyShapeVisitor.java index 5e518ba66..872cd0380 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/shapevisitor/DafnyToSmithyShapeVisitor.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/shapevisitor/DafnyToSmithyShapeVisitor.java @@ -280,13 +280,7 @@ protected String getDefault(final Shape shape) { @Override public String blobShape(final BlobShape shape) { if (SmithyNameResolver.isShapeFromAWSSDK(shape)) { - writer.addImportFromModule( - SmithyNameResolver.getGoModuleNameForSdkNamespace( - shape.getId().getNamespace() - ), - "types", - SmithyNameResolver.smithyTypesNamespace(shape, context.model()) - ); + GoCodegenUtils.importAwsSDKShape(shape, context.model(), writer); } writer.addImportFromModule(DAFNY_RUNTIME_GO_LIBRARY_MODULE, "dafny"); // Blob shape is inherently value type @@ -310,13 +304,7 @@ public String blobShape(final BlobShape shape) { @Override public String structureShape(final StructureShape shape) { if (SmithyNameResolver.isShapeFromAWSSDK(shape)) { - writer.addImportFromModule( - SmithyNameResolver.getGoModuleNameForSdkNamespace( - shape.getId().getNamespace() - ), - "types", - SmithyNameResolver.smithyTypesNamespace(shape, context.model()) - ); + GoCodegenUtils.importAwsSDKShape(shape, context.model(), writer); } if (shape.hasTrait(ReferenceTrait.class)) { return referenceStructureShape(shape); @@ -425,13 +413,7 @@ public String structureShape(final StructureShape shape) { public String listShape(final ListShape shape) { writer.addImportFromModule(DAFNY_RUNTIME_GO_LIBRARY_MODULE, "dafny"); if (SmithyNameResolver.isShapeFromAWSSDK(shape)) { - writer.addImportFromModule( - SmithyNameResolver.getGoModuleNameForSdkNamespace( - shape.getId().getNamespace() - ), - "types", - SmithyNameResolver.smithyTypesNamespace(shape, context.model()) - ); + GoCodegenUtils.importAwsSDKShape(shape, context.model(), writer); } final StringBuilder typeConversionMethodBuilder = new StringBuilder(); final MemberShape memberShape = shape.getMember(); @@ -480,13 +462,7 @@ public String listShape(final ListShape shape) { public String mapShape(final MapShape shape) { writer.addImportFromModule(DAFNY_RUNTIME_GO_LIBRARY_MODULE, "dafny"); if (SmithyNameResolver.isShapeFromAWSSDK(shape)) { - writer.addImportFromModule( - SmithyNameResolver.getGoModuleNameForSdkNamespace( - shape.getId().getNamespace() - ), - "types", - SmithyNameResolver.smithyTypesNamespace(shape, context.model()) - ); + GoCodegenUtils.importAwsSDKShape(shape, context.model(), writer); } final StringBuilder typeConversionMethodBuilder = new StringBuilder(); final MemberShape keyMemberShape = shape.getKey(); @@ -546,13 +522,7 @@ public String mapShape(final MapShape shape) { public String booleanShape(final BooleanShape shape) { writer.addImportFromModule(DAFNY_RUNTIME_GO_LIBRARY_MODULE, "dafny"); if (SmithyNameResolver.isShapeFromAWSSDK(shape)) { - writer.addImportFromModule( - SmithyNameResolver.getGoModuleNameForSdkNamespace( - shape.getId().getNamespace() - ), - "types", - SmithyNameResolver.smithyTypesNamespace(shape, context.model()) - ); + GoCodegenUtils.importAwsSDKShape(shape, context.model(), writer); } if (this.isOptional) { return """ @@ -580,13 +550,7 @@ public String booleanShape(final BooleanShape shape) { public String stringShape(final StringShape shape) { writer.addImportFromModule(DAFNY_RUNTIME_GO_LIBRARY_MODULE, "dafny"); if (SmithyNameResolver.isShapeFromAWSSDK(shape)) { - writer.addImportFromModule( - SmithyNameResolver.getGoModuleNameForSdkNamespace( - shape.getId().getNamespace() - ), - "types", - SmithyNameResolver.smithyTypesNamespace(shape, context.model()) - ); + GoCodegenUtils.importAwsSDKShape(shape, context.model(), writer); } if (shape.hasTrait(EnumTrait.class)) { if ( @@ -734,13 +698,7 @@ public String stringShape(final StringShape shape) { public String integerShape(final IntegerShape shape) { writer.addImportFromModule(DAFNY_RUNTIME_GO_LIBRARY_MODULE, "dafny"); if (SmithyNameResolver.isShapeFromAWSSDK(shape)) { - writer.addImportFromModule( - SmithyNameResolver.getGoModuleNameForSdkNamespace( - shape.getId().getNamespace() - ), - "types", - SmithyNameResolver.smithyTypesNamespace(shape, context.model()) - ); + GoCodegenUtils.importAwsSDKShape(shape, context.model(), writer); } if (isOptional) { return ( @@ -767,13 +725,7 @@ public String integerShape(final IntegerShape shape) { public String longShape(final LongShape shape) { writer.addImportFromModule(DAFNY_RUNTIME_GO_LIBRARY_MODULE, "dafny"); if (SmithyNameResolver.isShapeFromAWSSDK(shape)) { - writer.addImportFromModule( - SmithyNameResolver.getGoModuleNameForSdkNamespace( - shape.getId().getNamespace() - ), - "types", - SmithyNameResolver.smithyTypesNamespace(shape, context.model()) - ); + GoCodegenUtils.importAwsSDKShape(shape, context.model(), writer); } if (isOptional) { return ( @@ -801,13 +753,7 @@ public String longShape(final LongShape shape) { public String doubleShape(final DoubleShape shape) { writer.addImportFromModule(DAFNY_RUNTIME_GO_LIBRARY_MODULE, "dafny"); if (SmithyNameResolver.isShapeFromAWSSDK(shape)) { - writer.addImportFromModule( - SmithyNameResolver.getGoModuleNameForSdkNamespace( - shape.getId().getNamespace() - ), - "types", - SmithyNameResolver.smithyTypesNamespace(shape, context.model()) - ); + GoCodegenUtils.importAwsSDKShape(shape, context.model(), writer); } writer.addUseImports(SmithyGoDependency.MATH); if (isOptional) { @@ -846,13 +792,7 @@ public String doubleShape(final DoubleShape shape) { public String unionShape(final UnionShape shape) { writer.addImportFromModule(DAFNY_RUNTIME_GO_LIBRARY_MODULE, "dafny"); if (SmithyNameResolver.isShapeFromAWSSDK(shape)) { - writer.addImportFromModule( - SmithyNameResolver.getGoModuleNameForSdkNamespace( - shape.getId().getNamespace() - ), - "types", - SmithyNameResolver.smithyTypesNamespace(shape, context.model()) - ); + GoCodegenUtils.importAwsSDKShape(shape, context.model(), writer); } String nilCheck = ""; diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/utils/GoCodegenUtils.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/utils/GoCodegenUtils.java index 9dccbb2e1..eb645fd06 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/utils/GoCodegenUtils.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/utils/GoCodegenUtils.java @@ -6,7 +6,6 @@ import software.amazon.polymorph.smithygo.codegen.SymbolUtils; import software.amazon.polymorph.smithygo.localservice.nameresolver.DafnyNameResolver; import software.amazon.polymorph.smithygo.localservice.nameresolver.SmithyNameResolver; -import software.amazon.polymorph.smithypython.awssdk.nameresolver.AwsSdkNameResolver; import software.amazon.polymorph.traits.PositionalTrait; import software.amazon.polymorph.traits.ReferenceTrait; import software.amazon.smithy.aws.traits.ServiceTrait; @@ -225,4 +224,30 @@ public static boolean shapeShouldHaveConversionFunction(Shape shape) { } return false; } + + public static void importAwsSDKShape( + Shape shape, + Model model, + GoWriter writer + ) { + final var typesNamespace = SmithyNameResolver.smithyTypesNamespace( + shape, + model + ); + if (typesNamespace.endsWith("types")) { + writer.addImportFromModule( + SmithyNameResolver.getGoModuleNameForSdkNamespace( + shape.getId().getNamespace() + ), + "types", + typesNamespace + ); + } else { + writer.addImport( + SmithyNameResolver.getGoModuleNameForSdkNamespace( + shape.getId().getNamespace() + ) + ); + } + } }