Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • O openapi-generator
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 3,476
    • Issues 3,476
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 402
    • Merge requests 402
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Package Registry
    • Infrastructure Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • OpenAPI Tools
  • openapi-generator
  • Issues
  • #4268
Closed
Open
Issue created Oct 25, 2019 by Administrator@rootContributor

[BUG][SPRING] Spring's validation behavior is different depending on how annotations are used

Created by: lehphyro

Description

Spring's behavior is different depending on whether @Validated is present on the class-level:

  • If it's present, ConstraintViolationException is thrown if there are validation errors.
  • If it's not present, MethodArgumentNotValidException is thrown if there are validation errors.

This affects the way validation errors are converted to response to clients because the conversion implementation needs to be completely different.

openapi-generator version

openapi-generator-maven-plugin:4.1.2

Command line used for generation

Plugin configuration used:

                <configuration>
                    <inputSpec>${project.basedir}/../../api/service-api/src/main/resources/openapi.yaml</inputSpec>
                    <output>${project.build.directory}/generated-sources/api</output>
                    <generateSupportingFiles>true</generateSupportingFiles>
                    <generatorName>spring</generatorName>
                    <strictSpec>true</strictSpec>
                    <configOptions>
                        <apiPackage>mypackage</apiPackage>
                        <modelPackage>mypackage</modelPackage>                        
                        <library>spring-mvc</library>
                        <dateLibrary>legacy</dateLibrary>
                        <interfaceOnly>true</interfaceOnly>
                        <skipDefaultInterface>true</skipDefaultInterface>
                        <useBeanValidation>true</useBeanValidation>
                        <useTags>true</useTags>
                        <java8>true</java8>
                        <useOptional>false</useOptional>
                    </configOptions>
                </configuration>
Steps to reproduce

Just enable or disable useBeanValidation to see that @Validated gets added to the Api interface.

Suggest a fix

Add a flag to indicate whether class-level @Validated should be added and make it true by default to maintain backwards compatibility.

Assignee
Assign to
Time tracking