Skip to content

Commit 206f3f7

Browse files
david1601Mathias HinterndorferMathiasHijimschubert
authored
[Java][Spring] Add Spring pagination with vendor extension x-spring-paginated (#5022)
Co-authored-by: Mathias Hinterndorfer <mathias.hinterndorfer@joyn-it.at> Co-authored-by: Mathias Hinterndorfer <mathias.hinterndorfer@gmail.com> Co-authored-by: Jim Schubert <james.schubert@gmail.com>
1 parent 4fe76fc commit 206f3f7

File tree

523 files changed

+50884
-7
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

523 files changed

+50884
-7
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
generatorName: spring
2+
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
3+
inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore-with-spring-pageable.yaml
4+
outputDir: samples/client/petstore/spring-cloud-spring-pageable
5+
artifactId: spring-cloud-spring-pageable
6+
library: spring-cloud
7+
additionalProperties:
8+
hideGenerationTimestamp: 'true'
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
generatorName: spring
2+
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
3+
inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing-with-spring-pageable.yaml
4+
outputDir: samples/server/petstore/spring-mvc-spring-pageable
5+
artifactId: spring-mvc-spring-pageable
6+
library: spring-mvc
7+
additionalProperties:
8+
hideGenerationTimestamp: 'true'
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
generatorName: spring
2+
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
3+
inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing-with-spring-pageable.yaml
4+
outputDir: samples/server/petstore/springboot-spring-pageable-delegatePattern-without-j8
5+
artifactId: springboot-spring-pageable-delegatePattern-without-j8
6+
library: spring-boot
7+
delegatePattern: true
8+
java8: false
9+
additionalProperties:
10+
hideGenerationTimestamp: 'true'
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
generatorName: spring
2+
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
3+
inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing-with-spring-pageable.yaml
4+
outputDir: samples/server/petstore/springboot-spring-pageable-delegatePattern
5+
artifactId: springboot-spring-pageable-delegatePattern
6+
library: spring-boot
7+
delegatePattern: true
8+
additionalProperties:
9+
hideGenerationTimestamp: 'true'
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
generatorName: spring
2+
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
3+
inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing-with-spring-pageable.yaml
4+
outputDir: samples/server/petstore/springboot-spring-pageable-without-j8
5+
artifactId: springboot-spring-pageable-withoutj8
6+
library: spring-boot
7+
java8: false
8+
additionalProperties:
9+
hideGenerationTimestamp: 'true'
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
generatorName: spring
2+
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
3+
inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing-with-spring-pageable.yaml
4+
outputDir: samples/server/petstore/springboot-spring-pageable
5+
artifactId: springboot-spring-pageable
6+
library: spring-boot
7+
additionalProperties:
8+
hideGenerationTimestamp: 'true'

modules/openapi-generator-maven-plugin/examples/spring.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,11 @@
8585
<groupId>org.springframework.boot</groupId>
8686
<artifactId>spring-boot-starter-web</artifactId>
8787
</dependency>
88+
89+
<dependency>
90+
<groupId>org.springframework.data</groupId>
91+
<artifactId>spring-data-commons</artifactId>
92+
</dependency>
8893
<!--SpringFox dependencies -->
8994
<dependency>
9095
<groupId>io.springfox</groupId>

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

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import org.springframework.http.ResponseEntity;
2020
{{#useBeanValidation}}
2121
import org.springframework.validation.annotation.Validated;
2222
{{/useBeanValidation}}
23+
import org.springframework.data.domain.Pageable;
2324
import org.springframework.web.bind.annotation.*;
2425
{{#jdk8-no-delegate}}
2526
{{^reactive}}
@@ -33,6 +34,7 @@ import reactor.core.publisher.Flux;
3334
import reactor.core.publisher.Mono;
3435
import org.springframework.http.codec.multipart.Part;
3536
{{/reactive}}
37+
import springfox.documentation.annotations.ApiIgnore;
3638

3739
{{#useBeanValidation}}
3840
import javax.validation.Valid;
@@ -124,19 +126,19 @@ public interface {{classname}} {
124126
produces = { {{#produces}}"{{{mediaType}}}"{{#hasMore}}, {{/hasMore}}{{/produces}} }{{/hasProduces}}{{#hasConsumes}},
125127
consumes = { {{#consumes}}"{{{mediaType}}}"{{#hasMore}}, {{/hasMore}}{{/consumes}} }{{/hasConsumes}}{{/singleContentTypes}}
126128
)
127-
{{#jdk8-default-interface}}default {{/jdk8-default-interface}}{{#responseWrapper}}{{.}}<{{/responseWrapper}}ResponseEntity<{{>returnTypes}}>{{#responseWrapper}}>{{/responseWrapper}} {{#delegate-method}}_{{/delegate-method}}{{operationId}}({{#allParams}}{{>queryParams}}{{>pathParams}}{{>headerParams}}{{>bodyParams}}{{>formParams}}{{>cookieParams}}{{#hasMore}},{{/hasMore}}{{^hasMore}}{{#reactive}}, {{/reactive}}{{/hasMore}}{{/allParams}}{{#reactive}}ServerWebExchange exchange{{/reactive}}){{^jdk8-default-interface}};{{/jdk8-default-interface}}{{#jdk8-default-interface}}{{#unhandledException}} throws Exception{{/unhandledException}} {
129+
{{#jdk8-default-interface}}default {{/jdk8-default-interface}}{{#responseWrapper}}{{.}}<{{/responseWrapper}}ResponseEntity<{{>returnTypes}}>{{#responseWrapper}}>{{/responseWrapper}} {{#delegate-method}}_{{/delegate-method}}{{operationId}}({{#allParams}}{{>queryParams}}{{>pathParams}}{{>headerParams}}{{>bodyParams}}{{>formParams}}{{>cookieParams}}{{#hasMore}},{{/hasMore}}{{^hasMore}}{{#reactive}}, {{/reactive}}{{/hasMore}}{{/allParams}}{{#reactive}}ServerWebExchange exchange{{/reactive}}{{#vendorExtensions.x-spring-paginated}}, @ApiIgnore final Pageable pageable{{/vendorExtensions.x-spring-paginated}}){{^jdk8-default-interface}};{{/jdk8-default-interface}}{{#jdk8-default-interface}}{{#unhandledException}} throws Exception{{/unhandledException}} {
128130
{{#delegate-method}}
129-
return {{operationId}}({{#allParams}}{{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}}{{#reactive}}{{#hasParams}}, {{/hasParams}}exchange{{/reactive}});
131+
return {{operationId}}({{#allParams}}{{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}}{{#reactive}}{{#hasParams}}, {{/hasParams}}exchange{{/reactive}}{{#vendorExtensions.x-spring-paginated}}, pageable{{/vendorExtensions.x-spring-paginated}});
130132
}
131133

132134
// Override this method
133-
{{#jdk8-default-interface}}default {{/jdk8-default-interface}} {{#responseWrapper}}{{.}}<{{/responseWrapper}}ResponseEntity<{{>returnTypes}}>{{#responseWrapper}}>{{/responseWrapper}} {{operationId}}({{#allParams}}{{^isFile}}{{^isBodyParam}}{{>optionalDataType}}{{/isBodyParam}}{{#isBodyParam}}{{^reactive}}{{{dataType}}}{{/reactive}}{{#reactive}}{{^isListContainer}}Mono{{/isListContainer}}{{#isListContainer}}Flux{{/isListContainer}}<{{{baseType}}}>{{/reactive}}{{/isBodyParam}}{{/isFile}}{{#isFile}}{{#reactive}}Flux<Part>{{/reactive}}{{^reactive}}MultipartFile{{/reactive}}{{/isFile}} {{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}}{{#reactive}}{{#hasParams}}, {{/hasParams}}ServerWebExchange exchange{{/reactive}}){{#unhandledException}} throws Exception{{/unhandledException}} {
135+
{{#jdk8-default-interface}}default {{/jdk8-default-interface}} {{#responseWrapper}}{{.}}<{{/responseWrapper}}ResponseEntity<{{>returnTypes}}>{{#responseWrapper}}>{{/responseWrapper}} {{operationId}}({{#allParams}}{{^isFile}}{{^isBodyParam}}{{>optionalDataType}}{{/isBodyParam}}{{#isBodyParam}}{{^reactive}}{{{dataType}}}{{/reactive}}{{#reactive}}{{^isListContainer}}Mono{{/isListContainer}}{{#isListContainer}}Flux{{/isListContainer}}<{{{baseType}}}>{{/reactive}}{{/isBodyParam}}{{/isFile}}{{#isFile}}{{#reactive}}Flux<Part>{{/reactive}}{{^reactive}}MultipartFile{{/reactive}}{{/isFile}} {{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}}{{#reactive}}{{#hasParams}}, {{/hasParams}}ServerWebExchange exchange{{/reactive}}{{#vendorExtensions.x-spring-paginated}}, @ApiIgnore final Pageable pageable{{/vendorExtensions.x-spring-paginated}}){{#unhandledException}} throws Exception{{/unhandledException}} {
134136
{{/delegate-method}}
135137
{{^isDelegate}}
136138
{{>methodBody}}
137139
{{/isDelegate}}
138140
{{#isDelegate}}
139-
return getDelegate().{{operationId}}({{#allParams}}{{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}}{{#reactive}}{{#hasParams}}, {{/hasParams}}exchange{{/reactive}});
141+
return getDelegate().{{operationId}}({{#allParams}}{{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}}{{#reactive}}{{#hasParams}}, {{/hasParams}}exchange{{/reactive}}{{#vendorExtensions.x-spring-paginated}}, pageable{{/vendorExtensions.x-spring-paginated}});
140142
{{/isDelegate}}
141143
}{{/jdk8-default-interface}}
142144

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ import org.springframework.web.context.request.NativeWebRequest;
2525
{{/isDelegate}}
2626
{{^jdk8}}
2727
import org.springframework.web.multipart.MultipartFile;
28+
import org.springframework.data.domain.Pageable;
29+
import springfox.documentation.annotations.ApiIgnore;
2830

2931
{{#useBeanValidation}}
3032
import javax.validation.constraints.*;
@@ -110,7 +112,7 @@ public class {{classname}}Controller implements {{classname}} {
110112
{{/externalDocs}}
111113
* @see {{classname}}#{{operationId}}
112114
*/
113-
public {{#responseWrapper}}{{.}}<{{/responseWrapper}}ResponseEntity<{{>returnTypes}}>{{#responseWrapper}}>{{/responseWrapper}} {{operationId}}({{#allParams}}{{>queryParams}}{{>pathParams}}{{>headerParams}}{{>bodyParams}}{{>formParams}}{{>cookieParams}}{{#hasMore}},{{/hasMore}}{{/allParams}}) {
115+
public {{#responseWrapper}}{{.}}<{{/responseWrapper}}ResponseEntity<{{>returnTypes}}>{{#responseWrapper}}>{{/responseWrapper}} {{operationId}}({{#allParams}}{{>queryParams}}{{>pathParams}}{{>headerParams}}{{>bodyParams}}{{>formParams}}{{>cookieParams}}{{#hasMore}},{{/hasMore}}{{/allParams}}{{#vendorExtensions.x-spring-paginated}}, @ApiIgnore final Pageable pageable{{/vendorExtensions.x-spring-paginated}}) {
114116
{{^isDelegate}}
115117
{{^async}}
116118
{{>methodBody}}
@@ -125,7 +127,7 @@ public class {{classname}}Controller implements {{classname}} {
125127
{{/async}}
126128
{{/isDelegate}}
127129
{{#isDelegate}}
128-
return delegate.{{operationId}}({{#allParams}}{{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}});
130+
return delegate.{{operationId}}({{#allParams}}{{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}}{{#vendorExtensions.x-spring-paginated}}, pageable{{/vendorExtensions.x-spring-paginated}});
129131
{{/isDelegate}}
130132
}
131133

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package {{package}};
33
{{#imports}}import {{import}};
44
{{/imports}}
55
import io.swagger.annotations.*;
6+
import org.springframework.data.domain.Pageable;
67
{{#jdk8}}
78
import org.springframework.http.HttpStatus;
89
import org.springframework.http.MediaType;
@@ -70,7 +71,7 @@ public interface {{classname}}Delegate {
7071
*/
7172
{{#jdk8-default-interface}}default {{/jdk8-default-interface}}{{#responseWrapper}}{{.}}<{{/responseWrapper}}ResponseEntity<{{>returnTypes}}>{{#responseWrapper}}>{{/responseWrapper}} {{operationId}}({{#allParams}}{{^isFile}}{{^isBodyParam}}{{>optionalDataType}}{{/isBodyParam}}{{#isBodyParam}}{{^reactive}}{{{dataType}}}{{/reactive}}{{#reactive}}{{^isListContainer}}Mono{{/isListContainer}}{{#isListContainer}}Flux{{/isListContainer}}<{{{baseType}}}>{{/reactive}}{{/isBodyParam}}{{/isFile}}{{#isFile}}{{#isListContainer}}List<{{/isListContainer}}{{#reactive}}Flux<Part>{{/reactive}}{{^reactive}}MultipartFile{{/reactive}}{{#isListContainer}}>{{/isListContainer}}{{/isFile}} {{paramName}}{{#hasMore}},
7273
{{/hasMore}}{{/allParams}}{{#reactive}}{{#hasParams}},
73-
{{/hasParams}}ServerWebExchange exchange{{/reactive}}){{#unhandledException}} throws Exception{{/unhandledException}}{{^jdk8-default-interface}};{{/jdk8-default-interface}}{{#jdk8-default-interface}} {
74+
{{/hasParams}}ServerWebExchange exchange{{/reactive}}{{#vendorExtensions.x-spring-paginated}}, final Pageable pageable{{/vendorExtensions.x-spring-paginated}}){{#unhandledException}} throws Exception{{/unhandledException}}{{^jdk8-default-interface}};{{/jdk8-default-interface}}{{#jdk8-default-interface}} {
7475
{{>methodBody}}
7576
}{{/jdk8-default-interface}}
7677

0 commit comments

Comments
 (0)