*/
protected <T> void wrapForPaging(Response.ResponseBuilder builder, UriInfo uriInfo, final PageList<?> originalList, final Collection<T> resultList) {
PagingCollection<T> pColl = new PagingCollection<T>(resultList);
pColl.setTotalSize(originalList.getTotalSize());
PageControl pageControl = originalList.getPageControl();
pColl.setPageSize(pageControl.getPageSize());
int page = pageControl.getPageNumber();
pColl.setCurrentPage(page);
int lastPage = (originalList.getTotalSize() / pageControl.getPageSize()) -1 ; // -1 as page # is 0 based
pColl.setLastPage(lastPage);
UriBuilder uriBuilder;
if (originalList.getTotalSize() > (page +1 ) * pageControl.getPageSize()) {
int nextPage = page +1;
uriBuilder = uriInfo.getRequestUriBuilder(); // adds ?q, ?ps and ?category if needed
uriBuilder.replaceQueryParam("page",nextPage);
pColl.addLink(new Link("next",uriBuilder.build().toString()));
}
if (page > 0) {
int prevPage = page -1;
uriBuilder = uriInfo.getRequestUriBuilder(); // adds ?q, ?ps and ?category if needed
uriBuilder.replaceQueryParam("page",prevPage);
pColl.addLink(new Link("prev",uriBuilder.build().toString()));
}
// A link to the last page
if (!pageControl.isUnlimited()) {
uriBuilder = uriInfo.getRequestUriBuilder(); // adds ?q, ?ps and ?category if needed
uriBuilder.replaceQueryParam("page",lastPage);
pColl.addLink( new Link("last",uriBuilder.build().toString()));
}