forked from loafle/openapi-generator-original
* resolved ambiguous beanValidation Email annotation imports; fix #13379 * [Java][Spring] fix email import --------- Co-authored-by: Oleh Kurpiak <oleh.kurpiak@gmail.com>
This commit is contained in:
parent
6e649af9a7
commit
3ea346e1bb
@ -11,8 +11,10 @@ minLength not set, maxLength set
|
||||
}}{{#minItems}}{{^maxItems}}@Size(min = {{minItems}}) {{/maxItems}}{{/minItems}}{{!
|
||||
@Size: minItems not set && maxItems set
|
||||
}}{{^minItems}}{{#maxItems}}@Size(max = {{.}}) {{/maxItems}}{{/minItems}}{{!
|
||||
@Email: useBeanValidation set && isEmail set
|
||||
}}{{#useBeanValidation}}{{#isEmail}}@Email{{/isEmail}}{{/useBeanValidation}}{{!
|
||||
@Email: useBeanValidation
|
||||
}}{{#isEmail}}{{#useBeanValidation}}@{{javaxPackage}}.validation.constraints.Email{{/useBeanValidation}}{{!
|
||||
@Email: performBeanValidation exclusive
|
||||
}}{{^useBeanValidation}}{{#performBeanValidation}}@org.hibernate.validator.constraints.Email{{/performBeanValidation}}{{/useBeanValidation}}{{/isEmail}}{{!
|
||||
check for integer or long / all others=decimal type with @Decimal*
|
||||
isInteger set
|
||||
}}{{#isInteger}}{{#minimum}}@Min({{.}}) {{/minimum}}{{#maximum}}@Max({{.}}) {{/maximum}}{{/isInteger}}{{!
|
||||
|
@ -821,16 +821,25 @@ public class SpringCodegenTest {
|
||||
|
||||
@Test
|
||||
public void useBeanValidationTruePerformBeanValidationFalseJava8TrueForFormatEmail() throws IOException {
|
||||
beanValidationForFormatEmail(true, false, true, "@Email", "@org.hibernate.validator.constraints.Email");
|
||||
beanValidationForFormatEmail(true, false, true, "@javax.validation.constraints.Email", "@org.hibernate.validator.constraints.Email");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void useBeanValidationTruePerformBeanValidationTrueJava8FalseForFormatEmail() throws IOException {
|
||||
beanValidationForFormatEmail(true, true, false, "@Email", "@org.hibernate.validator.constraints.Email");
|
||||
beanValidationForFormatEmail(true, true, false, "@javax.validation.constraints.Email", "@org.hibernate.validator.constraints.Email");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void useBeanValidationTruePerformBeanValidationFalseJava8TrueJakartaeeTrueForFormatEmail() throws IOException {
|
||||
beanValidationForFormatEmail(true, false, true, true,"@jakarta.validation.constraints.Email", "@javax.validation.constraints.Email");
|
||||
}
|
||||
|
||||
// note: java8 option/mustache tag has been removed and default to true
|
||||
private void beanValidationForFormatEmail(boolean useBeanValidation, boolean performBeanValidation, boolean java8, String contains, String notContains) throws IOException {
|
||||
this.beanValidationForFormatEmail(useBeanValidation, performBeanValidation, java8, false, contains, notContains);
|
||||
}
|
||||
|
||||
private void beanValidationForFormatEmail(boolean useBeanValidation, boolean performBeanValidation, boolean java8, boolean useJakarta, String contains, String notContains) throws IOException {
|
||||
File output = Files.createTempDirectory("test").toFile().getCanonicalFile();
|
||||
output.deleteOnExit();
|
||||
String outputPath = output.getAbsolutePath().replace('\\', '/');
|
||||
@ -842,6 +851,7 @@ public class SpringCodegenTest {
|
||||
codegen.setOutputDir(output.getAbsolutePath());
|
||||
codegen.setUseBeanValidation(useBeanValidation);
|
||||
codegen.setPerformBeanValidation(performBeanValidation);
|
||||
codegen.setUseSpringBoot3(useJakarta);
|
||||
|
||||
ClientOptInput input = new ClientOptInput();
|
||||
input.openAPI(openAPI);
|
||||
@ -855,15 +865,20 @@ public class SpringCodegenTest {
|
||||
generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "false");
|
||||
generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false");
|
||||
|
||||
List<File> files = generator.opts(input).generate();
|
||||
Map<String, File> files = generator.opts(input).generate().stream()
|
||||
.collect(Collectors.toMap(File::getName, Function.identity()));
|
||||
|
||||
JavaFileAssert javaFileAssert = JavaFileAssert.assertThat(files.get("PersonWithEmail.java"))
|
||||
.printFileContent();
|
||||
if (useBeanValidation) javaFileAssert.hasImports((useJakarta? "jakarta" : "javax") + ".validation.constraints");
|
||||
if (performBeanValidation) javaFileAssert.hasImports("org.hibernate.validator.constraints");
|
||||
assertFileContains(Paths.get(outputPath + "/src/main/java/org/openapitools/model/PersonWithEmail.java"), contains);
|
||||
assertFileNotContains(Paths.get(outputPath + "/src/main/java/org/openapitools/model/PersonWithEmail.java"), notContains);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void useBeanValidationTruePerformBeanValidationTrueJava8TrueForFormatEmail() throws IOException {
|
||||
beanValidationForFormatEmail(true, true, true, "@Email", "@org.hibernate.validator.constraints.Email");
|
||||
beanValidationForFormatEmail(true, true, true, "@javax.validation.constraints.Email", "@org.hibernate.validator.constraints.Email");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -1934,7 +1949,7 @@ public class SpringCodegenTest {
|
||||
JavaFileAssert javaFileAssert = JavaFileAssert.assertThat(files.get("Person.java"))
|
||||
.printFileContent();
|
||||
javaFileAssert.assertMethod("getName").assertMethodAnnotations()
|
||||
.containsWithName("NotNull").containsWithName("Size").containsWithName("Email");
|
||||
.containsWithName("NotNull").containsWithName("Size").containsWithName("javax.validation.constraints.Email");
|
||||
javaFileAssert
|
||||
.hasNoImports("javax.validation.constraints.NotNull")
|
||||
.hasImports("javax.validation.constraints");
|
||||
|
Loading…
x
Reference in New Issue
Block a user