@@ -665,6 +665,85 @@ public void testJdkHttpClientWithJackson3() {
665665 .contains ("<groupId>com.fasterxml.jackson.core</groupId>" );
666666 }
667667
668+ @ Test
669+ public void testJdkHttpClientWithJackson3AndOpenApiNullable () {
670+ final Path output = newTempFolder ();
671+ final CodegenConfigurator configurator = new CodegenConfigurator ()
672+ .setGeneratorName (JAVA_GENERATOR )
673+ .setLibrary (JavaClientCodegen .NATIVE )
674+ .addAdditionalProperty (CodegenConstants .API_PACKAGE , "xyz.abcdef.api" )
675+ .addAdditionalProperty (CodegenConstants .INVOKER_PACKAGE , "xyz.abcdef.invoker" )
676+ .addAdditionalProperty (JavaClientCodegen .USE_JACKSON_3 , true )
677+ .addAdditionalProperty (JavaClientCodegen .OPENAPI_NULLABLE , true )
678+ .setInputSpec ("src/test/resources/3_0/ping.yaml" )
679+ .setOutputDir (output .toString ().replace ("\\ " , "/" ));
680+
681+ List <File > files = new DefaultGenerator ().opts (configurator .toClientOptInput ()).generate ();
682+
683+ validateJavaSourceFiles (files );
684+ assertThat (output .resolve ("src/main/java/xyz/abcdef/invoker/ApiClient.java" )).content ()
685+ .contains ("import org.openapitools.jackson.nullable.JsonNullableJackson3Module;" )
686+ .contains ("new JsonNullableJackson3Module()" )
687+ .doesNotContain ("JsonNullableModule" );
688+ assertThat (output .resolve ("src/main/java/xyz/abcdef/invoker/JSON.java" )).content ()
689+ .contains ("import org.openapitools.jackson.nullable.JsonNullableJackson3Module;" )
690+ .contains ("new JsonNullableJackson3Module()" )
691+ .doesNotContain ("JsonNullableModule" );
692+ assertThat (output .resolve ("pom.xml" )).content ()
693+ .contains ("jackson-databind-nullable" );
694+ }
695+
696+ @ Test
697+ public void testApacheHttpClientWithJackson3 () {
698+ final Path output = newTempFolder ();
699+ final CodegenConfigurator configurator = new CodegenConfigurator ()
700+ .setGeneratorName (JAVA_GENERATOR )
701+ .setLibrary (JavaClientCodegen .APACHE )
702+ .addAdditionalProperty (CodegenConstants .API_PACKAGE , "xyz.abcdef.api" )
703+ .addAdditionalProperty (CodegenConstants .INVOKER_PACKAGE , "xyz.abcdef.invoker" )
704+ .addAdditionalProperty (JavaClientCodegen .USE_JACKSON_3 , true )
705+ .addAdditionalProperty (JavaClientCodegen .OPENAPI_NULLABLE , true )
706+ .setInputSpec ("src/test/resources/3_0/ping.yaml" )
707+ .setOutputDir (output .toString ().replace ("\\ " , "/" ));
708+
709+ List <File > files = new DefaultGenerator ().opts (configurator .toClientOptInput ()).generate ();
710+
711+ validateJavaSourceFiles (files );
712+ assertThat (output .resolve ("src/main/java/xyz/abcdef/invoker/ApiClient.java" )).content ()
713+ .contains ("import tools.jackson.databind.*" )
714+ .contains ("import tools.jackson.databind.json.JsonMapper;" )
715+ .contains ("import org.openapitools.jackson.nullable.JsonNullableJackson3Module;" )
716+ .contains ("new JsonNullableJackson3Module()" )
717+ .doesNotContain ("import com.fasterxml.jackson.databind" );
718+ assertThat (output .resolve ("src/main/java/xyz/abcdef/api/DefaultApi.java" )).content ()
719+ .contains ("import tools.jackson.core.type.TypeReference;" )
720+ .doesNotContain ("import com.fasterxml.jackson.core.type.TypeReference" );
721+ assertThat (output .resolve ("pom.xml" )).content ()
722+ .contains ("<groupId>tools.jackson.core</groupId>" )
723+ .contains ("<groupId>com.fasterxml.jackson.core</groupId>" )
724+ .contains ("jackson-databind-nullable" );
725+ }
726+
727+ @ Test (dataProvider = "springBoot4Jackson3Libraries" )
728+ void supportsJackson3WithOpenApiNullableForSpringBoot4Libraries (String library ) {
729+ String outputDir = newTempFolder ().toString ();
730+ final CodegenConfigurator configurator = new CodegenConfigurator ()
731+ .setGeneratorName (JAVA_GENERATOR )
732+ .setLibrary (library )
733+ .addAdditionalProperty (USE_JACKSON_3 , true )
734+ .addAdditionalProperty (USE_SPRING_BOOT4 , true )
735+ .addAdditionalProperty (OPENAPI_NULLABLE , true )
736+ .setInputSpec ("src/test/resources/3_0/java/autoset_constant.yaml" )
737+ .setOutputDir (outputDir );
738+
739+ List <File > files = new DefaultGenerator ().opts (configurator .toClientOptInput ()).generate ();
740+
741+ assertThat (files ).isNotEmpty ();
742+ assertThat (new File (outputDir , "src/main/java/org/openapitools/client/ApiClient.java" ))
743+ .content ()
744+ .contains ("JsonNullableJackson3Module" );
745+ }
746+
668747 @ Test
669748 public void testReferencedHeader () {
670749 final OpenAPI openAPI = TestUtils .parseFlattenSpec ("src/test/resources/3_0/issue855.yaml" );
0 commit comments