Added full support for hierarchical mode

This commit is contained in:
Luca Frosini 2020-10-27 15:36:28 +01:00
parent a7c89cded0
commit a19c3dbf87
3 changed files with 48 additions and 4 deletions

View File

@ -48,7 +48,7 @@ import com.tinkerpop.blueprints.Direction;
* @author Luca Frosini (ISTI - CNR) * @author Luca Frosini (ISTI - CNR)
*/ */
@Path(AccessPath.ACCESS_PATH_PART) @Path(AccessPath.ACCESS_PATH_PART)
public class Access { public class Access extends BaseRest {
private static Logger logger = LoggerFactory.getLogger(Access.class); private static Logger logger = LoggerFactory.getLogger(Access.class);
@ -180,7 +180,7 @@ public class Access {
@QueryParam(AccessPath.POLYMORPHIC_PARAM) @DefaultValue("true") Boolean polymorphic) @QueryParam(AccessPath.POLYMORPHIC_PARAM) @DefaultValue("true") Boolean polymorphic)
throws NotFoundException, ResourceRegistryException { throws NotFoundException, ResourceRegistryException {
logger.info("Requested all {}instances of {}", polymorphic ? AccessPath.POLYMORPHIC_PARAM + " " : "", type); logger.info("Requested all {}instances of {}", polymorphic ? AccessPath.POLYMORPHIC_PARAM + " " : "", type);
setHierarchicalMode();
/* /*
List<String> pathValues = new ArrayList<>(); List<String> pathValues = new ArrayList<>();
pathValues.add(AccessPath.INSTANCES_PATH_PART); pathValues.add(AccessPath.INSTANCES_PATH_PART);
@ -207,8 +207,9 @@ public class Access {
@Produces(ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8) @Produces(ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8)
public Response instanceExists(@PathParam(AccessPath.TYPE_PATH_PARAM) String type, public Response instanceExists(@PathParam(AccessPath.TYPE_PATH_PARAM) String type,
@PathParam(AccessPath.UUID_PATH_PARAM) String uuid) throws NotFoundException, ResourceRegistryException { @PathParam(AccessPath.UUID_PATH_PARAM) String uuid) throws NotFoundException, ResourceRegistryException {
logger.info("Requested to check if {} with id {} exists", type, uuid); logger.info("Requested to check if {} with id {} exists", type, uuid);
setHierarchicalMode();
/* /*
List<String> pathValues = new ArrayList<>(); List<String> pathValues = new ArrayList<>();
pathValues.add(AccessPath.INSTANCES_PATH_PART); pathValues.add(AccessPath.INSTANCES_PATH_PART);
@ -252,6 +253,8 @@ public class Access {
public String getInstance(@PathParam(AccessPath.TYPE_PATH_PARAM) String type, public String getInstance(@PathParam(AccessPath.TYPE_PATH_PARAM) String type,
@PathParam(AccessPath.UUID_PATH_PARAM) String uuid) throws NotFoundException, ResourceRegistryException { @PathParam(AccessPath.UUID_PATH_PARAM) String uuid) throws NotFoundException, ResourceRegistryException {
logger.info("Requested to read {} with id {}", type, uuid); logger.info("Requested to read {} with id {}", type, uuid);
setHierarchicalMode();
/* /*
List<String> pathValues = new ArrayList<>(); List<String> pathValues = new ArrayList<>();
pathValues.add(AccessPath.INSTANCES_PATH_PART); pathValues.add(AccessPath.INSTANCES_PATH_PART);
@ -300,6 +303,7 @@ public class Access {
@QueryParam(AccessPath.RAW_PARAM) @DefaultValue(AccessPath.DEFAULT_RAW_PARAM) Boolean raw) @QueryParam(AccessPath.RAW_PARAM) @DefaultValue(AccessPath.DEFAULT_RAW_PARAM) Boolean raw)
throws InvalidQueryException { throws InvalidQueryException {
logger.info("Requested query (fetch plan {}, limit : {}, Raw : raw):\n{}", fetchPlan, limit, query, raw); logger.info("Requested query (fetch plan {}, limit : {}, Raw : raw):\n{}", fetchPlan, limit, query, raw);
setHierarchicalMode();
//setRESTCalledMethodLocal(HTTPMETHOD.GET, AccessPath.QUERY_PATH_PART); //setRESTCalledMethodLocal(HTTPMETHOD.GET, AccessPath.QUERY_PATH_PART);
CalledMethodProvider.instance.set("rawQuery"); CalledMethodProvider.instance.set("rawQuery");
@ -347,6 +351,7 @@ public class Access {
logger.info("Requested {} instances having a(n) {} ({}={}} with {} ({}={})", resourcetype, relationType, logger.info("Requested {} instances having a(n) {} ({}={}} with {} ({}={})", resourcetype, relationType,
AccessPath.DIRECTION_PARAM, direction, referenceType, AccessPath.POLYMORPHIC_PARAM, polymorphic); AccessPath.DIRECTION_PARAM, direction, referenceType, AccessPath.POLYMORPHIC_PARAM, polymorphic);
setHierarchicalMode();
/* /*
List<String> pathValues = new ArrayList<>(); List<String> pathValues = new ArrayList<>();

View File

@ -0,0 +1,36 @@
package org.gcube.informationsystem.resourceregistry.rest;
import java.util.List;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriInfo;
import org.gcube.informationsystem.resourceregistry.api.rest.InstancePath;
import org.gcube.informationsystem.resourceregistry.contexts.ContextUtility;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class BaseRest {
private static Logger logger = LoggerFactory.getLogger(InstancesManager.class);
@Context
protected UriInfo uriInfo;
protected void setHierarchicalMode() {
try {
List<String> hierarchicalQueryParameterList = uriInfo.getQueryParameters().get(InstancePath.HIERARCHICAL_MODE_PARAM);
if(hierarchicalQueryParameterList!=null && hierarchicalQueryParameterList.size()>0) {
String hierarchicalBooleanString = hierarchicalQueryParameterList.get(0);
boolean hierarchical = Boolean.valueOf(hierarchicalBooleanString);
if(hierarchical) {
logger.info("The request was performed in hierarchical mode. Going to set it.");
ContextUtility.getHierarchicalMode().set(hierarchical);
}
}
}catch (Throwable t) {
logger.warn("Unable to properly set the Hierarchical Mode is set", t.getMessage());
}
}
}

View File

@ -32,7 +32,7 @@ import org.slf4j.LoggerFactory;
* @author Luca Frosini (ISTI - CNR) * @author Luca Frosini (ISTI - CNR)
*/ */
@Path(InstancePath.INSTANCES_PATH_PART) @Path(InstancePath.INSTANCES_PATH_PART)
public class InstancesManager { public class InstancesManager extends BaseRest {
private static Logger logger = LoggerFactory.getLogger(InstancesManager.class); private static Logger logger = LoggerFactory.getLogger(InstancesManager.class);
@ -69,6 +69,7 @@ public class InstancesManager {
@QueryParam(InstancePath.POLYMORPHIC_PARAM) @DefaultValue("true") Boolean polymorphic) @QueryParam(InstancePath.POLYMORPHIC_PARAM) @DefaultValue("true") Boolean polymorphic)
throws NotFoundException, ResourceRegistryException { throws NotFoundException, ResourceRegistryException {
logger.info("Requested all {}instances of {}", polymorphic ? InstancePath.POLYMORPHIC_PARAM + " " : "", type); logger.info("Requested all {}instances of {}", polymorphic ? InstancePath.POLYMORPHIC_PARAM + " " : "", type);
setHierarchicalMode();
/* /*
Map<String,String> map = new HashMap<String,String>(); Map<String,String> map = new HashMap<String,String>();
map.put(InstancePath.POLYMORPHIC_PARAM, polymorphic.toString()); map.put(InstancePath.POLYMORPHIC_PARAM, polymorphic.toString());
@ -94,6 +95,7 @@ public class InstancesManager {
@PathParam(AccessPath.UUID_PATH_PARAM) String uuid) throws NotFoundException, ResourceRegistryException { @PathParam(AccessPath.UUID_PATH_PARAM) String uuid) throws NotFoundException, ResourceRegistryException {
logger.info("Requested to check if {} with id {} exists", type, uuid); logger.info("Requested to check if {} with id {} exists", type, uuid);
//setRESTCalledMethod(HTTPMETHOD.HEAD, type, true); //setRESTCalledMethod(HTTPMETHOD.HEAD, type, true);
setHierarchicalMode();
CalledMethodProvider.instance.set("existInstance"); CalledMethodProvider.instance.set("existInstance");
@SuppressWarnings("rawtypes") @SuppressWarnings("rawtypes")
@ -130,6 +132,7 @@ public class InstancesManager {
public String read(@PathParam(AccessPath.TYPE_PATH_PARAM) String type, public String read(@PathParam(AccessPath.TYPE_PATH_PARAM) String type,
@PathParam(AccessPath.UUID_PATH_PARAM) String uuid) throws NotFoundException, ResourceRegistryException { @PathParam(AccessPath.UUID_PATH_PARAM) String uuid) throws NotFoundException, ResourceRegistryException {
logger.info("Requested to read {} with id {}", type, uuid); logger.info("Requested to read {} with id {}", type, uuid);
setHierarchicalMode();
// setRESTCalledMethod(HTTPMETHOD.GET, type, true); // setRESTCalledMethod(HTTPMETHOD.GET, type, true);
CalledMethodProvider.instance.set("readInstance"); CalledMethodProvider.instance.set("readInstance");