From b1f95eccb109559f593767c26f2789d6b0bc1c86 Mon Sep 17 00:00:00 2001 From: rishav-karanjit Date: Tue, 7 Jan 2025 11:28:20 -0800 Subject: [PATCH 01/15] hashmap to LinkedHashMap --- .../awssdk/shapevisitor/AwsSdkToDafnyShapeVisitor.java | 3 ++- .../awssdk/shapevisitor/DafnyToAwsSdkShapeVisitor.java | 2 +- .../localservice/shapevisitor/DafnyToSmithyShapeVisitor.java | 3 ++- .../localservice/shapevisitor/SmithyToDafnyShapeVisitor.java | 3 ++- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/awssdk/shapevisitor/AwsSdkToDafnyShapeVisitor.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/awssdk/shapevisitor/AwsSdkToDafnyShapeVisitor.java index b7066908f..6d1b0549e 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/awssdk/shapevisitor/AwsSdkToDafnyShapeVisitor.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/awssdk/shapevisitor/AwsSdkToDafnyShapeVisitor.java @@ -4,6 +4,7 @@ import static software.amazon.polymorph.smithygo.utils.Constants.DAFNY_RUNTIME_GO_LIBRARY_MODULE; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.Map; import java.util.Set; import software.amazon.polymorph.smithygo.awssdk.AwsSdkGoPointableIndex; @@ -48,7 +49,7 @@ public class AwsSdkToDafnyShapeVisitor extends ShapeVisitor.Default { protected boolean isPointerType; //TODO: Ideally this shouldn't be static but with current design we need to access this across instances. private static final Map memberShapeConversionFuncMap = - new HashMap<>(); + new LinkedHashMap<>(); public AwsSdkToDafnyShapeVisitor( final GenerationContext context, diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/awssdk/shapevisitor/DafnyToAwsSdkShapeVisitor.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/awssdk/shapevisitor/DafnyToAwsSdkShapeVisitor.java index 2013cfe57..aa80be3a3 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/awssdk/shapevisitor/DafnyToAwsSdkShapeVisitor.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/awssdk/shapevisitor/DafnyToAwsSdkShapeVisitor.java @@ -49,7 +49,7 @@ public class DafnyToAwsSdkShapeVisitor extends ShapeVisitor.Default { //TODO: Ideally this shouldn't be static but with current design we need to access this across instances. private static final Map memberShapeConversionFuncMap = - new HashMap<>(); + new LinkedHashMap<>(); public DafnyToAwsSdkShapeVisitor( final GenerationContext context, 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 c853ee671..ab96a7cbe 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 @@ -3,6 +3,7 @@ import static software.amazon.polymorph.smithygo.utils.Constants.DAFNY_RUNTIME_GO_LIBRARY_MODULE; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.Map; import java.util.Set; import software.amazon.polymorph.smithygo.codegen.GenerationContext; @@ -52,7 +53,7 @@ public class DafnyToSmithyShapeVisitor extends ShapeVisitor.Default { private final boolean isOptional; //TODO: Ideally this shouldn't be static but with current design we need to access this across instances. private static final Map memberShapeConversionFuncMap = - new HashMap<>(); + new LinkedHashMap<>(); public DafnyToSmithyShapeVisitor( final GenerationContext context, diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/shapevisitor/SmithyToDafnyShapeVisitor.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/shapevisitor/SmithyToDafnyShapeVisitor.java index 574bd104d..8f777d982 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/shapevisitor/SmithyToDafnyShapeVisitor.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/shapevisitor/SmithyToDafnyShapeVisitor.java @@ -4,6 +4,7 @@ import static software.amazon.polymorph.smithygo.utils.Constants.DAFNY_RUNTIME_GO_LIBRARY_MODULE; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.Map; import java.util.Set; import software.amazon.polymorph.smithygo.codegen.GenerationContext; @@ -52,7 +53,7 @@ public class SmithyToDafnyShapeVisitor extends ShapeVisitor.Default { protected boolean isPointerType; //TODO: Ideally this shouldn't be static but with current design we need to access this across instances. private static final Map memberShapeConversionFuncMap = - new HashMap<>(); + new LinkedHashMap<>(); public SmithyToDafnyShapeVisitor( final GenerationContext context, From 998d54816366d0f33e05c3b63cc13b26b8eb956f Mon Sep 17 00:00:00 2001 From: rishav-karanjit Date: Tue, 7 Jan 2025 14:09:48 -0800 Subject: [PATCH 02/15] auto commit --- .../smithygo/awssdk/shapevisitor/AwsSdkToDafnyShapeVisitor.java | 1 - .../amazon/polymorph/smithygo/codegen/UnionGenerator.java | 1 + .../polymorph/smithygo/codegen/knowledge/GoUsageIndex.java | 2 ++ .../polymorph/smithygo/codegen/knowledge/GoValidationIndex.java | 1 + .../localservice/DafnyLocalServiceTypeConversionProtocol.java | 2 +- .../localservice/shapevisitor/DafnyToSmithyShapeVisitor.java | 1 - .../localservice/shapevisitor/SmithyToDafnyShapeVisitor.java | 1 - 7 files changed, 5 insertions(+), 4 deletions(-) diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/awssdk/shapevisitor/AwsSdkToDafnyShapeVisitor.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/awssdk/shapevisitor/AwsSdkToDafnyShapeVisitor.java index 6d1b0549e..fd621efe3 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/awssdk/shapevisitor/AwsSdkToDafnyShapeVisitor.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/awssdk/shapevisitor/AwsSdkToDafnyShapeVisitor.java @@ -3,7 +3,6 @@ import static software.amazon.polymorph.smithygo.localservice.nameresolver.Constants.DOT; import static software.amazon.polymorph.smithygo.utils.Constants.DAFNY_RUNTIME_GO_LIBRARY_MODULE; -import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; import java.util.Set; diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/UnionGenerator.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/UnionGenerator.java index 8edcc43c6..2046d9e83 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/UnionGenerator.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/UnionGenerator.java @@ -54,6 +54,7 @@ public void generateUnion(GoWriter writer) { memberShapes .stream() .map(symbolProvider::toMemberName) + .sorted() .forEach(name -> { writer.write("// " + name); }); diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/knowledge/GoUsageIndex.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/knowledge/GoUsageIndex.java index 8bd7b5226..c95beb32d 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/knowledge/GoUsageIndex.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/knowledge/GoUsageIndex.java @@ -71,6 +71,7 @@ public GoUsageIndex(Model model) { ) .stream() .map(Shape::toShapeId) + .sorted() .collect(Collectors.toList()) ); @@ -84,6 +85,7 @@ public GoUsageIndex(Model model) { ) .stream() .map(Shape::toShapeId) + .sorted() .collect(Collectors.toList()) ); }); diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/knowledge/GoValidationIndex.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/knowledge/GoValidationIndex.java index c4410f6ec..5d2bace7d 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/knowledge/GoValidationIndex.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/knowledge/GoValidationIndex.java @@ -142,6 +142,7 @@ public GoValidationIndex(Model model) { .values() .stream() .map(OperationShape::toShapeId) + .sorted() .collect(Collectors.toSet()) ) ); diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java index fb7d5e503..53bd21b88 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java @@ -358,6 +358,7 @@ public void generateSerializers(final GenerationContext context) { ); } } + }); if ( !alreadyVisited.contains(resourceShape.toShapeId()) && resourceShape @@ -407,7 +408,6 @@ public void generateSerializers(final GenerationContext context) { } ); } - }); } } generateErrorSerializer(context); 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 ab96a7cbe..3c50229d2 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 @@ -2,7 +2,6 @@ import static software.amazon.polymorph.smithygo.utils.Constants.DAFNY_RUNTIME_GO_LIBRARY_MODULE; -import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; import java.util.Set; diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/shapevisitor/SmithyToDafnyShapeVisitor.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/shapevisitor/SmithyToDafnyShapeVisitor.java index 8f777d982..68297d39c 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/shapevisitor/SmithyToDafnyShapeVisitor.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/shapevisitor/SmithyToDafnyShapeVisitor.java @@ -3,7 +3,6 @@ import static software.amazon.polymorph.smithygo.codegen.SymbolUtils.POINTABLE; import static software.amazon.polymorph.smithygo.utils.Constants.DAFNY_RUNTIME_GO_LIBRARY_MODULE; -import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; import java.util.Set; From ee9db10c391e36adf3e12dfc76cb2818c3b5a26a Mon Sep 17 00:00:00 2001 From: rishav-karanjit Date: Tue, 7 Jan 2025 14:33:31 -0800 Subject: [PATCH 03/15] auto commit --- .../awssdk/DafnyAwsSdkClientTypeConversionProtocol.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/awssdk/DafnyAwsSdkClientTypeConversionProtocol.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/awssdk/DafnyAwsSdkClientTypeConversionProtocol.java index 7ad91d582..6199f7d11 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/awssdk/DafnyAwsSdkClientTypeConversionProtocol.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/awssdk/DafnyAwsSdkClientTypeConversionProtocol.java @@ -3,9 +3,11 @@ import static software.amazon.polymorph.smithygo.localservice.DafnyLocalServiceTypeConversionProtocol.TO_DAFNY; import static software.amazon.polymorph.smithygo.localservice.DafnyLocalServiceTypeConversionProtocol.TO_NATIVE; import static software.amazon.polymorph.smithygo.utils.Constants.DAFNY_RUNTIME_GO_LIBRARY_MODULE; - +import java.util.Comparator; import java.util.HashSet; +import java.util.LinkedHashSet; import java.util.Set; +import java.util.stream.Collectors; import software.amazon.polymorph.smithygo.awssdk.shapevisitor.AwsSdkToDafnyShapeVisitor; import software.amazon.polymorph.smithygo.awssdk.shapevisitor.DafnyToAwsSdkShapeVisitor; import software.amazon.polymorph.smithygo.awssdk.shapevisitor.ShapeVisitorHelper; @@ -489,7 +491,8 @@ private void generateErrorSerializer(final GenerationContext context) { final Set alreadyVisited = new HashSet<>(); final var errorShapes = awsNormalizedModel.getShapesWithTrait( ErrorTrait.class - ); + ).stream() + .sorted(Comparator.comparing(shape -> shape.getId().getName())).collect(Collectors.toCollection(LinkedHashSet::new));; for (final var errorShape : errorShapes) { if ( From 79e680900fd84e9adde6b8e280589adc7aa4611a Mon Sep 17 00:00:00 2001 From: rishav-karanjit Date: Tue, 7 Jan 2025 14:45:20 -0800 Subject: [PATCH 04/15] auto commit --- .../awssdk/DafnyAwsSdkClientTypeConversionProtocol.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/awssdk/DafnyAwsSdkClientTypeConversionProtocol.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/awssdk/DafnyAwsSdkClientTypeConversionProtocol.java index 6199f7d11..be85289a6 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/awssdk/DafnyAwsSdkClientTypeConversionProtocol.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/awssdk/DafnyAwsSdkClientTypeConversionProtocol.java @@ -492,7 +492,7 @@ private void generateErrorSerializer(final GenerationContext context) { final var errorShapes = awsNormalizedModel.getShapesWithTrait( ErrorTrait.class ).stream() - .sorted(Comparator.comparing(shape -> shape.getId().getName())).collect(Collectors.toCollection(LinkedHashSet::new));; + .sorted(Comparator.comparing(shape -> shape.getId().getName())).collect(Collectors.toCollection(LinkedHashSet::new)); for (final var errorShape : errorShapes) { if ( @@ -639,7 +639,8 @@ private void generateErrorDeserializer(final GenerationContext context) { final Set alreadyVisited = new HashSet<>(); final var errorShapes = awsNormalizedModel.getShapesWithTrait( ErrorTrait.class - ); + ).stream() + .sorted(Comparator.comparing(shape -> shape.getId().getName())).collect(Collectors.toCollection(LinkedHashSet::new)); for (final var errorShape : errorShapes) { if ( !errorShape From 851a29b326481d0e785917f3f757c9e8a024b45c Mon Sep 17 00:00:00 2001 From: rishav-karanjit Date: Tue, 7 Jan 2025 15:16:03 -0800 Subject: [PATCH 05/15] auto commit --- .../awssdk/DafnyAwsSdkClientTypeConversionProtocol.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/awssdk/DafnyAwsSdkClientTypeConversionProtocol.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/awssdk/DafnyAwsSdkClientTypeConversionProtocol.java index be85289a6..9ffd6bb5f 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/awssdk/DafnyAwsSdkClientTypeConversionProtocol.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/awssdk/DafnyAwsSdkClientTypeConversionProtocol.java @@ -753,9 +753,7 @@ func Error_FromDafny(err $L.Error)(error) { """, DafnyNameResolver.dafnyTypesNamespace(serviceShape), writer.consumer(w -> { - for (final var error : awsNormalizedModel.getShapesWithTrait( - ErrorTrait.class - )) { + for (final var error : errorShapes) { w.write( """ if err.Is_$L() { From deafa7bcef0a28785080dc9ad0c1dbc7e059a632 Mon Sep 17 00:00:00 2001 From: rishav-karanjit Date: Tue, 7 Jan 2025 16:26:43 -0800 Subject: [PATCH 06/15] auto commit --- .../awssdk/DafnyAwsSdkClientTypeConversionProtocol.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/awssdk/DafnyAwsSdkClientTypeConversionProtocol.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/awssdk/DafnyAwsSdkClientTypeConversionProtocol.java index 9ffd6bb5f..c66b07a97 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/awssdk/DafnyAwsSdkClientTypeConversionProtocol.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/awssdk/DafnyAwsSdkClientTypeConversionProtocol.java @@ -64,6 +64,8 @@ public void generateSerializers(final GenerationContext context) { final var writerDelegator = context.writerDelegator(); serviceShape .getOperations() + .stream() + .sorted() .forEach(eachOperation -> { final var awsNormalizedOperation = awsNormalizedModel.expectShape( eachOperation, @@ -215,6 +217,8 @@ public void generateDeserializers(final GenerationContext context) { serviceShape .getOperations() + .stream() + .sorted() .forEach(eachOperation -> { final var awsNormalizedOperationShape = awsNormalizedModel.expectShape( eachOperation, From fcb691d263fdd0e128916e6466f55f50cca9e99d Mon Sep 17 00:00:00 2001 From: rishav-karanjit Date: Tue, 7 Jan 2025 16:29:59 -0800 Subject: [PATCH 07/15] add sorted --- .../DafnyLocalServiceTypeConversionProtocol.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java index 53bd21b88..530a08676 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java @@ -65,6 +65,8 @@ public void generateSerializers(final GenerationContext context) { final var writerDelegator = context.writerDelegator(); serviceShape .getOperations() + .stream() + .sorted() .forEach(eachOperation -> { final var operation = model.expectShape( eachOperation, @@ -215,6 +217,8 @@ public void generateSerializers(final GenerationContext context) { ); resourceShape .getOperations() + .stream() + .sorted() .forEach(eachOperation -> { final var operation = model.expectShape( eachOperation, @@ -425,6 +429,8 @@ public void generateDeserializers(final GenerationContext context) { serviceShape .getOperations() + .stream() + .sorted() .forEach(eachOperation -> { final var operation = context .model() @@ -590,6 +596,8 @@ public void generateDeserializers(final GenerationContext context) { .expectShape(resource, ResourceShape.class); resourceShape .getOperations() + .stream() + .sorted() .forEach(eachOperation -> { final var operation = context .model() From 27bd15a1d50d8394a67e239cce645ad96b3f4923 Mon Sep 17 00:00:00 2001 From: rishav-karanjit Date: Wed, 8 Jan 2025 08:16:18 -0800 Subject: [PATCH 08/15] auto commit --- .../polymorph/smithygo/codegen/ValidationGenerator.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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 60b17ca33..376077c6b 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 @@ -4,6 +4,7 @@ import java.math.BigDecimal; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.Map; import java.util.Optional; import software.amazon.polymorph.smithygo.localservice.nameresolver.SmithyNameResolver; @@ -45,9 +46,9 @@ public class ValidationGenerator { } """; private static final Map validationFuncMap = - new HashMap<>(); + new LinkedHashMap<>(); private static final Map validationFuncInputTypeMap = - new HashMap<>(); + new LinkedHashMap<>(); public ValidationGenerator( final GenerationContext context, From 97fb363ba1b9628a464228c224e8a233aaad8601 Mon Sep 17 00:00:00 2001 From: rishav-karanjit Date: Wed, 8 Jan 2025 11:10:57 -0800 Subject: [PATCH 09/15] sorting --- .../localservice/DafnyLocalServiceGenerator.java | 13 +++++++++---- .../DafnyLocalServiceTypeConversionProtocol.java | 14 ++++++++++---- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceGenerator.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceGenerator.java index c8f42f114..82c6f80ab 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceGenerator.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceGenerator.java @@ -5,7 +5,9 @@ import static software.amazon.polymorph.smithygo.codegen.SymbolUtils.POINTABLE; import static software.amazon.polymorph.smithygo.utils.Constants.DAFNY_RUNTIME_GO_LIBRARY_MODULE; - +import java.util.Comparator; +import java.util.LinkedHashSet; +import java.util.stream.Collectors; import software.amazon.polymorph.smithygo.codegen.GenerationContext; import software.amazon.polymorph.smithygo.codegen.GoDelegator; import software.amazon.polymorph.smithygo.codegen.GoWriter; @@ -623,7 +625,8 @@ void generateShim() { } void shimErrors(GoWriter writer) { - for (final var error : model.getShapesWithTrait(ErrorTrait.class)) { + for (final var error : model.getShapesWithTrait(ErrorTrait.class).stream() + .sorted(Comparator.comparing(shape -> shape.getId().getName())).collect(Collectors.toCollection(LinkedHashSet::new))) { writer.write( """ case $L.$L: @@ -641,7 +644,8 @@ void shimErrors(GoWriter writer) { } void resourceErrors(GoWriter writer) { - for (final var error : model.getShapesWithTrait(ErrorTrait.class)) { + for (final var error : model.getShapesWithTrait(ErrorTrait.class).stream() + .sorted(Comparator.comparing(shape -> shape.getId().getName())).collect(Collectors.toCollection(LinkedHashSet::new))) { writer.write( """ case $L: @@ -710,7 +714,8 @@ void generateUnmodelledErrors(GenerationContext context) { } void generateReferencedResources(final GenerationContext context) { - final var refResources = model.getShapesWithTrait(ReferenceTrait.class); + final var refResources = model.getShapesWithTrait(ReferenceTrait.class).stream() + .sorted(Comparator.comparing(shape -> shape.getId().getName())).collect(Collectors.toCollection(LinkedHashSet::new)); for (final var refResource : refResources) { if (!refResource.expectTrait(ReferenceTrait.class).isService()) { final var resource = refResource diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java index 530a08676..d63af7c6b 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java @@ -4,7 +4,9 @@ import static software.amazon.polymorph.smithygo.utils.Constants.DAFNY_RUNTIME_GO_LIBRARY_MODULE; import java.util.Collection; +import java.util.Comparator; import java.util.HashSet; +import java.util.LinkedHashSet; import java.util.LinkedList; import java.util.Set; import java.util.stream.Collectors; @@ -205,7 +207,8 @@ public void generateSerializers(final GenerationContext context) { final var refResources = context .model() - .getShapesWithTrait(ReferenceTrait.class); + .getShapesWithTrait(ReferenceTrait.class).stream() + .sorted(Comparator.comparing(shape -> shape.getId().getName())).collect(Collectors.toCollection(LinkedHashSet::new)); for (final var refResource : refResources) { final var resource = refResource .expectTrait(ReferenceTrait.class) @@ -584,7 +587,8 @@ public void generateDeserializers(final GenerationContext context) { final var refResources = context .model() - .getShapesWithTrait(ReferenceTrait.class); + .getShapesWithTrait(ReferenceTrait.class).stream() + .sorted(Comparator.comparing(shape -> shape.getId().getName())).collect(Collectors.toCollection(LinkedHashSet::new)); for (final var refResource : refResources) { final var resource = refResource .expectTrait(ReferenceTrait.class) @@ -984,7 +988,8 @@ private void generateErrorSerializer(final GenerationContext context) { final var serviceShape = context.settings().getService(context.model()); final var errorShapes = context .model() - .getShapesWithTrait(ErrorTrait.class); + .getShapesWithTrait(ErrorTrait.class).stream() + .sorted(Comparator.comparing(shape -> shape.getId().getName())).collect(Collectors.toCollection(LinkedHashSet::new)); for (final var errorShape : errorShapes) { if ( @@ -1340,7 +1345,8 @@ private void generateErrorDeserializer(final GenerationContext context) { final var serviceShape = context.settings().getService(context.model()); final var errorShapes = context .model() - .getShapesWithTrait(ErrorTrait.class); + .getShapesWithTrait(ErrorTrait.class).stream() + .sorted(Comparator.comparing(shape -> shape.getId().getName())).collect(Collectors.toCollection(LinkedHashSet::new)); for (final var errorShape : errorShapes) { if ( !errorShape From 7c7f8f2a806730c3e25b306f9ae673c615b41187 Mon Sep 17 00:00:00 2001 From: rishav-karanjit Date: Wed, 8 Jan 2025 11:31:29 -0800 Subject: [PATCH 10/15] sorting --- .../DafnyAwsSdkClientTypeConversionProtocol.java | 2 +- .../localservice/DafnyLocalServiceGenerator.java | 7 ++++--- .../DafnyLocalServiceTypeConversionProtocol.java | 10 ++++++---- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/awssdk/DafnyAwsSdkClientTypeConversionProtocol.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/awssdk/DafnyAwsSdkClientTypeConversionProtocol.java index c66b07a97..659a2c36e 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/awssdk/DafnyAwsSdkClientTypeConversionProtocol.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/awssdk/DafnyAwsSdkClientTypeConversionProtocol.java @@ -496,7 +496,7 @@ private void generateErrorSerializer(final GenerationContext context) { final var errorShapes = awsNormalizedModel.getShapesWithTrait( ErrorTrait.class ).stream() - .sorted(Comparator.comparing(shape -> shape.getId().getName())).collect(Collectors.toCollection(LinkedHashSet::new)); + .sorted().collect(Collectors.toCollection(LinkedHashSet::new)); for (final var errorShape : errorShapes) { if ( diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceGenerator.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceGenerator.java index 82c6f80ab..20504132e 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceGenerator.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceGenerator.java @@ -92,6 +92,7 @@ void generateClient(GoWriter writer) { .getNamespace() .equals(service.getId().getNamespace()) ) + .sorted() .forEach(unionShape -> { new UnionGenerator(model, symbolProvider, unionShape) .generateUnion(writer1); @@ -626,7 +627,7 @@ void generateShim() { void shimErrors(GoWriter writer) { for (final var error : model.getShapesWithTrait(ErrorTrait.class).stream() - .sorted(Comparator.comparing(shape -> shape.getId().getName())).collect(Collectors.toCollection(LinkedHashSet::new))) { + .sorted().collect(Collectors.toCollection(LinkedHashSet::new))) { writer.write( """ case $L.$L: @@ -645,7 +646,7 @@ void shimErrors(GoWriter writer) { void resourceErrors(GoWriter writer) { for (final var error : model.getShapesWithTrait(ErrorTrait.class).stream() - .sorted(Comparator.comparing(shape -> shape.getId().getName())).collect(Collectors.toCollection(LinkedHashSet::new))) { + .sorted().collect(Collectors.toCollection(LinkedHashSet::new))) { writer.write( """ case $L: @@ -715,7 +716,7 @@ void generateUnmodelledErrors(GenerationContext context) { void generateReferencedResources(final GenerationContext context) { final var refResources = model.getShapesWithTrait(ReferenceTrait.class).stream() - .sorted(Comparator.comparing(shape -> shape.getId().getName())).collect(Collectors.toCollection(LinkedHashSet::new)); + .sorted().collect(Collectors.toCollection(LinkedHashSet::new)); for (final var refResource : refResources) { if (!refResource.expectTrait(ReferenceTrait.class).isService()) { final var resource = refResource diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java index d63af7c6b..c6796ddb6 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java @@ -208,7 +208,7 @@ public void generateSerializers(final GenerationContext context) { final var refResources = context .model() .getShapesWithTrait(ReferenceTrait.class).stream() - .sorted(Comparator.comparing(shape -> shape.getId().getName())).collect(Collectors.toCollection(LinkedHashSet::new)); + .sorted().collect(Collectors.toCollection(LinkedHashSet::new)); for (final var refResource : refResources) { final var resource = refResource .expectTrait(ReferenceTrait.class) @@ -588,7 +588,7 @@ public void generateDeserializers(final GenerationContext context) { final var refResources = context .model() .getShapesWithTrait(ReferenceTrait.class).stream() - .sorted(Comparator.comparing(shape -> shape.getId().getName())).collect(Collectors.toCollection(LinkedHashSet::new)); + .sorted().collect(Collectors.toCollection(LinkedHashSet::new)); for (final var refResource : refResources) { final var resource = refResource .expectTrait(ReferenceTrait.class) @@ -989,7 +989,7 @@ private void generateErrorSerializer(final GenerationContext context) { final var errorShapes = context .model() .getShapesWithTrait(ErrorTrait.class).stream() - .sorted(Comparator.comparing(shape -> shape.getId().getName())).collect(Collectors.toCollection(LinkedHashSet::new)); + .sorted().collect(Collectors.toCollection(LinkedHashSet::new)); for (final var errorShape : errorShapes) { if ( @@ -1089,6 +1089,7 @@ func OpaqueError_Input_ToDafny(nativeInput $L.OpaqueError)($L.Error) { .filter(shape -> ModelUtils.isInServiceNamespace(shape.getId(), serviceShape) ) + .sorted() .collect(Collectors.toSet()); context @@ -1346,7 +1347,7 @@ private void generateErrorDeserializer(final GenerationContext context) { final var errorShapes = context .model() .getShapesWithTrait(ErrorTrait.class).stream() - .sorted(Comparator.comparing(shape -> shape.getId().getName())).collect(Collectors.toCollection(LinkedHashSet::new)); + .sorted().collect(Collectors.toCollection(LinkedHashSet::new)); for (final var errorShape : errorShapes) { if ( !errorShape @@ -1471,6 +1472,7 @@ func OpaqueError_Output_FromDafny(dafnyOutput $L.Error)($L.OpaqueError) { .filter(shape -> ModelUtils.isInServiceNamespace(shape.getId(), serviceShape) ) + .sorted() .collect(Collectors.toSet()); context From c3ebb53bb873832cc9ebd60064b92502f5200668 Mon Sep 17 00:00:00 2001 From: rishav-karanjit Date: Wed, 8 Jan 2025 13:13:34 -0800 Subject: [PATCH 11/15] sorting --- .../amazon/polymorph/smithygo/codegen/UnionGenerator.java | 1 + .../localservice/DafnyLocalServiceTypeConversionProtocol.java | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/UnionGenerator.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/UnionGenerator.java index 2046d9e83..328743d0b 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/UnionGenerator.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/UnionGenerator.java @@ -49,6 +49,7 @@ public void generateUnion(GoWriter writer) { .values() .stream() .filter(memberShape -> !isEventStreamErrorMember(memberShape)) + .sorted() .collect(Collectors.toCollection(TreeSet::new)); memberShapes diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java index c6796ddb6..561aa135c 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java @@ -1090,7 +1090,7 @@ func OpaqueError_Input_ToDafny(nativeInput $L.OpaqueError)($L.Error) { ModelUtils.isInServiceNamespace(shape.getId(), serviceShape) ) .sorted() - .collect(Collectors.toSet()); + .collect(Collectors.toCollection(LinkedHashSet::new)); context .writerDelegator() @@ -1473,7 +1473,7 @@ func OpaqueError_Output_FromDafny(dafnyOutput $L.Error)($L.OpaqueError) { ModelUtils.isInServiceNamespace(shape.getId(), serviceShape) ) .sorted() - .collect(Collectors.toSet()); + .collect(Collectors.toCollection(LinkedHashSet::new)); context .writerDelegator() From 2a88d56ed940d1e21897bafaecc318b865356c8c Mon Sep 17 00:00:00 2001 From: rishav-karanjit Date: Wed, 8 Jan 2025 13:35:28 -0800 Subject: [PATCH 12/15] set of linkedset --- ...fnyAwsSdkClientTypeConversionProtocol.java | 19 +-- .../DafnyLocalServiceGenerator.java | 22 +++- ...fnyLocalServiceTypeConversionProtocol.java | 112 ++++++++++-------- 3 files changed, 87 insertions(+), 66 deletions(-) diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/awssdk/DafnyAwsSdkClientTypeConversionProtocol.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/awssdk/DafnyAwsSdkClientTypeConversionProtocol.java index 659a2c36e..af18afe60 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/awssdk/DafnyAwsSdkClientTypeConversionProtocol.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/awssdk/DafnyAwsSdkClientTypeConversionProtocol.java @@ -3,6 +3,7 @@ import static software.amazon.polymorph.smithygo.localservice.DafnyLocalServiceTypeConversionProtocol.TO_DAFNY; import static software.amazon.polymorph.smithygo.localservice.DafnyLocalServiceTypeConversionProtocol.TO_NATIVE; import static software.amazon.polymorph.smithygo.utils.Constants.DAFNY_RUNTIME_GO_LIBRARY_MODULE; + import java.util.Comparator; import java.util.HashSet; import java.util.LinkedHashSet; @@ -493,10 +494,11 @@ private void generateResponseDeserializer( private void generateErrorSerializer(final GenerationContext context) { final Set alreadyVisited = new HashSet<>(); - final var errorShapes = awsNormalizedModel.getShapesWithTrait( - ErrorTrait.class - ).stream() - .sorted().collect(Collectors.toCollection(LinkedHashSet::new)); + final var errorShapes = awsNormalizedModel + .getShapesWithTrait(ErrorTrait.class) + .stream() + .sorted() + .collect(Collectors.toCollection(LinkedHashSet::new)); for (final var errorShape : errorShapes) { if ( @@ -641,10 +643,11 @@ func Error_ToDafny(err error)($L.Error) { private void generateErrorDeserializer(final GenerationContext context) { final Set alreadyVisited = new HashSet<>(); - final var errorShapes = awsNormalizedModel.getShapesWithTrait( - ErrorTrait.class - ).stream() - .sorted(Comparator.comparing(shape -> shape.getId().getName())).collect(Collectors.toCollection(LinkedHashSet::new)); + final var errorShapes = awsNormalizedModel + .getShapesWithTrait(ErrorTrait.class) + .stream() + .sorted(Comparator.comparing(shape -> shape.getId().getName())) + .collect(Collectors.toCollection(LinkedHashSet::new)); for (final var errorShape : errorShapes) { if ( !errorShape diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceGenerator.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceGenerator.java index 20504132e..50def049a 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceGenerator.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceGenerator.java @@ -5,6 +5,7 @@ import static software.amazon.polymorph.smithygo.codegen.SymbolUtils.POINTABLE; import static software.amazon.polymorph.smithygo.utils.Constants.DAFNY_RUNTIME_GO_LIBRARY_MODULE; + import java.util.Comparator; import java.util.LinkedHashSet; import java.util.stream.Collectors; @@ -626,8 +627,11 @@ void generateShim() { } void shimErrors(GoWriter writer) { - for (final var error : model.getShapesWithTrait(ErrorTrait.class).stream() - .sorted().collect(Collectors.toCollection(LinkedHashSet::new))) { + for (final var error : model + .getShapesWithTrait(ErrorTrait.class) + .stream() + .sorted() + .collect(Collectors.toCollection(LinkedHashSet::new))) { writer.write( """ case $L.$L: @@ -645,8 +649,11 @@ void shimErrors(GoWriter writer) { } void resourceErrors(GoWriter writer) { - for (final var error : model.getShapesWithTrait(ErrorTrait.class).stream() - .sorted().collect(Collectors.toCollection(LinkedHashSet::new))) { + for (final var error : model + .getShapesWithTrait(ErrorTrait.class) + .stream() + .sorted() + .collect(Collectors.toCollection(LinkedHashSet::new))) { writer.write( """ case $L: @@ -715,8 +722,11 @@ void generateUnmodelledErrors(GenerationContext context) { } void generateReferencedResources(final GenerationContext context) { - final var refResources = model.getShapesWithTrait(ReferenceTrait.class).stream() - .sorted().collect(Collectors.toCollection(LinkedHashSet::new)); + final var refResources = model + .getShapesWithTrait(ReferenceTrait.class) + .stream() + .sorted() + .collect(Collectors.toCollection(LinkedHashSet::new)); for (final var refResource : refResources) { if (!refResource.expectTrait(ReferenceTrait.class).isService()) { final var resource = refResource diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java index 561aa135c..bab194b7f 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java @@ -207,8 +207,10 @@ public void generateSerializers(final GenerationContext context) { final var refResources = context .model() - .getShapesWithTrait(ReferenceTrait.class).stream() - .sorted().collect(Collectors.toCollection(LinkedHashSet::new)); + .getShapesWithTrait(ReferenceTrait.class) + .stream() + .sorted() + .collect(Collectors.toCollection(LinkedHashSet::new)); for (final var refResource : refResources) { final var resource = refResource .expectTrait(ReferenceTrait.class) @@ -366,55 +368,55 @@ public void generateSerializers(final GenerationContext context) { } } }); - if ( - !alreadyVisited.contains(resourceShape.toShapeId()) && - resourceShape - .toShapeId() - .getNamespace() - .equals(serviceShape.toShapeId().getNamespace()) - ) { - alreadyVisited.add(resourceShape.toShapeId()); - writerDelegator.useFileWriter( - "%s/%s".formatted( - SmithyNameResolver.shapeNamespace(serviceShape), - TO_DAFNY - ), + if ( + !alreadyVisited.contains(resourceShape.toShapeId()) && + resourceShape + .toShapeId() + .getNamespace() + .equals(serviceShape.toShapeId().getNamespace()) + ) { + alreadyVisited.add(resourceShape.toShapeId()); + writerDelegator.useFileWriter( + "%s/%s".formatted( SmithyNameResolver.shapeNamespace(serviceShape), - writer -> { - var goBody = - """ - return nativeResource.(*%s).Impl - """.formatted(resourceShape.getId().getName()); - if (resourceShape.hasTrait(ExtendableTrait.class)) { - goBody = - """ - val, ok := nativeResource.(*%s) - if ok { - return val.Impl - } - return %s{&%sNativeWrapper{Impl: nativeResource}}.Impl - """.formatted( - resourceShape.getId().getName(), - resourceShape.getId().getName(), - resourceShape.getId().getName() - ); + TO_DAFNY + ), + SmithyNameResolver.shapeNamespace(serviceShape), + writer -> { + var goBody = + """ + return nativeResource.(*%s).Impl + """.formatted(resourceShape.getId().getName()); + if (resourceShape.hasTrait(ExtendableTrait.class)) { + goBody = + """ + val, ok := nativeResource.(*%s) + if ok { + return val.Impl } - writer.write( - """ - func $L_ToDafny(nativeResource $L.I$L) $L.I$L { - $L - } - """, - resourceShape.getId().getName(), - SmithyNameResolver.smithyTypesNamespace(resourceShape), - resourceShape.getId().getName(), - DafnyNameResolver.dafnyTypesNamespace(resourceShape), - resourceShape.getId().getName(), - goBody - ); + return %s{&%sNativeWrapper{Impl: nativeResource}}.Impl + """.formatted( + resourceShape.getId().getName(), + resourceShape.getId().getName(), + resourceShape.getId().getName() + ); + } + writer.write( + """ + func $L_ToDafny(nativeResource $L.I$L) $L.I$L { + $L } + """, + resourceShape.getId().getName(), + SmithyNameResolver.smithyTypesNamespace(resourceShape), + resourceShape.getId().getName(), + DafnyNameResolver.dafnyTypesNamespace(resourceShape), + resourceShape.getId().getName(), + goBody ); } + ); + } } } generateErrorSerializer(context); @@ -587,8 +589,10 @@ public void generateDeserializers(final GenerationContext context) { final var refResources = context .model() - .getShapesWithTrait(ReferenceTrait.class).stream() - .sorted().collect(Collectors.toCollection(LinkedHashSet::new)); + .getShapesWithTrait(ReferenceTrait.class) + .stream() + .sorted() + .collect(Collectors.toCollection(LinkedHashSet::new)); for (final var refResource : refResources) { final var resource = refResource .expectTrait(ReferenceTrait.class) @@ -988,8 +992,10 @@ private void generateErrorSerializer(final GenerationContext context) { final var serviceShape = context.settings().getService(context.model()); final var errorShapes = context .model() - .getShapesWithTrait(ErrorTrait.class).stream() - .sorted().collect(Collectors.toCollection(LinkedHashSet::new)); + .getShapesWithTrait(ErrorTrait.class) + .stream() + .sorted() + .collect(Collectors.toCollection(LinkedHashSet::new)); for (final var errorShape : errorShapes) { if ( @@ -1346,8 +1352,10 @@ private void generateErrorDeserializer(final GenerationContext context) { final var serviceShape = context.settings().getService(context.model()); final var errorShapes = context .model() - .getShapesWithTrait(ErrorTrait.class).stream() - .sorted().collect(Collectors.toCollection(LinkedHashSet::new)); + .getShapesWithTrait(ErrorTrait.class) + .stream() + .sorted() + .collect(Collectors.toCollection(LinkedHashSet::new)); for (final var errorShape : errorShapes) { if ( !errorShape From 7beb619ff5c30a3ea9d1fdefecaae645d34b5e55 Mon Sep 17 00:00:00 2001 From: rishav-karanjit Date: Wed, 8 Jan 2025 13:59:30 -0800 Subject: [PATCH 13/15] remove redundant imports --- .../smithygo/localservice/DafnyLocalServiceGenerator.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceGenerator.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceGenerator.java index 50def049a..3f9a88006 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceGenerator.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceGenerator.java @@ -6,7 +6,6 @@ import static software.amazon.polymorph.smithygo.codegen.SymbolUtils.POINTABLE; import static software.amazon.polymorph.smithygo.utils.Constants.DAFNY_RUNTIME_GO_LIBRARY_MODULE; -import java.util.Comparator; import java.util.LinkedHashSet; import java.util.stream.Collectors; import software.amazon.polymorph.smithygo.codegen.GenerationContext; @@ -31,10 +30,8 @@ import software.amazon.smithy.model.shapes.OperationShape; import software.amazon.smithy.model.shapes.ResourceShape; import software.amazon.smithy.model.shapes.ServiceShape; -import software.amazon.smithy.model.shapes.Shape; import software.amazon.smithy.model.traits.ErrorTrait; import software.amazon.smithy.model.traits.UnitTypeTrait; -import software.amazon.smithy.utils.StringUtils; public class DafnyLocalServiceGenerator implements Runnable { From 7fa954e1d27a974596973c247ddf16d4f4dbc0d7 Mon Sep 17 00:00:00 2001 From: rishav-karanjit Date: Wed, 8 Jan 2025 14:21:21 -0800 Subject: [PATCH 14/15] auto commit --- .../awssdk/DafnyAwsSdkClientTypeConversionProtocol.java | 3 +-- .../localservice/DafnyLocalServiceTypeConversionProtocol.java | 1 - 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/awssdk/DafnyAwsSdkClientTypeConversionProtocol.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/awssdk/DafnyAwsSdkClientTypeConversionProtocol.java index af18afe60..ca4599cc4 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/awssdk/DafnyAwsSdkClientTypeConversionProtocol.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/awssdk/DafnyAwsSdkClientTypeConversionProtocol.java @@ -4,7 +4,6 @@ import static software.amazon.polymorph.smithygo.localservice.DafnyLocalServiceTypeConversionProtocol.TO_NATIVE; import static software.amazon.polymorph.smithygo.utils.Constants.DAFNY_RUNTIME_GO_LIBRARY_MODULE; -import java.util.Comparator; import java.util.HashSet; import java.util.LinkedHashSet; import java.util.Set; @@ -646,7 +645,7 @@ private void generateErrorDeserializer(final GenerationContext context) { final var errorShapes = awsNormalizedModel .getShapesWithTrait(ErrorTrait.class) .stream() - .sorted(Comparator.comparing(shape -> shape.getId().getName())) + .sorted() .collect(Collectors.toCollection(LinkedHashSet::new)); for (final var errorShape : errorShapes) { if ( diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java index bab194b7f..cf1569a24 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java @@ -4,7 +4,6 @@ import static software.amazon.polymorph.smithygo.utils.Constants.DAFNY_RUNTIME_GO_LIBRARY_MODULE; import java.util.Collection; -import java.util.Comparator; import java.util.HashSet; import java.util.LinkedHashSet; import java.util.LinkedList; From e3e2f49bf59c565a8eb3b765207913de5733af60 Mon Sep 17 00:00:00 2001 From: rishav-karanjit Date: Wed, 8 Jan 2025 15:27:57 -0800 Subject: [PATCH 15/15] fix unintended code change --- ...fnyLocalServiceTypeConversionProtocol.java | 90 +++++++++---------- 1 file changed, 45 insertions(+), 45 deletions(-) diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java index cf1569a24..df365be41 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java @@ -366,56 +366,56 @@ public void generateSerializers(final GenerationContext context) { ); } } - }); - if ( - !alreadyVisited.contains(resourceShape.toShapeId()) && - resourceShape - .toShapeId() - .getNamespace() - .equals(serviceShape.toShapeId().getNamespace()) - ) { - alreadyVisited.add(resourceShape.toShapeId()); - writerDelegator.useFileWriter( - "%s/%s".formatted( + if ( + !alreadyVisited.contains(resourceShape.toShapeId()) && + resourceShape + .toShapeId() + .getNamespace() + .equals(serviceShape.toShapeId().getNamespace()) + ) { + alreadyVisited.add(resourceShape.toShapeId()); + writerDelegator.useFileWriter( + "%s/%s".formatted( + SmithyNameResolver.shapeNamespace(serviceShape), + TO_DAFNY + ), SmithyNameResolver.shapeNamespace(serviceShape), - TO_DAFNY - ), - SmithyNameResolver.shapeNamespace(serviceShape), - writer -> { - var goBody = - """ - return nativeResource.(*%s).Impl - """.formatted(resourceShape.getId().getName()); - if (resourceShape.hasTrait(ExtendableTrait.class)) { - goBody = - """ - val, ok := nativeResource.(*%s) - if ok { - return val.Impl + writer -> { + var goBody = + """ + return nativeResource.(*%s).Impl + """.formatted(resourceShape.getId().getName()); + if (resourceShape.hasTrait(ExtendableTrait.class)) { + goBody = + """ + val, ok := nativeResource.(*%s) + if ok { + return val.Impl + } + return %s{&%sNativeWrapper{Impl: nativeResource}}.Impl + """.formatted( + resourceShape.getId().getName(), + resourceShape.getId().getName(), + resourceShape.getId().getName() + ); } - return %s{&%sNativeWrapper{Impl: nativeResource}}.Impl - """.formatted( - resourceShape.getId().getName(), - resourceShape.getId().getName(), - resourceShape.getId().getName() - ); - } - writer.write( - """ - func $L_ToDafny(nativeResource $L.I$L) $L.I$L { - $L + writer.write( + """ + func $L_ToDafny(nativeResource $L.I$L) $L.I$L { + $L + } + """, + resourceShape.getId().getName(), + SmithyNameResolver.smithyTypesNamespace(resourceShape), + resourceShape.getId().getName(), + DafnyNameResolver.dafnyTypesNamespace(resourceShape), + resourceShape.getId().getName(), + goBody + ); } - """, - resourceShape.getId().getName(), - SmithyNameResolver.smithyTypesNamespace(resourceShape), - resourceShape.getId().getName(), - DafnyNameResolver.dafnyTypesNamespace(resourceShape), - resourceShape.getId().getName(), - goBody ); } - ); - } + }); } } generateErrorSerializer(context);