Improving offset limit management to properly support paginated result
This commit is contained in:
parent
1eb1cf6773
commit
c611a839eb
|
@ -481,14 +481,18 @@ public class ContextManagement extends EntityElementManagement<Context, EntityTy
|
|||
List<Context> contexts = contextCache.getContexts();
|
||||
|
||||
ServerRequestInfo requestInfo = RequestUtility.getRequestInfo().get();
|
||||
int limit = requestInfo.getLimit();
|
||||
Integer limit = requestInfo.getLimit();
|
||||
if(forceLimit!=null) {
|
||||
limit = forceLimit;
|
||||
}else if(limit == null) {
|
||||
limit = -1;
|
||||
}
|
||||
|
||||
int offset = requestInfo.getOffset();
|
||||
Integer offset = requestInfo.getOffset();
|
||||
if(forceOffset!=null) {
|
||||
offset = forceOffset;
|
||||
}else if(offset == null) {
|
||||
offset = 0;
|
||||
}
|
||||
|
||||
int position = -1;
|
||||
|
|
|
@ -24,6 +24,11 @@ public class ServerRequestInfo extends BaseRequestInfo implements RequestInfo {
|
|||
this.uriInfo = null;
|
||||
}
|
||||
|
||||
public ServerRequestInfo(int offset, int limit) {
|
||||
super(offset, limit);
|
||||
this.uriInfo = null;
|
||||
}
|
||||
|
||||
public UriInfo getUriInfo() {
|
||||
return uriInfo;
|
||||
}
|
||||
|
|
|
@ -35,15 +35,20 @@ public class BaseRest {
|
|||
setAccountingMethod(accountingMethod.toString());
|
||||
}
|
||||
|
||||
|
||||
|
||||
protected ServerRequestInfo initRequestInfo() {
|
||||
ServerRequestInfo requestInfo = new ServerRequestInfo();
|
||||
private ServerRequestInfo initRequestInfo(ServerRequestInfo requestInfo) {
|
||||
requestInfo.setUriInfo(uriInfo);
|
||||
|
||||
RequestUtility.getRequestInfo().set(requestInfo);
|
||||
|
||||
return requestInfo;
|
||||
}
|
||||
|
||||
protected ServerRequestInfo initRequestInfo(int offset, int limit) {
|
||||
ServerRequestInfo requestInfo = new ServerRequestInfo(offset, limit);
|
||||
return initRequestInfo(requestInfo);
|
||||
}
|
||||
|
||||
protected ServerRequestInfo initRequestInfo() {
|
||||
ServerRequestInfo requestInfo = new ServerRequestInfo();
|
||||
return initRequestInfo(requestInfo);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -18,6 +18,7 @@ import org.gcube.informationsystem.contexts.reference.entities.Context;
|
|||
import org.gcube.informationsystem.resourceregistry.ResourceInitializer;
|
||||
import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException;
|
||||
import org.gcube.informationsystem.resourceregistry.api.exceptions.contexts.ContextNotFoundException;
|
||||
import org.gcube.informationsystem.resourceregistry.api.request.BaseRequestInfo;
|
||||
import org.gcube.informationsystem.resourceregistry.api.rest.ContextPath;
|
||||
import org.gcube.informationsystem.resourceregistry.contexts.ContextUtility;
|
||||
import org.gcube.informationsystem.resourceregistry.contexts.entities.ContextManagement;
|
||||
|
@ -46,10 +47,9 @@ public class ContextManager extends BaseRest {
|
|||
logger.info("Requested to read all {}s", Context.NAME);
|
||||
setAccountingMethod(Method.LIST, Context.NAME);
|
||||
|
||||
ServerRequestInfo serverRequestInfo = initRequestInfo();
|
||||
ServerRequestInfo serverRequestInfo = initRequestInfo(BaseRequestInfo.DEFAULT_OFFSET, BaseRequestInfo.UNBOUNDED_LIMIT);
|
||||
serverRequestInfo.setAllMeta(true);
|
||||
serverRequestInfo.checkBooleanQueryParameter(ContextPath.INCLUDE_META_QUERY_PARAMETER);
|
||||
serverRequestInfo.checkLimitOffset(0, -1);
|
||||
|
||||
ContextManagement contextManagement = new ContextManagement();
|
||||
return contextManagement.all(false);
|
||||
|
|
Loading…
Reference in New Issue