Skip to content

Commit

Permalink
Fix Incorrect Pagination Links in Microservices When Forwarded Throug…
Browse files Browse the repository at this point in the history
…h Gateway
  • Loading branch information
yhao3 committed Sep 28, 2024
1 parent af002a2 commit 1aac46f
Show file tree
Hide file tree
Showing 8 changed files with 17 additions and 16 deletions.
4 changes: 0 additions & 4 deletions generators/spring-boot/files.ts
Original file line number Diff line number Diff line change
Expand Up @@ -352,10 +352,6 @@ export const baseServerFiles = {
},
],
serverMicroservice: [
javaMainPackageTemplatesBlock({
condition: generator => generator.applicationTypeMicroservice,
templates: ['config/SpringDocConfiguration.java'],
}),
{
condition: generator => generator.applicationTypeMicroservice,
path: SERVER_MAIN_RES_DIR,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ _%>
return ResponseEntity.ok().body(entityList);
<%_ } else { _%>
Page<<%= instanceType %>> page = <%= entityInstance %>QueryService.findByCriteria(criteria, pageable);
HttpHeaders headers = PaginationUtil.generatePaginationHttpHeaders(<% if (!reactive) { %>ServletUriComponentsBuilder.fromCurrentRequest()<% } else { %>ForwardedHeaderUtils.adaptFromForwardedHeaders(request.getURI(), request.getHeaders())<% } %>, page);
HttpHeaders headers = PaginationUtil.generatePaginationHttpHeaders(<% if (!reactive) { %>ServletUriComponentsBuilder.fromCurrentRequest()<% } else { %>UriComponentsBuilder.fromUri(request.getURI())<% } %>, page);
return ResponseEntity.ok().headers(headers).body(page.getContent());
<%_ } _%>
<%_ } else { _%>
Expand All @@ -47,7 +47,7 @@ _%>
ResponseEntity.ok()
.headers(
PaginationUtil.generatePaginationHttpHeaders(
ForwardedHeaderUtils.adaptFromForwardedHeaders(request.getURI(), request.getHeaders()),
UriComponentsBuilder.fromUri(request.getURI()),
new PageImpl<>(countWithEntities.getT2(), pageable, countWithEntities.getT1())
)
).body(countWithEntities.getT2())
Expand Down Expand Up @@ -104,7 +104,7 @@ _%>
ResponseEntity.ok()
.headers(
PaginationUtil.generatePaginationHttpHeaders(
ForwardedHeaderUtils.adaptFromForwardedHeaders(request.getURI(), request.getHeaders()),
UriComponentsBuilder.fromUri(request.getURI()),
new PageImpl<>(countWithEntities.getT2(), pageable, countWithEntities.getT1())
)
).body(countWithEntities.getT2())
Expand All @@ -117,10 +117,10 @@ _%>
} else {
page = <%= entityInstance %><%= viaService ? 'Service' : 'Repository' %>.findAll(pageable)<%= reactiveEntityToDto %>;
}
HttpHeaders headers = PaginationUtil.generatePaginationHttpHeaders(<% if (reactive) { %>ForwardedHeaderUtils.adaptFromForwardedHeaders(request.getURI(), request.getHeaders())<% } else { %>ServletUriComponentsBuilder.fromCurrentRequest()<% } %>, page);
HttpHeaders headers = PaginationUtil.generatePaginationHttpHeaders(<% if (reactive) { %>UriComponentsBuilder.fromUri(request.getURI())<% } else { %>ServletUriComponentsBuilder.fromCurrentRequest()<% } %>, page);
<%_ } else { _%>
Page<<%= instanceType %>> page = <%= entityInstance %><%= viaService ? 'Service' : 'Repository' %>.findAll(pageable)<%= reactiveEntityToDto %>;
HttpHeaders headers = PaginationUtil.generatePaginationHttpHeaders(<% if (reactive) { %>ForwardedHeaderUtils.adaptFromForwardedHeaders(request.getURI(), request.getHeaders())<% } else { %>ServletUriComponentsBuilder.fromCurrentRequest()<% } %>, page);
HttpHeaders headers = PaginationUtil.generatePaginationHttpHeaders(<% if (reactive) { %>UriComponentsBuilder.fromUri(request.getURI())<% } else { %>ServletUriComponentsBuilder.fromCurrentRequest()<% } %>, page);
<%_ } _%>
return ResponseEntity.ok().headers(headers).body(page.getContent());
<%_ } _%>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ if (paginationNo) { %>
'Service.' + (searchEngineElasticsearch ? 'searchCount' : 'countAll') :
(searchEngineElasticsearch ? 'Search' : '') + 'Repository.count' %>()
.map(total -> new PageImpl<>(new ArrayList<>(), pageable, total))
.map(page -> PaginationUtil.generatePaginationHttpHeaders(ForwardedHeaderUtils.adaptFromForwardedHeaders(request.getURI(), request.getHeaders()), page))
.map(page -> PaginationUtil.generatePaginationHttpHeaders(UriComponentsBuilder.fromUri(request.getURI()), page))
.map(headers -> ResponseEntity.ok().headers(headers).body(<%= entityInstance %><%= viaService ? 'Service' : (searchEngineElasticsearch ? 'Search' : '') + 'Repository' %>.search(query, pageable)<% if (!viaService && dtoMapstruct) { %>.map(<%= entityToDtoReference %>)<% } %>));
<%_ } else { _%>
try {
Expand All @@ -43,7 +43,7 @@ if (paginationNo) { %>
<%_ } else { _%>
Page<<%= persistClass %>> page = <%= entityInstance %><% if (searchEngineElasticsearch) { %>Search<% } %>Repository.search(query, pageable);
<%_ } _%>
HttpHeaders headers = PaginationUtil.generatePaginationHttpHeaders(<% if (reactive) { %>ForwardedHeaderUtils.adaptFromForwardedHeaders(request.getURI(), request.getHeaders())<% } else { %>ServletUriComponentsBuilder.fromCurrentRequest()<% } %>, page);
HttpHeaders headers = PaginationUtil.generatePaginationHttpHeaders(<% if (reactive) { %>UriComponentsBuilder.fromUri(request.getURI())<% } else { %>ServletUriComponentsBuilder.fromCurrentRequest()<% } %>, page);
return ResponseEntity.ok().headers(headers).body(<% if (!viaService && dtoMapstruct) { %><%= entityListToDtoListReference %>(<% } %>page.getContent()<% if (!viaService && dtoMapstruct) { %>)<% } %>);
} catch (RuntimeException e) {
<% if (searchEngineElasticsearch) { %>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.web.bind.annotation.*;
<%_ if (reactive) { _%>
import org.springframework.web.server.ResponseStatusException;
import org.springframework.web.util.ForwardedHeaderUtils;
import org.springframework.web.util.UriComponentsBuilder;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
<%_ } else {_%>
Expand Down Expand Up @@ -133,7 +133,7 @@ public class PublicUserResource {
return userService.countManagedUsers()
.map(total -> new PageImpl<>(new ArrayList<>(), pageable, total))
.map(page -> PaginationUtil.generatePaginationHttpHeaders(ForwardedHeaderUtils.adaptFromForwardedHeaders(request.getURI(), request.getHeaders()), page))
.map(page -> PaginationUtil.generatePaginationHttpHeaders(UriComponentsBuilder.fromUri(request.getURI()), page))
.map(headers -> ResponseEntity.ok().headers(headers).body(userService.getAllPublicUsers(pageable)));
}
<%_ } else { _%>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
<%_ if (reactive) { _%>
import org.springframework.web.server.ResponseStatusException;
import org.springframework.web.util.ForwardedHeaderUtils;
import org.springframework.web.util.UriComponentsBuilder;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
<%_ } else { _%>
Expand Down Expand Up @@ -288,7 +288,7 @@ public class UserResource {
.map(total -> new PageImpl<>(new ArrayList<>(), pageable, total))
.map(page ->
PaginationUtil.generatePaginationHttpHeaders(
ForwardedHeaderUtils.adaptFromForwardedHeaders(request.getURI(), request.getHeaders()),
UriComponentsBuilder.fromUri(request.getURI()),
page
)
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ import org.springframework.http.HttpHeaders;
import org.springframework.http.server.reactive.ServerHttpRequest;
<%_ } _%>
<%_ if (reactive) { _%>
import org.springframework.web.util.ForwardedHeaderUtils;
import org.springframework.web.util.UriComponentsBuilder;
<%_ } else { _%>
import org.springframework.web.servlet.support.ServletUriComponentsBuilder;
<%_ } _%>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -209,8 +209,10 @@ spring:

server:
port: <%= serverPort %>
<%_ if (applicationTypeMonolith || applicationTypeGateway) { _%>
# make sure requests the proxy uri instead of the server one
forward-headers-strategy: native
<%_ } _%>

# ===================================================================
# JHipster specific properties
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -398,6 +398,9 @@ spring:
console-available: true

server:
<%_ if (applicationTypeMicroservice) { _%>
forward-headers-strategy: FRAMEWORK
<%_ } _%>
servlet:
session:
cookie:
Expand Down

0 comments on commit 1aac46f

Please sign in to comment.