Skip to content
Snippets Groups Projects

feat: Create annotation to allow pagination by endpoint

1 unresolved thread
2 files
+ 42
1
Compare changes
  • Side-by-side
  • Inline
Files
2
@@ -6,12 +6,14 @@
@@ -6,12 +6,14 @@
* which is available at https://www.eclipse.org/legal/epl-2.0/
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
*
* Author: Martin Lowe <martin.lowe@eclipse-foundation.org>
* Author: Martin Lowe <martin.lowe@eclipse-foundation.org>
 
Zachary Sabourin <zachary.sabourin@eclipse-foundation.org>
*
*
* SPDX-License-Identifier: EPL-2.0
* SPDX-License-Identifier: EPL-2.0
**********************************************************************/
**********************************************************************/
package org.eclipsefoundation.core.response;
package org.eclipsefoundation.core.response;
import java.io.IOException;
import java.io.IOException;
 
import java.lang.reflect.Method;
import java.util.List;
import java.util.List;
import java.util.Set;
import java.util.Set;
import java.util.TreeSet;
import java.util.TreeSet;
@@ -23,6 +25,7 @@ import javax.servlet.http.HttpServletResponse;
@@ -23,6 +25,7 @@ import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerResponseContext;
import javax.ws.rs.container.ContainerResponseContext;
import javax.ws.rs.container.ContainerResponseFilter;
import javax.ws.rs.container.ContainerResponseFilter;
 
import javax.ws.rs.container.ResourceInfo;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.UriBuilder;
import javax.ws.rs.core.UriBuilder;
@@ -69,12 +72,19 @@ public class PaginatedResultsFilter implements ContainerResponseFilter {
@@ -69,12 +72,19 @@ public class PaginatedResultsFilter implements ContainerResponseFilter {
@Context
@Context
HttpServletResponse response;
HttpServletResponse response;
 
@Context
 
ResourceInfo resourceInfo;
@Override
@Override
public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext)
public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext)
throws IOException {
throws IOException {
if (enablePagination.get()) {
 
Method method = resourceInfo.getResourceMethod();
 
Pagination annotation = method.getAnnotation(Pagination.class);
 
 
if ((annotation == null || annotation.value()) && enablePagination.get()) {
Object entity = responseContext.getEntity();
Object entity = responseContext.getEntity();
 
// only try and paginate if there are multiple entities
// only try and paginate if there are multiple entities
if (entity instanceof Set) {
if (entity instanceof Set) {
paginateResults(responseContext,
paginateResults(responseContext,
Loading