Skip to content

Instantly share code, notes, and snippets.

@eugenp
Created January 15, 2012 23:54
Show Gist options
  • Save eugenp/1618081 to your computer and use it in GitHub Desktop.
Save eugenp/1618081 to your computer and use it in GitHub Desktop.
Pagination with REST - the Discoverability Listener
void addLinkHeaderOnPagedResourceRetrieval(
UriComponentsBuilder uriBuilder, HttpServletResponse response,
Class clazz, int page, int totalPages, int size ){
String resourceName = clazz.getSimpleName().toString().toLowerCase();
uriBuilder.path( "/admin/" + resourceName );
StringBuilder linkHeader = new StringBuilder();
if( hasNextPage( page, totalPages ) ){
String uriNextPage = constructNextPageUri( uriBuilder, page, size );
linkHeader.append( createLinkHeader( uriForNextPage, REL_NEXT ) );
}
if( hasPreviousPage( page ) ){
String uriPrevPage = constructPrevPageUri( uriBuilder, page, size );
appendCommaIfNecessary( linkHeader );
linkHeader.append( createLinkHeader( uriForPrevPage, REL_PREV ) );
}
if( hasFirstPage( page ) ){
String uriFirstPage = constructFirstPageUri( uriBuilder, size );
appendCommaIfNecessary( linkHeader );
linkHeader.append( createLinkHeader( uriForFirstPage, REL_FIRST ) );
}
if( hasLastPage( page, totalPages ) ){
String uriLastPage = constructLastPageUri( uriBuilder, totalPages, size );
appendCommaIfNecessary( linkHeader );
linkHeader.append( createLinkHeader( uriForLastPage, REL_LAST ) );
}
response.addHeader( HttpConstants.LINK_HEADER, linkHeader.toString() );
}
@eugenp
Copy link
Author

eugenp commented Jan 29, 2012

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment