@Override public int getPageSize() { return query.getPageSize(); }
@GET @Path("e4/pagination_stage") public DataResponse<E4> get_WithPaginationStage(@Context UriInfo uriInfo) { return Ag.service(config) .select(E4.class) .uri(uriInfo) .stage(SelectStage.APPLY_SERVER_PARAMS, c -> RESOURCE_ENTITY_IS_FILTERED = c.getEntity().isFiltered()) .stage(SelectStage.ASSEMBLE_QUERY, c -> QUERY_PAGE_SIZE = c.getSelect().getPageSize()) .get(); } }
@Test public void testBuildQuery_Pagination() { ResourceEntity<E1> resourceEntity = new ResourceEntity<>(getAgEntity(E1.class)); resourceEntity.setFetchLimit(10); resourceEntity.setFetchOffset(0); SelectContext<E1> c = new SelectContext<E1>(E1.class); c.setEntity(resourceEntity); SelectQuery<E1> q1 = makeQueryStage.buildQuery(c); assertEquals("Pagination in the query for paginated request is expected", 10, q1.getPageSize()); assertEquals(0, q1.getFetchOffset()); assertEquals(0, q1.getFetchLimit()); resourceEntity.setFetchLimit(0); resourceEntity.setFetchOffset(0); SelectQuery<E1> q2 = makeQueryStage.buildQuery(c); assertEquals(0, q2.getPageSize()); assertEquals(0, q2.getFetchOffset()); assertEquals(0, q2.getFetchLimit()); resourceEntity.setFetchLimit(0); resourceEntity.setFetchOffset(5); SelectQuery<E1> q3 = makeQueryStage.buildQuery(c); assertEquals(0, q3.getPageSize()); assertEquals(0, q3.getFetchOffset()); assertEquals(0, q3.getFetchLimit()); }