I am upgrading a helper jar file that has some validation and configurations settings for a project. I am using spring-boot 3.2.5
<spring-boot.version>3.2.5</spring-boot.version>
<springdoc.version>2.5.0</springdoc.version>
<java.version>17</java.version>
<jackson-databind-nullable.version>0.2.6</jackson-databind-nullable.version>
<jakarta.servlet-api.version>6.1.0</jakarta.servlet-api.version>
<jakarta.annotation-api>3.0.0</jakarta.annotation-api>
<jakarta.el.version>3.0.3</jakarta.el.version>
<jakarta.validation-api.version>3.0.2</jakarta.validation-api.version>
<!-- ............................................................... -->
<!-- OpenAPI Tools -->
<!-- ............................................................... -->
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>${springdoc.version}</version>
</dependency>
<dependency>
<groupId>org.openapitools</groupId>
<artifactId>jackson-databind-nullable</artifactId>
<version>${jackson-databind-nullable.version}</version>
</dependency>
<!-- ................................................................. -->
<!-- Jakarta Validation API -->
<!-- ................................................................. -->
<dependency>
<groupId>jakarta.validation</groupId>
<artifactId>jakarta.validation-api</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>jakarta.el</artifactId>
<scope>provided</scope>
</dependency>
It seems the generated Validation classes have changed. However I cannot seem to find the correct documentation supporting my assumption.
The pom.xml file was on spring-boot.version 2.5.2 and the main reason I need to update it is because the other applications that use this jar will soon be on spring 3 and that means no javax but rather jakarta imports.
The previous and upgraded openapi versions are below.
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>5.3.0</version>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>7.6.0</version>
The openapi.def.json files are the same. What I am not sure about is if I am missing a dependency or if I need to adapt my openapi json files.
For example I have a openapi generated class I was using called QueryOptimization
which is now not found. However the file QueryOptimization.def.json
still remains and I do see a class generated called QueryOptimizationdef
.
@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2024-06-14T12:41:26.384867+02:00", comments = "Generator version: 7.6.0")
public class QueryOptimizationdef extends ConfigEntitydef {
What looks like happened is QueryOptimization
name has changed to QueryOptimizationdef
and some return types have changed to . But changing the class names and type set me on a path of changes all over.
Has anyone experienced this before? Is there a way to keep the class names the same? This would be a pretty large change and I am honestly not sure if my assumption is correct.
<!-- ............................................................... -->
<!-- OpenAPI Generator Plugin -->
<!-- ............................................................... -->
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>7.6.0</version>
<executions>
<execution>
<id>generate-java</id>
<goals>
<goal>generate</goal>
</goals>
<phase>generate-resources</phase>
<configuration>
<configOptions>
<sourceFolder>.</sourceFolder>
<useSpringBoot3>true</useSpringBoot3>
<interfaceOnly>true</interfaceOnly>
<useTags>true</useTags>
<useJakartaEe>true</useJakartaEe>
<dateLibrary>java8</dateLibrary>
<java8>true</java8>
<reactive>false</reactive>
<useBeanValidation>true</useBeanValidation>
<performBeanValidation>true</performBeanValidation>
<useOptional>true</useOptional>
<serviceInterface>false</serviceInterface>
<serviceImplementation>false</serviceImplementation>
</configOptions>
<generateAliasAsModel>false</generateAliasAsModel>
<generateApiDocumentation>true</generateApiDocumentation>
<generateApis>false</generateApis>
<generateApiTests>false</generateApiTests>
<generateModelDocumentation>true</generateModelDocumentation>
<generateModels>true</generateModels>
<generateModelTests>true</generateModelTests>
<generateSupportingFiles>false</generateSupportingFiles>
<generatorName>spring</generatorName>
<inputSpec>${generated.sources.openapi}/ProductConfiguration.api.json</inputSpec>
<typeMappings>map=java.util.Map</typeMappings>
<modelPackage>ppd.product.configuration.models</modelPackage>
<output>${generated.sources.java}</output>
</configuration>
</execution>