11package com .baeldung .web .hateoas .listener ;
22
3+ import java .util .StringJoiner ;
4+
35import javax .servlet .http .HttpServletResponse ;
46
57import org .springframework .context .ApplicationListener ;
@@ -27,32 +29,32 @@ public PaginatedResultsRetrievedDiscoverabilityListener() {
2729 public final void onApplicationEvent (final PaginatedResultsRetrievedEvent ev ) {
2830 Preconditions .checkNotNull (ev );
2931
30- addLinkHeaderOnPagedResourceRetrieval (ev .getUriBuilder (), ev .getResponse (), ev .getClazz (), ev .getPage (), ev .getTotalPages (), ev .getPageSize ());
32+ addLinkHeaderOnPagedResourceRetrieval (ev .getUriBuilder (), ev .getResponse (), ev .getClazz (), ev .getPage (),
33+ ev .getTotalPages (), ev .getPageSize ());
3134 }
3235
3336 // - note: at this point, the URI is transformed into plural (added `s`) in a hardcoded way - this will change in the future
34- final void addLinkHeaderOnPagedResourceRetrieval (final UriComponentsBuilder uriBuilder , final HttpServletResponse response , final Class clazz , final int page , final int totalPages , final int pageSize ) {
37+ final void addLinkHeaderOnPagedResourceRetrieval (final UriComponentsBuilder uriBuilder ,
38+ final HttpServletResponse response , final Class clazz , final int page , final int totalPages ,
39+ final int pageSize ) {
3540 plural (uriBuilder , clazz );
3641
37- final StringBuilder linkHeader = new StringBuilder ( );
42+ final StringJoiner linkHeader = new StringJoiner ( ", " );
3843 if (hasNextPage (page , totalPages )) {
3944 final String uriForNextPage = constructNextPageUri (uriBuilder , page , pageSize );
40- linkHeader .append (LinkUtil .createLinkHeader (uriForNextPage , LinkUtil .REL_NEXT ));
45+ linkHeader .add (LinkUtil .createLinkHeader (uriForNextPage , LinkUtil .REL_NEXT ));
4146 }
4247 if (hasPreviousPage (page )) {
4348 final String uriForPrevPage = constructPrevPageUri (uriBuilder , page , pageSize );
44- appendCommaIfNecessary (linkHeader );
45- linkHeader .append (LinkUtil .createLinkHeader (uriForPrevPage , LinkUtil .REL_PREV ));
49+ linkHeader .add (LinkUtil .createLinkHeader (uriForPrevPage , LinkUtil .REL_PREV ));
4650 }
4751 if (hasFirstPage (page )) {
4852 final String uriForFirstPage = constructFirstPageUri (uriBuilder , pageSize );
49- appendCommaIfNecessary (linkHeader );
50- linkHeader .append (LinkUtil .createLinkHeader (uriForFirstPage , LinkUtil .REL_FIRST ));
53+ linkHeader .add (LinkUtil .createLinkHeader (uriForFirstPage , LinkUtil .REL_FIRST ));
5154 }
5255 if (hasLastPage (page , totalPages )) {
5356 final String uriForLastPage = constructLastPageUri (uriBuilder , totalPages , pageSize );
54- appendCommaIfNecessary (linkHeader );
55- linkHeader .append (LinkUtil .createLinkHeader (uriForLastPage , LinkUtil .REL_LAST ));
57+ linkHeader .add (LinkUtil .createLinkHeader (uriForLastPage , LinkUtil .REL_LAST ));
5658 }
5759
5860 if (linkHeader .length () > 0 ) {
@@ -61,19 +63,35 @@ final void addLinkHeaderOnPagedResourceRetrieval(final UriComponentsBuilder uriB
6163 }
6264
6365 final String constructNextPageUri (final UriComponentsBuilder uriBuilder , final int page , final int size ) {
64- return uriBuilder .replaceQueryParam (PAGE , page + 1 ).replaceQueryParam ("size" , size ).build ().encode ().toUriString ();
66+ return uriBuilder .replaceQueryParam (PAGE , page + 1 )
67+ .replaceQueryParam ("size" , size )
68+ .build ()
69+ .encode ()
70+ .toUriString ();
6571 }
6672
6773 final String constructPrevPageUri (final UriComponentsBuilder uriBuilder , final int page , final int size ) {
68- return uriBuilder .replaceQueryParam (PAGE , page - 1 ).replaceQueryParam ("size" , size ).build ().encode ().toUriString ();
74+ return uriBuilder .replaceQueryParam (PAGE , page - 1 )
75+ .replaceQueryParam ("size" , size )
76+ .build ()
77+ .encode ()
78+ .toUriString ();
6979 }
7080
7181 final String constructFirstPageUri (final UriComponentsBuilder uriBuilder , final int size ) {
72- return uriBuilder .replaceQueryParam (PAGE , 0 ).replaceQueryParam ("size" , size ).build ().encode ().toUriString ();
82+ return uriBuilder .replaceQueryParam (PAGE , 0 )
83+ .replaceQueryParam ("size" , size )
84+ .build ()
85+ .encode ()
86+ .toUriString ();
7387 }
7488
7589 final String constructLastPageUri (final UriComponentsBuilder uriBuilder , final int totalPages , final int size ) {
76- return uriBuilder .replaceQueryParam (PAGE , totalPages ).replaceQueryParam ("size" , size ).build ().encode ().toUriString ();
90+ return uriBuilder .replaceQueryParam (PAGE , totalPages )
91+ .replaceQueryParam ("size" , size )
92+ .build ()
93+ .encode ()
94+ .toUriString ();
7795 }
7896
7997 final boolean hasNextPage (final int page , final int totalPages ) {
@@ -92,16 +110,11 @@ final boolean hasLastPage(final int page, final int totalPages) {
92110 return (totalPages > 1 ) && hasNextPage (page , totalPages );
93111 }
94112
95- final void appendCommaIfNecessary (final StringBuilder linkHeader ) {
96- if (linkHeader .length () > 0 ) {
97- linkHeader .append (", " );
98- }
99- }
100-
101113 // template
102114
103115 protected void plural (final UriComponentsBuilder uriBuilder , final Class clazz ) {
104- final String resourceName = clazz .getSimpleName ().toLowerCase () + "s" ;
116+ final String resourceName = clazz .getSimpleName ()
117+ .toLowerCase () + "s" ;
105118 uriBuilder .path ("/auth/" + resourceName );
106119 }
107120
0 commit comments