Skip to content

Commit 6f4e82d

Browse files
jfialawing328
authored andcommitted
[Jaxrs-Resteasy] Add beanvalidation annotations (#4506)
* add beanvalidation to jaxrs-resteasy #4091 * replace tabs
1 parent 3b6ae19 commit 6f4e82d

File tree

21 files changed

+113
-17
lines changed

21 files changed

+113
-17
lines changed

modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaResteasyServerCodegen.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.swagger.codegen.languages;
22

33
import io.swagger.codegen.*;
4+
import io.swagger.codegen.languages.features.BeanValidationFeatures;
45
import io.swagger.codegen.languages.features.JbossFeature;
56
import io.swagger.models.Operation;
67
import org.apache.commons.lang3.BooleanUtils;
@@ -9,10 +10,11 @@
910
import java.io.File;
1011
import java.util.*;
1112

12-
public class JavaResteasyServerCodegen extends AbstractJavaJAXRSServerCodegen implements JbossFeature {
13+
public class JavaResteasyServerCodegen extends AbstractJavaJAXRSServerCodegen implements JbossFeature, BeanValidationFeatures {
1314

15+
protected boolean useBeanValidation = true;
1416
protected boolean generateJbossDeploymentDescriptor = true;
15-
17+
1618
public JavaResteasyServerCodegen() {
1719

1820
super();
@@ -35,6 +37,7 @@ public JavaResteasyServerCodegen() {
3537

3638
embeddedTemplateDir = templateDir = "JavaJaxRS" + File.separator + "resteasy";
3739

40+
cliOptions.add(CliOption.newBoolean(USE_BEANVALIDATION, "Use BeanValidation API annotations"));
3841
cliOptions.add(
3942
CliOption.newBoolean(GENERATE_JBOSS_DEPLOYMENT_DESCRIPTOR, "Generate Jboss Deployment Descriptor"));
4043
}
@@ -58,6 +61,14 @@ public void processOpts() {
5861
GENERATE_JBOSS_DEPLOYMENT_DESCRIPTOR);
5962
this.setGenerateJbossDeploymentDescriptor(generateJbossDeploymentDescriptorProp);
6063
}
64+
65+
if (additionalProperties.containsKey(USE_BEANVALIDATION)) {
66+
this.setUseBeanValidation(convertPropertyToBoolean(USE_BEANVALIDATION));
67+
}
68+
69+
if (useBeanValidation) {
70+
writePropertyBack(USE_BEANVALIDATION, useBeanValidation);
71+
}
6172

6273
writeOptional(outputFolder, new SupportingFile("pom.mustache", "", "pom.xml"));
6374
writeOptional(outputFolder, new SupportingFile("gradle.mustache", "", "build.gradle"));
@@ -214,6 +225,10 @@ public Map<String, Object> postProcessModelsEnum(Map<String, Object> objs) {
214225

215226
return objs;
216227
}
228+
229+
public void setUseBeanValidation(boolean useBeanValidation) {
230+
this.useBeanValidation = useBeanValidation;
231+
}
217232

218233
public void setGenerateJbossDeploymentDescriptor(boolean generateJbossDeploymentDescriptor) {
219234
this.generateJbossDeploymentDescriptor = generateJbossDeploymentDescriptor;

modules/swagger-codegen/src/main/resources/JavaJaxRS/resteasy/api.mustache

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ import javax.ws.rs.core.Context;
1616
import javax.ws.rs.core.Response;
1717
import javax.ws.rs.core.SecurityContext;
1818
import javax.ws.rs.*;
19+
{{#useBeanValidation}}
20+
import javax.validation.constraints.*;
21+
{{/useBeanValidation}}
1922
{{#operations}}{{#operation}}{{#isMultipart}}import org.jboss.resteasy.plugins.providers.multipart.MultipartFormDataInput;
2023
{{/isMultipart}}{{/operation}}{{/operations}}
2124
@Path("/{{baseName}}")
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
{{#required}}
2+
@NotNull
3+
{{/required}}
4+
{{#pattern}}
5+
@Pattern(regexp="{{pattern}}")
6+
{{/pattern}}
7+
{{#minLength}}
8+
{{#maxLength}}
9+
@Size(min={{minLength}},max={{maxLength}})
10+
{{/maxLength}}
11+
{{/minLength}}
12+
{{#minLength}}
13+
{{^maxLength}}
14+
@Size(min={{minLength}})
15+
{{/maxLength}}
16+
{{/minLength}}
17+
{{^minLength}}
18+
{{#maxLength}}
19+
@Size(max={{maxLength}})
20+
{{/maxLength}}
21+
{{/minLength}}
22+
{{#minItems}}
23+
{{#maxItems}}
24+
@Size(min={{minItems}},max={{maxItems}})
25+
{{/maxItems}}
26+
{{/minItems}}
27+
{{#minItems}}
28+
{{^maxItems}}
29+
@Size(min={{minItems}})
30+
{{/maxItems}}
31+
{{/minItems}}
32+
{{^minItems}}
33+
{{#maxItems}}
34+
@Size(max={{maxItems}})
35+
{{/maxItems}}
36+
{{/minItems}}
37+
{{! check for integer / number=decimal type}}
38+
{{#isInteger}}
39+
{{#minimum}}
40+
@Min({{minimum}})
41+
{{/minimum}}
42+
{{#maximum}}
43+
@Max({{maximum}})
44+
{{/maximum}}
45+
{{/isInteger}}
46+
{{^isInteger}}
47+
{{#minimum}}
48+
@DecimalMin("{{minimum}}")
49+
{{/minimum}}
50+
{{#maximum}}
51+
@DecimalMax("{{maximum}}")
52+
{{/maximum}}
53+
{{/isInteger}}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{{! PathParam is always required, no @NotNull necessary }}{{#pattern}} @Pattern(regexp="{{pattern}}"){{/pattern}}{{#minLength}}{{#maxLength}} @Size(min={{minLength}},max={{maxLength}}){{/maxLength}}{{/minLength}}{{#minLength}}{{^maxLength}} @Size(min={{minLength}}){{/maxLength}}{{/minLength}}{{^minLength}}{{#maxLength}} @Size(max={{maxLength}}){{/maxLength}}{{/minLength}}{{#minItems}}{{#maxItems}} @Size(min={{minItems}},max={{maxItems}}){{/maxItems}}{{/minItems}}{{#minItems}}{{^maxItems}} @Size(min={{minItems}}){{/maxItems}}{{/minItems}}{{^minItems}}{{#maxItems}} @Size(max={{maxItems}}){{/maxItems}}{{/minItems}}{{#minimum}} @Min({{minimum}}){{/minimum}}{{#maximum}} @Max({{maximum}}){{/maximum}}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{{#required}} @NotNull{{/required}}{{#pattern}} @Pattern(regexp="{{pattern}}"){{/pattern}}{{#minLength}}{{#maxLength}} @Size(min={{minLength}},max={{maxLength}}){{/maxLength}}{{/minLength}}{{#minLength}}{{^maxLength}} @Size(min={{minLength}}){{/maxLength}}{{/minLength}}{{^minLength}}{{#maxLength}} @Size(max={{maxLength}}){{/maxLength}}{{/minLength}}{{#minItems}}{{#maxItems}} @Size(min={{minItems}},max={{maxItems}}){{/maxItems}}{{/minItems}}{{#minItems}}{{^maxItems}} @Size(min={{minItems}}){{/maxItems}}{{/minItems}}{{^minItems}}{{#maxItems}} @Size(max={{maxItems}}){{/maxItems}}{{/minItems}}{{#minimum}} @Min({{minimum}}){{/minimum}}{{#maximum}} @Max({{maximum}}){{/maximum}}

modules/swagger-codegen/src/main/resources/JavaJaxRS/resteasy/model.mustache

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@ import java.util.ArrayList;
77
{{#serializableModel}}
88
import java.io.Serializable;
99
{{/serializableModel}}
10-
10+
{{#useBeanValidation}}
11+
import javax.validation.constraints.*;
12+
{{/useBeanValidation}}
1113
{{#models}}
1214
{{#model}}
1315
{{#isEnum}}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{{#isPathParam}} @PathParam("{{baseName}}") {{{dataType}}} {{paramName}}{{/isPathParam}}
1+
{{#isPathParam}}{{#useBeanValidation}}{{>beanValidationPathParams}}{{/useBeanValidation}} @PathParam("{{baseName}}") {{{dataType}}} {{paramName}}{{/isPathParam}}

modules/swagger-codegen/src/main/resources/JavaJaxRS/resteasy/pojo.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}} {{#seriali
1515
**/
1616
{{#vendorExtensions.extraAnnotation}}{{{vendorExtensions.extraAnnotation}}}{{/vendorExtensions.extraAnnotation}}
1717
@JsonProperty("{{baseName}}")
18-
public {{{datatypeWithEnum}}} {{getter}}() {
18+
{{#useBeanValidation}}{{>beanValidation}}{{/useBeanValidation}} public {{{datatypeWithEnum}}} {{getter}}() {
1919
return {{name}};
2020
}
2121
public void {{setter}}({{{datatypeWithEnum}}} {{name}}) {

modules/swagger-codegen/src/main/resources/JavaJaxRS/resteasy/pom.mustache

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,16 @@
138138
</exclusion>
139139
</exclusions>
140140
</dependency>
141+
{{#useBeanValidation}}
142+
<!-- Bean Validation API support -->
143+
<dependency>
144+
<groupId>javax.validation</groupId>
145+
<artifactId>validation-api</artifactId>
146+
<version>1.1.0.Final</version>
147+
<scope>provided</scope>
148+
</dependency>
149+
{{/useBeanValidation}}
150+
141151
</dependencies>
142152
<repositories>
143153
<repository>
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{{#isQueryParam}} @QueryParam("{{baseName}}") {{{dataType}}} {{paramName}}{{/isQueryParam}}
1+
{{#isQueryParam}}{{#useBeanValidation}}{{>beanValidationQueryParams}}{{/useBeanValidation}} @QueryParam("{{baseName}}") {{{dataType}}} {{paramName}}{{/isQueryParam}}

0 commit comments

Comments
 (0)