Skip to content

Commit 07f4264

Browse files
committed
fix #22492 [BUG][JAVA][MAVEN] Lombok @Getter disables validation and #19743 #18794 #17793 #17606
1 parent a9f439f commit 07f4264

22 files changed

Lines changed: 245 additions & 1369 deletions

File tree

bin/configs/spring-boot-lombok-data.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,7 @@ additionalProperties:
99
additionalModelTypeAnnotations: "@lombok.Data;@lombok.Builder;@lombok.NoArgsConstructor;@lombok.AllArgsConstructor"
1010
generateConstructorWithAllArgs: true
1111
generateBuilders: true
12+
useSpringBoot3: true
13+
skipDefaultInterface: true
14+
interfaceOnly: true
15+
performBeanValidation: true,
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
{{#lombok.RequiredArgsConstructor}}
2+
{{^useBeanValidation}}
3+
{{#required}}
4+
@lombok.NonNull
5+
{{/required}}
6+
{{/useBeanValidation}}
7+
{{/lombok.RequiredArgsConstructor}}
8+
{{#lombok.ToString}}
9+
{{#isPassword}}
10+
@lombok.ToString.Exclude
11+
{{/isPassword}}
12+
{{/lombok.ToString}}
13+
{{#lombok.Data}}
14+
{{#isPassword}}
15+
@lombok.ToString.Exclude
16+
{{/isPassword}}
17+
{{#useBeanValidation}}{{>beanValidation}}{{/useBeanValidation}}
18+
{{^useBeanValidation}}
19+
{{#required}}
20+
@lombok.NonNull
21+
{{/required}}
22+
{{/useBeanValidation}}
23+
{{#swagger2AnnotationLibrary}}@Schema(name = "{{{baseName}}}"{{#isReadOnly}}, accessMode = Schema.AccessMode.READ_ONLY{{/isReadOnly}}{{#example}}, example = "{{{.}}}"{{/example}}{{#description}}, description = "{{{.}}}"{{/description}}{{#deprecated}}, deprecated = true{{/deprecated}}, requiredMode = {{#required}}Schema.RequiredMode.REQUIRED{{/required}}{{^required}}Schema.RequiredMode.NOT_REQUIRED{{/required}})
24+
{{/swagger2AnnotationLibrary}}
25+
{{#jackson}}@JsonProperty("{{baseName}}")
26+
{{#withXml}}
27+
@JacksonXmlProperty(localName = "{{items.xmlName}}{{^items.xmlName}}{{xmlName}}{{^xmlName}}{{baseName}}{{/xmlName}}{{/items.xmlName}}"{{#isXmlAttribute}}, isAttribute = true{{/isXmlAttribute}}{{#xmlNamespace}}, namespace = "{{.}}"{{/xmlNamespace}})
28+
{{#isContainer}}
29+
@JacksonXmlElementWrapper({{#isXmlWrapped}}localName = "{{xmlName}}{{^xmlName}}{{baseName}}{{/xmlName}}", {{#xmlNamespace}}namespace = "{{.}}", {{/xmlNamespace}}{{/isXmlWrapped}}useWrapping = {{isXmlWrapped}})
30+
{{/isContainer}}
31+
{{/withXml}}
32+
{{/jackson}}
33+
{{/lombok.Data}}
34+
{{#lombok.Builder}}
35+
{{#defaultValue}}
36+
@lombok.Builder.Default
37+
{{/defaultValue}}
38+
{{/lombok.Builder}}

modules/openapi-generator/src/main/resources/JavaSpring/pojo.mustache

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -57,26 +57,10 @@ public {{>sealed}}class {{classname}}{{#parent}} extends {{{parent}}}{{/parent}}
5757
{{#gson}}
5858
@SerializedName("{{baseName}}")
5959
{{/gson}}
60-
{{#lombok.RequiredArgsConstructor}}
61-
{{^useBeanValidation}}
62-
{{#required}}
63-
@lombok.NonNull
64-
{{/required}}
65-
{{/useBeanValidation}}
66-
{{/lombok.RequiredArgsConstructor}}
67-
{{#lombok.ToString}}
68-
{{#isPassword}}
69-
@lombok.ToString.Exclude
70-
{{/isPassword}}
71-
{{/lombok.ToString}}
60+
{{>lombokAnnotation}}
7261
{{#vendorExtensions.x-field-extra-annotation}}
7362
{{{.}}}
7463
{{/vendorExtensions.x-field-extra-annotation}}
75-
{{#lombok.Builder}}
76-
{{#defaultValue}}
77-
@lombok.Builder.Default
78-
{{/defaultValue}}
79-
{{/lombok.Builder}}
8064
{{#deprecated}}
8165
@Deprecated
8266
{{/deprecated}}
Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,12 @@
11
README.md
22
pom.xml
3-
src/main/java/org/openapitools/OpenApiGeneratorApplication.java
4-
src/main/java/org/openapitools/RFC3339DateFormat.java
53
src/main/java/org/openapitools/api/ApiUtil.java
64
src/main/java/org/openapitools/api/PetApi.java
75
src/main/java/org/openapitools/api/StoreApi.java
86
src/main/java/org/openapitools/api/UserApi.java
9-
src/main/java/org/openapitools/configuration/HomeController.java
10-
src/main/java/org/openapitools/configuration/SpringDocConfiguration.java
117
src/main/java/org/openapitools/model/Category.java
128
src/main/java/org/openapitools/model/ModelApiResponse.java
139
src/main/java/org/openapitools/model/Order.java
1410
src/main/java/org/openapitools/model/Pet.java
1511
src/main/java/org/openapitools/model/Tag.java
1612
src/main/java/org/openapitools/model/User.java
17-
src/main/resources/application.properties
18-
src/main/resources/openapi.yaml
19-
src/test/java/org/openapitools/OpenApiGeneratorApplicationTests.java
Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,27 @@
1-
# OpenAPI generated server
21

3-
Spring Boot Server
2+
# OpenAPI generated API stub
43

5-
## Overview
6-
This server was generated by the [OpenAPI Generator](https://openapi-generator.tech) project.
7-
By using the [OpenAPI-Spec](https://openapis.org), you can easily generate a server stub.
8-
This is an example of building a OpenAPI-enabled server in Java using the SpringBoot framework.
4+
Spring Framework stub
95

106

11-
The underlying library integrating OpenAPI to Spring Boot is [springdoc](https://springdoc.org).
12-
Springdoc will generate an OpenAPI v3 specification based on the generated Controller and Model classes.
13-
The specification is available to download using the following url:
14-
http://localhost:8080/v3/api-docs/
7+
## Overview
8+
This code was generated by the [OpenAPI Generator](https://openapi-generator.tech) project.
9+
By using the [OpenAPI-Spec](https://openapis.org), you can easily generate an API stub.
10+
This is an example of building API stub interfaces in Java using the Spring framework.
1511

16-
Start your server as a simple java application
12+
The stubs generated can be used in your existing Spring-MVC or Spring-Boot application to create controller endpoints
13+
by adding ```@Controller``` classes that implement the interface. Eg:
14+
```java
15+
@Controller
16+
public class PetController implements PetApi {
17+
// implement all PetApi methods
18+
}
19+
```
1720

18-
You can view the api documentation in swagger-ui by pointing to
19-
http://localhost:8080/swagger-ui.html
21+
You can also use the interface to create [Spring-Cloud Feign clients](http://projects.spring.io/spring-cloud/spring-cloud.html#spring-cloud-feign-inheritance).Eg:
22+
```java
23+
@FeignClient(name="pet", url="http://petstore.swagger.io/v2")
24+
public interface PetClient extends PetApi {
2025

21-
Change default port value in application.properties
26+
}
27+
```

samples/server/petstore/springboot-lombok-data/pom.xml

Lines changed: 30 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,33 +6,48 @@
66
<name>springboot-lombok-data</name>
77
<version>1.0.0</version>
88
<properties>
9-
<java.version>1.8</java.version>
9+
<java.version>17</java.version>
1010
<maven.compiler.source>${java.version}</maven.compiler.source>
1111
<maven.compiler.target>${java.version}</maven.compiler.target>
1212
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
13-
<springdoc.version>1.6.14</springdoc.version>
14-
<swagger-ui.version>5.3.1</swagger-ui.version>
13+
<springdoc.version>2.6.0</springdoc.version>
14+
<swagger-ui.version>5.17.14</swagger-ui.version>
1515
</properties>
1616
<parent>
1717
<groupId>org.springframework.boot</groupId>
1818
<artifactId>spring-boot-starter-parent</artifactId>
19-
<version>2.7.15</version>
19+
<version>3.1.3</version>
2020
<relativePath/> <!-- lookup parent from repository -->
2121
</parent>
22+
23+
<repositories>
24+
<repository>
25+
<id>repository.spring.milestone</id>
26+
<name>Spring Milestone Repository</name>
27+
<url>https://repo.spring.io/milestone</url>
28+
</repository>
29+
</repositories>
30+
<pluginRepositories>
31+
<pluginRepository>
32+
<id>spring-milestones</id>
33+
<url>https://repo.spring.io/milestone</url>
34+
</pluginRepository>
35+
</pluginRepositories>
36+
2237
<build>
2338
<sourceDirectory>src/main/java</sourceDirectory>
2439
<plugins>
2540
<plugin>
26-
<groupId>org.springframework.boot</groupId>
27-
<artifactId>spring-boot-maven-plugin</artifactId>
28-
<configuration>
29-
<excludes>
30-
<exclude>
31-
<groupId>org.projectlombok</groupId>
32-
<artifactId>lombok</artifactId>
33-
</exclude>
34-
</excludes>
35-
</configuration>
41+
<groupId>org.apache.maven.plugins</groupId>
42+
<artifactId>maven-source-plugin</artifactId>
43+
<executions>
44+
<execution>
45+
<id>attach-sources</id>
46+
<goals>
47+
<goal>jar</goal>
48+
</goals>
49+
</execution>
50+
</executions>
3651
</plugin>
3752
</plugins>
3853
</build>
@@ -48,7 +63,7 @@
4863
<!--SpringDoc dependencies -->
4964
<dependency>
5065
<groupId>org.springdoc</groupId>
51-
<artifactId>springdoc-openapi-ui</artifactId>
66+
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
5267
<version>${springdoc.version}</version>
5368
</dependency>
5469
<!-- @Nullable annotation -->

samples/server/petstore/springboot-lombok-data/src/main/java/org/openapitools/OpenApiGeneratorApplication.java

Lines changed: 0 additions & 30 deletions
This file was deleted.

samples/server/petstore/springboot-lombok-data/src/main/java/org/openapitools/RFC3339DateFormat.java

Lines changed: 0 additions & 38 deletions
This file was deleted.

samples/server/petstore/springboot-lombok-data/src/main/java/org/openapitools/api/ApiUtil.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import org.springframework.web.context.request.NativeWebRequest;
44

5-
import javax.servlet.http.HttpServletResponse;
5+
import jakarta.servlet.http.HttpServletResponse;
66
import java.io.IOException;
77

88
public class ApiUtil {

0 commit comments

Comments
 (0)