Skip to content

Commit ba4e5ef

Browse files
nathcouretNC90131N
andauthored
Fix #17752 - Add dependency for jakarta-validation-api and hibernate-validator to pom.xml file for Java client with Resttemplate library (#17753)
Co-authored-by: NC90131N <nathanael-externe.couret@enedis.fr>
1 parent 5bcdc25 commit ba4e5ef

2 files changed

Lines changed: 146 additions & 0 deletions

File tree

modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/pom.mustache

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,23 @@
313313
<version>${jodatime-version}</version>
314314
</dependency>
315315
{{/joda}}
316+
{{#useBeanValidation}}
317+
<!-- Bean Validation API support -->
318+
<dependency>
319+
<groupId>jakarta.validation</groupId>
320+
<artifactId>jakarta.validation-api</artifactId>
321+
<version>${beanvalidation-version}</version>
322+
<scope>provided</scope>
323+
</dependency>
324+
{{/useBeanValidation}}
325+
{{#performBeanValidation}}
326+
<!-- Bean Validation Impl. used to perform BeanValidation -->
327+
<dependency>
328+
<groupId>org.hibernate</groupId>
329+
<artifactId>hibernate-validator</artifactId>
330+
<version>${hibernate-validator-version}</version>
331+
</dependency>
332+
{{/performBeanValidation}}
316333
<dependency>
317334
<groupId>jakarta.annotation</groupId>
318335
<artifactId>jakarta.annotation-api</artifactId>
@@ -356,6 +373,12 @@
356373
{{#joda}}
357374
<jodatime-version>2.9.9</jodatime-version>
358375
{{/joda}}
376+
{{#useBeanValidation}}
377+
<beanvalidation-version>2.0.2</beanvalidation-version>
378+
{{/useBeanValidation}}
379+
{{#performBeanValidation}}
380+
<hibernate-validator-version>5.4.3.Final</hibernate-validator-version>
381+
{{/performBeanValidation}}
359382
<junit-version>4.13.2</junit-version>
360383
</properties>
361384
</project>

modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2643,6 +2643,129 @@ public void testRestTemplateWithGeneratedClientAsBeanEnabled() throws IOExceptio
26432643
TestUtils.assertFileContains(petApi, "@Component");
26442644
}
26452645

2646+
@Test
2647+
public void testRestTemplateWithUseBeanValidationEnabled() throws IOException {
2648+
2649+
Map<String, Object> properties = new HashMap<>();
2650+
properties.put(CodegenConstants.API_PACKAGE, "xyz.abcdef.api");
2651+
properties.put(JavaClientCodegen.USE_BEANVALIDATION, true);
2652+
2653+
File output = Files.createTempDirectory("test").toFile();
2654+
output.deleteOnExit();
2655+
2656+
final CodegenConfigurator configurator = new CodegenConfigurator()
2657+
.setGeneratorName("java")
2658+
.setLibrary(JavaClientCodegen.RESTTEMPLATE)
2659+
.setAdditionalProperties(properties)
2660+
.setInputSpec("src/test/resources/3_0/petstore.yaml")
2661+
.setOutputDir(output.getAbsolutePath().replace("\\", "/"));
2662+
2663+
2664+
DefaultGenerator generator = new DefaultGenerator();
2665+
List<File> files = generator.opts(configurator.toClientOptInput()).generate();
2666+
files.forEach(File::deleteOnExit);
2667+
2668+
validateJavaSourceFiles(files);
2669+
2670+
Path pomFile = Paths.get(output + "/pom.xml");
2671+
TestUtils.assertFileContains(pomFile, "<artifactId>jakarta.validation-api</artifactId>");
2672+
2673+
Path petModel = Paths.get(output + "/src/main/java/org/openapitools/client/model/Pet.java");
2674+
TestUtils.assertFileContains(petModel, "@Valid");
2675+
}
2676+
2677+
@Test
2678+
public void testRestTemplateWithUseBeanValidationDisabled() throws IOException {
2679+
2680+
Map<String, Object> properties = new HashMap<>();
2681+
properties.put(CodegenConstants.API_PACKAGE, "xyz.abcdef.api");
2682+
properties.put(JavaClientCodegen.USE_BEANVALIDATION, false);
2683+
2684+
File output = Files.createTempDirectory("test").toFile();
2685+
output.deleteOnExit();
2686+
2687+
final CodegenConfigurator configurator = new CodegenConfigurator()
2688+
.setGeneratorName("java")
2689+
.setLibrary(JavaClientCodegen.RESTTEMPLATE)
2690+
.setAdditionalProperties(properties)
2691+
.setInputSpec("src/test/resources/3_0/petstore.yaml")
2692+
.setOutputDir(output.getAbsolutePath().replace("\\", "/"));
2693+
2694+
2695+
DefaultGenerator generator = new DefaultGenerator();
2696+
List<File> files = generator.opts(configurator.toClientOptInput()).generate();
2697+
files.forEach(File::deleteOnExit);
2698+
2699+
validateJavaSourceFiles(files);
2700+
2701+
Path pomFile = Paths.get(output + "/pom.xml");
2702+
TestUtils.assertFileNotContains(pomFile, "<artifactId>jakarta.validation-api</artifactId>");
2703+
2704+
Path petModel = Paths.get(output + "/src/main/java/org/openapitools/client/model/Pet.java");
2705+
TestUtils.assertFileNotContains(petModel, "@Valid");
2706+
}
2707+
2708+
@Test
2709+
public void testRestTemplateWithPerformBeanValidationEnabled() throws IOException {
2710+
2711+
Map<String, Object> properties = new HashMap<>();
2712+
properties.put(CodegenConstants.API_PACKAGE, "xyz.abcdef.api");
2713+
properties.put(JavaClientCodegen.PERFORM_BEANVALIDATION, true);
2714+
2715+
File output = Files.createTempDirectory("test").toFile();
2716+
output.deleteOnExit();
2717+
2718+
final CodegenConfigurator configurator = new CodegenConfigurator()
2719+
.setGeneratorName("java")
2720+
.setLibrary(JavaClientCodegen.RESTTEMPLATE)
2721+
.setAdditionalProperties(properties)
2722+
.setInputSpec("src/test/resources/3_0/petstore.yaml")
2723+
.setOutputDir(output.getAbsolutePath().replace("\\", "/"));
2724+
2725+
DefaultGenerator generator = new DefaultGenerator();
2726+
List<File> files = generator.opts(configurator.toClientOptInput()).generate();
2727+
files.forEach(File::deleteOnExit);
2728+
2729+
validateJavaSourceFiles(files);
2730+
2731+
Path pomFile = Paths.get(output + "/pom.xml");
2732+
TestUtils.assertFileContains(pomFile, "<artifactId>hibernate-validator</artifactId>");
2733+
2734+
Path petApi = Paths.get(output + "/src/main/java/xyz/abcdef/BeanValidationException.java");
2735+
TestUtils.assertFileExists(petApi);
2736+
}
2737+
2738+
@Test
2739+
public void testRestTemplateWithPerformBeanValidationDisabled() throws IOException {
2740+
2741+
Map<String, Object> properties = new HashMap<>();
2742+
properties.put(CodegenConstants.API_PACKAGE, "xyz.abcdef.api");
2743+
properties.put(JavaClientCodegen.PERFORM_BEANVALIDATION, false);
2744+
2745+
File output = Files.createTempDirectory("test").toFile();
2746+
output.deleteOnExit();
2747+
2748+
final CodegenConfigurator configurator = new CodegenConfigurator()
2749+
.setGeneratorName("java")
2750+
.setLibrary(JavaClientCodegen.RESTTEMPLATE)
2751+
.setAdditionalProperties(properties)
2752+
.setInputSpec("src/test/resources/3_0/petstore.yaml")
2753+
.setOutputDir(output.getAbsolutePath().replace("\\", "/"));
2754+
2755+
DefaultGenerator generator = new DefaultGenerator();
2756+
List<File> files = generator.opts(configurator.toClientOptInput()).generate();
2757+
files.forEach(File::deleteOnExit);
2758+
2759+
validateJavaSourceFiles(files);
2760+
2761+
Path pomFile = Paths.get(output + "/pom.xml");
2762+
TestUtils.assertFileNotContains(pomFile, "<artifactId>hibernate-validator</artifactId>");
2763+
2764+
Path petApi = Paths.get(output + "/src/main/java/org/openapitools/client/invoker/BeanValidationException.java");
2765+
TestUtils.assertFileNotExists(petApi);
2766+
}
2767+
2768+
26462769
@Test
26472770
public void testLogicToAvoidStackOverflow() throws IOException {
26482771
Map<String, Object> properties = new HashMap<>();

0 commit comments

Comments
 (0)