Fixing context pagination
This commit is contained in:
parent
08fca98875
commit
d786ffff98
|
@ -146,7 +146,7 @@ public class ServerContextCache extends ContextCache {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected void setContexts(List<Context> contexts) {
|
||||
public void setContexts(List<Context> contexts) {
|
||||
this.contexts = new ArrayList<>();
|
||||
this.contextsNoMeta = new ArrayList<>();
|
||||
this.contextsMetaPrivacy = new ArrayList<>();
|
||||
|
|
|
@ -70,32 +70,33 @@ public class ServerRequestInfo extends BaseRequestInfo implements RequestInfo {
|
|||
* Set the parameter if the user is allowed otherwise the default is maintained
|
||||
* @param queryParameterKey requested query parameter
|
||||
* @param bool the value to set
|
||||
* @param forceAllowed force the value and skip the isAllowed check
|
||||
* @return the value of variable corresponding the request parameter
|
||||
* independently if the value has been set.
|
||||
*/
|
||||
public boolean setIfAllowed(String queryParameterKey, boolean bool) {
|
||||
public boolean setIfAllowed(String queryParameterKey, boolean bool, boolean forceAllowed) {
|
||||
|
||||
switch (queryParameterKey) {
|
||||
case InstancePath.INCLUDE_META_QUERY_PARAMETER:
|
||||
if(isAllowed(queryParameterKey)) {
|
||||
if(forceAllowed || isAllowed(queryParameterKey)) {
|
||||
includeMeta = bool;
|
||||
}
|
||||
return includeMeta;
|
||||
|
||||
case InstancePath.INCLUDE_META_IN_ALL_INSTANCES_QUERY_PARAMETER:
|
||||
if(isAllowed(queryParameterKey)) {
|
||||
if(forceAllowed || isAllowed(queryParameterKey)) {
|
||||
allMeta = bool;
|
||||
}
|
||||
return allMeta;
|
||||
|
||||
case InstancePath.INCLUDE_CONTEXTS_QUERY_PARAMETER:
|
||||
if(isAllowed(queryParameterKey)) {
|
||||
if(forceAllowed || isAllowed(queryParameterKey)) {
|
||||
includeContexts = bool;
|
||||
}
|
||||
return includeContexts;
|
||||
|
||||
case InstancePath.HIERARCHICAL_MODE_QUERY_PARAMETER:
|
||||
if(isAllowed(queryParameterKey)) {
|
||||
if(forceAllowed || isAllowed(queryParameterKey)) {
|
||||
hierarchicalMode = bool;
|
||||
}
|
||||
return hierarchicalMode;
|
||||
|
@ -107,24 +108,36 @@ public class ServerRequestInfo extends BaseRequestInfo implements RequestInfo {
|
|||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the parameter if the user is allowed otherwise the default is maintained
|
||||
* @param queryParameterKey requested query parameter
|
||||
* @param bool the value to set
|
||||
* @return the value of variable corresponding the request parameter
|
||||
* independently if the value has been set.
|
||||
*/
|
||||
public boolean setIfAllowed(String queryParameterKey, boolean bool) {
|
||||
return setIfAllowed(queryParameterKey, bool, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the parameter if the user is allowed otherwise the default is maintained
|
||||
* @param queryParameterKey requested query parameter
|
||||
* @param integer the int value to set
|
||||
* @param forceAllowed force the value and skip the isAllowed check
|
||||
* @return the value of variable corresponding the request parameter independently if
|
||||
* the value has been set.
|
||||
*/
|
||||
public int setIfAllowed(String queryParameterKey, int integer) {
|
||||
public int setIfAllowed(String queryParameterKey, int integer, boolean forceAllowed) {
|
||||
|
||||
switch (queryParameterKey) {
|
||||
case InstancePath.LIMIT_QUERY_PARAMETER:
|
||||
if(isAllowed(queryParameterKey)) {
|
||||
if(forceAllowed || isAllowed(queryParameterKey)) {
|
||||
limit = integer;
|
||||
}
|
||||
return limit;
|
||||
|
||||
case InstancePath.OFFSET_QUERY_PARAMETER:
|
||||
if(isAllowed(queryParameterKey)) {
|
||||
if(forceAllowed || isAllowed(queryParameterKey)) {
|
||||
offset = integer;
|
||||
}
|
||||
return offset;
|
||||
|
@ -136,6 +149,18 @@ public class ServerRequestInfo extends BaseRequestInfo implements RequestInfo {
|
|||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the parameter if the user is allowed otherwise the default is maintained
|
||||
* @param queryParameterKey requested query parameter
|
||||
* @param integer the int value to set
|
||||
* @return the value of variable corresponding the request parameter independently if
|
||||
* the value has been set.
|
||||
*/
|
||||
public int setIfAllowed(String queryParameterKey, int integer) {
|
||||
return setIfAllowed(queryParameterKey, integer, false);
|
||||
}
|
||||
|
||||
|
||||
public void checkBooleanQueryParameter(String queryParameterKey) {
|
||||
try {
|
||||
List<String> queryParameterList = uriInfo.getQueryParameters().get(queryParameterKey);
|
||||
|
@ -145,20 +170,26 @@ public class ServerRequestInfo extends BaseRequestInfo implements RequestInfo {
|
|||
setIfAllowed(queryParameterKey, bool);
|
||||
}
|
||||
}catch (Throwable t) {
|
||||
logger.warn("Unable to properly set the Hierarchical Mode is set", t.getMessage());
|
||||
logger.warn("Unable to properly set " + queryParameterKey, t.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public void checkIntegerQueryParameter(String queryParameterKey) {
|
||||
checkIntegerQueryParameter(queryParameterKey, null);
|
||||
}
|
||||
|
||||
public void checkIntegerQueryParameter(String queryParameterKey, Integer defaultValue) {
|
||||
try {
|
||||
List<String> queryParameterList = uriInfo.getQueryParameters().get(queryParameterKey);
|
||||
if(queryParameterList!=null && queryParameterList.size()>0) {
|
||||
String intString = queryParameterList.get(0);
|
||||
int integer = Integer.valueOf(intString);
|
||||
setIfAllowed(queryParameterKey, integer);
|
||||
}else if(defaultValue!=null) {
|
||||
setIfAllowed(queryParameterKey, defaultValue, true);
|
||||
}
|
||||
}catch (Throwable t) {
|
||||
logger.warn("Unable to properly set the Hierarchical Mode is set", t.getMessage());
|
||||
logger.warn("Unable to properly set " + queryParameterKey, t.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -182,9 +213,12 @@ public class ServerRequestInfo extends BaseRequestInfo implements RequestInfo {
|
|||
checkBooleanQueryParameter(InstancePath.INCLUDE_META_IN_ALL_INSTANCES_QUERY_PARAMETER);
|
||||
}
|
||||
|
||||
public void checkLimitOffset() {
|
||||
checkIntegerQueryParameter(InstancePath.LIMIT_QUERY_PARAMETER);
|
||||
checkIntegerQueryParameter(InstancePath.OFFSET_QUERY_PARAMETER);
|
||||
public void checkLimitOffset(int offset, int limit) {
|
||||
checkIntegerQueryParameter(InstancePath.OFFSET_QUERY_PARAMETER, offset);
|
||||
checkIntegerQueryParameter(InstancePath.LIMIT_QUERY_PARAMETER, limit);
|
||||
}
|
||||
|
||||
public void checkLimitOffset() {
|
||||
checkLimitOffset(DEFAULT_OFFSET, DEFAULT_LIMIT);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -49,7 +49,7 @@ public class ContextManager extends BaseRest {
|
|||
ServerRequestInfo serverRequestInfo = initRequestInfo();
|
||||
serverRequestInfo.setAllMeta(true);
|
||||
serverRequestInfo.checkBooleanQueryParameter(ContextPath.INCLUDE_META_QUERY_PARAMETER);
|
||||
serverRequestInfo.checkLimitOffset();
|
||||
serverRequestInfo.checkLimitOffset(0, -1);
|
||||
|
||||
ContextManagement contextManagement = new ContextManagement();
|
||||
return contextManagement.all(false);
|
||||
|
|
Loading…
Reference in New Issue