Unverified Commit cba3edfb authored by Fahad Zubair's avatar Fahad Zubair Committed by GitHub
Browse files

Refactor the `as_validation_exception_field` function definition in...

Refactor the `as_validation_exception_field` function definition in `ServerBuilderConstraintViolations`. (#3719)

This PR refactors the code to limit the visibility of
`crate::model::ValidationExceptionField` to only those decorators and
associated classes that are invoked when
`smithy.framework#ValidationException` is being used.

More information is in [this
issue](https://github.com/smithy-lang/smithy-rs/issues/3718).

Closes: [3178](https://github.com/smithy-lang/smithy-rs/issues/3718

)

---------

Co-authored-by: default avatarFahad Zubair <fahadzub@amazon.com>
Co-authored-by: default avatardavid-perez <d@vidp.dev>
parent b7488786
Loading
Loading
Loading
Loading
+20 −15
Original line number Diff line number Diff line
@@ -237,8 +237,12 @@ class ValidationExceptionWithReasonConversionGenerator(private val codegenContex
        }
    }

    override fun builderConstraintViolationImplBlock(constraintViolations: Collection<ConstraintViolation>) =
    override fun builderConstraintViolationFn(constraintViolations: Collection<ConstraintViolation>) =
        writable {
            rustBlockTemplate(
                "pub(crate) fn as_validation_exception_field(self, path: #{String}) -> crate::model::ValidationExceptionField",
                "String" to RuntimeType.String,
            ) {
                rustBlock("match self") {
                    constraintViolations.forEach {
                        if (it.hasInner()) {
@@ -257,6 +261,7 @@ class ValidationExceptionWithReasonConversionGenerator(private val codegenContex
                    }
                }
            }
        }

    override fun collectionShapeConstraintViolationImplBlock(
        collectionConstraintsInfo: Collection<CollectionTraitInfo>,
+19 −14
Original line number Diff line number Diff line
@@ -190,8 +190,12 @@ class SmithyValidationExceptionConversionGenerator(private val codegenContext: S
            )
        }

    override fun builderConstraintViolationImplBlock(constraintViolations: Collection<ConstraintViolation>) =
    override fun builderConstraintViolationFn(constraintViolations: Collection<ConstraintViolation>) =
        writable {
            rustBlockTemplate(
                "pub(crate) fn as_validation_exception_field(self, path: #{String}) -> crate::model::ValidationExceptionField",
                "String" to RuntimeType.String,
            ) {
                rustBlock("match self") {
                    constraintViolations.forEach {
                        if (it.hasInner()) {
@@ -209,6 +213,7 @@ class SmithyValidationExceptionConversionGenerator(private val codegenContext: S
                    }
                }
            }
        }

    override fun collectionShapeConstraintViolationImplBlock(
        collectionConstraintsInfo: Collection<CollectionTraitInfo>,
+2 −4
Original line number Diff line number Diff line
@@ -171,12 +171,10 @@ class ServerBuilderConstraintViolations(
        writer.rustTemplate(
            """
            impl ConstraintViolation {
                pub(crate) fn as_validation_exception_field(self, path: #{String}) -> crate::model::ValidationExceptionField {
                    #{ValidationExceptionFieldWritable:W}
                }
                #{ValidationExceptionFnWritable:W}
            }
            """,
            "ValidationExceptionFieldWritable" to validationExceptionConversionGenerator.builderConstraintViolationImplBlock((all)),
            "ValidationExceptionFnWritable" to validationExceptionConversionGenerator.builderConstraintViolationFn((all)),
            "String" to RuntimeType.String,
        )
    }
+1 −1
Original line number Diff line number Diff line
@@ -47,7 +47,7 @@ interface ValidationExceptionConversionGenerator {
        model: Model,
    ): Writable

    fun builderConstraintViolationImplBlock(constraintViolations: Collection<ConstraintViolation>): Writable
    fun builderConstraintViolationFn(constraintViolations: Collection<ConstraintViolation>): Writable

    fun collectionShapeConstraintViolationImplBlock(
        collectionConstraintsInfo: Collection<CollectionTraitInfo>,