From 939526d2fdb634e9b8675ac468c2328d3feba643 Mon Sep 17 00:00:00 2001 From: Luca Frosini Date: Wed, 20 Jul 2022 17:44:59 +0200 Subject: [PATCH] Porting service to smartgears 4 --- CHANGELOG.md | 5 ++ pom.xml | 15 ++-- .../contexts/ContextUtility.java | 6 +- .../instances/base/ElementManagement.java | 6 +- .../resourceregistry/rest/Access.java | 22 +++--- .../resourceregistry/rest/ContextManager.java | 10 +-- .../rest/InstancesManager.java | 14 ++-- .../rest/QueryTemplateManager.java | 12 +-- .../resourceregistry/rest/RequestFilter.java | 26 ------- .../resourceregistry/rest/SharingManager.java | 6 +- .../resourceregistry/rest/TypeManager.java | 6 +- .../resourceregistry/utils/HeaderUtility.java | 4 +- .../resourceregistry/ContextTest.java | 76 +++++++------------ .../instances/ERManagementTest.java | 3 +- .../multicontext/MultiContextTest.java | 2 +- .../QueryTemplateManagementTest.java | 3 +- 16 files changed, 88 insertions(+), 128 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 357d638..e3fce80 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,11 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm # Changelog for Resource Registry Service +## [v5.0.0-SNAPSHOT] + +- Switched to gcube-smartgears-bom 3.0.0 + + ## [v4.1.0-SNAPSHOT] - Relation source-target instance types are validated against Relation schema [#7355] diff --git a/pom.xml b/pom.xml index 71adab0..a3dab58 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ org.gcube.information-system resource-registry - 4.1.0-SNAPSHOT + 5.0.0-SNAPSHOT Resource Registry Service The Resource Registry is a web-service which represent the core component of the gCube Information System war @@ -31,7 +31,7 @@ org.gcube.distribution gcube-smartgears-bom - 2.2.0-SNAPSHOT + 3.0.0-SNAPSHOT pom import @@ -40,19 +40,16 @@ - org.gcube.information-system - resource-registry-api - provided + org.gcube.core + common-smartgears org.gcube.information-system information-system-model - provided - org.gcube.common - authorization-utils - [2.0.0-SNAPSHOT, 3.0.0-SNAPSHOT) + org.gcube.information-system + resource-registry-api com.orientechnologies diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/contexts/ContextUtility.java b/src/main/java/org/gcube/informationsystem/resourceregistry/contexts/ContextUtility.java index 8d00939..6c5a578 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/contexts/ContextUtility.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/contexts/ContextUtility.java @@ -5,8 +5,8 @@ import java.util.Map; import java.util.NoSuchElementException; import java.util.UUID; -import org.gcube.common.authorization.utils.manager.SecretManagerProvider; -import org.gcube.common.scope.impl.ScopeBean; +import org.gcube.common.security.ContextBean; +import org.gcube.common.security.providers.SecretManagerProvider; import org.gcube.informationsystem.base.reference.IdentifiableElement; import org.gcube.informationsystem.contexts.reference.entities.Context; import org.gcube.informationsystem.contexts.reference.relations.IsParentOf; @@ -222,7 +222,7 @@ public class ContextUtility { private OVertex getContextVertexByFullName(ODatabaseDocument oDatabaseDocument, String fullName) throws ResourceRegistryException { logger.trace("Going to get {} {} with full name '{}'", Context.NAME, OVertex.class.getSimpleName(), fullName); - ScopeBean scopeBean = new ScopeBean(fullName); + ContextBean scopeBean = new ContextBean(fullName); String name = scopeBean.name(); // TODO Rewrite better query. This query works because all the scope parts has a different name diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/instances/base/ElementManagement.java b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/base/ElementManagement.java index e905559..fb58535 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/instances/base/ElementManagement.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/base/ElementManagement.java @@ -23,7 +23,6 @@ import org.gcube.com.fasterxml.jackson.databind.node.ArrayNode; import org.gcube.com.fasterxml.jackson.databind.node.JsonNodeType; import org.gcube.com.fasterxml.jackson.databind.node.ObjectNode; import org.gcube.com.fasterxml.jackson.databind.node.TextNode; -import org.gcube.common.authorization.library.provider.CalledMethodProvider; import org.gcube.informationsystem.base.reference.AccessType; import org.gcube.informationsystem.base.reference.Element; import org.gcube.informationsystem.base.reference.IdentifiableElement; @@ -50,6 +49,7 @@ import org.gcube.informationsystem.resourceregistry.utils.Utility; import org.gcube.informationsystem.types.reference.Type; import org.gcube.informationsystem.types.reference.entities.ResourceType; import org.gcube.informationsystem.types.reference.properties.PropertyDefinition; +import org.gcube.smartgears.utils.InnerMethodName; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -625,9 +625,9 @@ public abstract class ElementManagement { internalUpdate(); } catch(NotFoundException e) { setAsEntryPoint(); - String calledMethod = CalledMethodProvider.instance.get(); + String calledMethod = InnerMethodName.instance.get(); calledMethod = calledMethod.replace("update", "create"); - CalledMethodProvider.instance.set(calledMethod); + InnerMethodName.instance.set(calledMethod); internalCreate(); } diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/rest/Access.java b/src/main/java/org/gcube/informationsystem/resourceregistry/rest/Access.java index c81be97..9f29562 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/rest/Access.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/rest/Access.java @@ -19,7 +19,6 @@ import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.Status; import javax.ws.rs.core.UriInfo; -import org.gcube.common.authorization.library.provider.CalledMethodProvider; import org.gcube.informationsystem.model.reference.entities.Resource; import org.gcube.informationsystem.resourceregistry.ResourceInitializer; import org.gcube.informationsystem.resourceregistry.api.exceptions.AvailableInAnotherContextException; @@ -43,6 +42,7 @@ import org.gcube.informationsystem.resourceregistry.queries.json.JsonQuery; import org.gcube.informationsystem.resourceregistry.types.TypeManagement; import org.gcube.informationsystem.types.TypeMapper; import org.gcube.informationsystem.types.reference.Type; +import org.gcube.smartgears.utils.InnerMethodName; import com.orientechnologies.orient.core.record.ODirection; @@ -68,7 +68,7 @@ public class Access extends BaseRest { @Produces(ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8) public String getAllContexts() throws ResourceRegistryException { logger.info("Requested to read all {}s", org.gcube.informationsystem.contexts.reference.entities.Context.NAME); - CalledMethodProvider.instance.set("listContexts"); + InnerMethodName.instance.set("listContexts"); ContextManagement contextManagement = new ContextManagement(); return contextManagement.all(false); @@ -87,7 +87,7 @@ public class Access extends BaseRest { uuid = ContextUtility.getCurrentSecurityContext().getUUID().toString(); } logger.info("Requested to read {} with id {} ", org.gcube.informationsystem.contexts.reference.entities.Context.NAME, uuid); - CalledMethodProvider.instance.set("readContext"); + InnerMethodName.instance.set("readContext"); ContextManagement contextManagement = new ContextManagement(); contextManagement.setUUID(UUID.fromString(uuid)); @@ -105,7 +105,7 @@ public class Access extends BaseRest { @QueryParam(TypePath.POLYMORPHIC_QUERY_PARAMETER) @DefaultValue("false") Boolean polymorphic) throws SchemaNotFoundException, ResourceRegistryException { logger.info("Requested Schema for type {}", type); - CalledMethodProvider.instance.set("readType"); + InnerMethodName.instance.set("readType"); TypeManagement typeManagement = new TypeManagement(); typeManagement.setTypeName(type); @@ -129,7 +129,7 @@ public class Access extends BaseRest { @QueryParam(InstancePath.POLYMORPHIC_QUERY_PARAMETER) @DefaultValue("true") Boolean polymorphic) throws NotFoundException, ResourceRegistryException { logger.info("Requested all {}instances of {}", polymorphic ? InstancePath.POLYMORPHIC_QUERY_PARAMETER + " " : "", type); - CalledMethodProvider.instance.set("listInstances"); + InnerMethodName.instance.set("listInstances"); checkHierarchicalMode(); checkIncludeInstancesContexts(); @@ -149,7 +149,7 @@ public class Access extends BaseRest { public Response instanceExists(@PathParam(TypeManager.TYPE_PATH_PARAMETER) String type, @PathParam(InstancesManager.UUID_PATH_PARAMETER) String uuid) throws NotFoundException, ResourceRegistryException { logger.info("Requested to check if {} with id {} exists", type, uuid); - CalledMethodProvider.instance.set("existInstance"); + InnerMethodName.instance.set("existInstance"); checkHierarchicalMode(); checkIncludeInstancesContexts(); @@ -186,7 +186,7 @@ public class Access extends BaseRest { public String getInstance(@PathParam(TypeManager.TYPE_PATH_PARAMETER) String type, @PathParam(InstancesManager.UUID_PATH_PARAMETER) String uuid) throws NotFoundException, ResourceRegistryException { logger.info("Requested to read {} with id {}", type, uuid); - CalledMethodProvider.instance.set("readInstance"); + InnerMethodName.instance.set("readInstance"); checkHierarchicalMode(); checkIncludeInstancesContexts(); @@ -212,7 +212,7 @@ public class Access extends BaseRest { public String getInstanceContexts(@PathParam(TypeManager.TYPE_PATH_PARAMETER) String type, @PathParam(InstancesManager.UUID_PATH_PARAMETER) String instanceId) throws NotFoundException, ResourceRegistryException { logger.info("Requested to get contexts of {} with UUID {}", type, instanceId); - CalledMethodProvider.instance.set("getInstanceContexts"); + InnerMethodName.instance.set("getInstanceContexts"); ElementManagement erManagement = ElementManagementUtility.getERManagement(type); erManagement.setUUID(UUID.fromString(instanceId)); @@ -243,7 +243,7 @@ public class Access extends BaseRest { @QueryParam(AccessPath.RAW_QUERY_PARAMETER) @DefaultValue(AccessPath.RAW_QUERY_PARAMETER_DEFAULT_VALUE) Boolean raw) throws InvalidQueryException { logger.info("Requested query (Raw {}):\n{}", raw, query); - CalledMethodProvider.instance.set("graphQuery"); + InnerMethodName.instance.set("graphQuery"); checkHierarchicalMode(); checkIncludeInstancesContexts(); @@ -297,7 +297,7 @@ public class Access extends BaseRest { @Path(AccessPath.QUERY_PATH_PART) public String jsonQuery(String jsonQuery) throws InvalidQueryException, ResourceRegistryException { logger.info("Requested json query \n{}", jsonQuery); - CalledMethodProvider.instance.set("jsonQuery"); + InnerMethodName.instance.set("jsonQuery"); checkHierarchicalMode(); checkIncludeInstancesContexts(); @@ -348,7 +348,7 @@ public class Access extends BaseRest { logger.info("Requested {} instances having a(n) {} ({}={}} with {} ({}={}). Request URI is {})", resourcetype, relationType, AccessPath._DIRECTION_QUERY_PARAMETER, direction, referenceType, AccessPath._POLYMORPHIC_QUERY_PARAMETER, polymorphic, uriInfo.getRequestUri()); - CalledMethodProvider.instance.set("query"); + InnerMethodName.instance.set("query"); checkHierarchicalMode(); checkIncludeInstancesContexts(); diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/rest/ContextManager.java b/src/main/java/org/gcube/informationsystem/resourceregistry/rest/ContextManager.java index f29a055..9c362bd 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/rest/ContextManager.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/rest/ContextManager.java @@ -13,7 +13,6 @@ import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.Status; -import org.gcube.common.authorization.library.provider.CalledMethodProvider; import org.gcube.informationsystem.contexts.reference.entities.Context; import org.gcube.informationsystem.resourceregistry.ResourceInitializer; import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException; @@ -21,6 +20,7 @@ import org.gcube.informationsystem.resourceregistry.api.exceptions.contexts.Cont import org.gcube.informationsystem.resourceregistry.api.rest.ContextPath; import org.gcube.informationsystem.resourceregistry.contexts.ContextUtility; import org.gcube.informationsystem.resourceregistry.contexts.entities.ContextManagement; +import org.gcube.smartgears.utils.InnerMethodName; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -51,7 +51,7 @@ public class ContextManager { @Produces(ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8) public String all() throws ContextNotFoundException, ResourceRegistryException { logger.info("Requested to read all {}s", Context.NAME); - CalledMethodProvider.instance.set("listContexts"); + InnerMethodName.instance.set("listContexts"); ContextManagement contextManagement = new ContextManagement(); return contextManagement.all(false); @@ -72,7 +72,7 @@ public class ContextManager { uuid = ContextUtility.getCurrentSecurityContext().getUUID().toString(); } logger.info("Requested to read {} with id {} ", Context.NAME, uuid); - CalledMethodProvider.instance.set("readContext"); + InnerMethodName.instance.set("readContext"); ContextManagement contextManagement = new ContextManagement(); contextManagement.setUUID(UUID.fromString(uuid)); @@ -93,7 +93,7 @@ public class ContextManager { public String updateCreate(@PathParam(ContextManager.CONTEXT_UUID_PATH_PARAMETER) String uuid, String json) throws ResourceRegistryException { logger.info("Requested to update/create {} with json {} ", Context.NAME, json); - CalledMethodProvider.instance.set("updateContext"); + InnerMethodName.instance.set("updateContext"); ContextManagement contextManagement = new ContextManagement(); contextManagement.setUUID(UUID.fromString(uuid)); @@ -111,7 +111,7 @@ public class ContextManager { public Response delete(@PathParam(ContextManager.CONTEXT_UUID_PATH_PARAMETER) String uuid) throws ContextNotFoundException, ResourceRegistryException { logger.info("Requested to delete {} with id {} ", Context.NAME, uuid); - CalledMethodProvider.instance.set("deleteContext"); + InnerMethodName.instance.set("deleteContext"); ContextManagement contextManagement = new ContextManagement(); contextManagement.setUUID(UUID.fromString(uuid)); diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/rest/InstancesManager.java b/src/main/java/org/gcube/informationsystem/resourceregistry/rest/InstancesManager.java index 626f49a..53389c0 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/rest/InstancesManager.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/rest/InstancesManager.java @@ -16,7 +16,6 @@ import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.Status; -import org.gcube.common.authorization.library.provider.CalledMethodProvider; import org.gcube.informationsystem.resourceregistry.ResourceInitializer; import org.gcube.informationsystem.resourceregistry.api.exceptions.AvailableInAnotherContextException; import org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundException; @@ -27,6 +26,7 @@ import org.gcube.informationsystem.resourceregistry.api.rest.InstancePath; import org.gcube.informationsystem.resourceregistry.api.rest.SharingPath; import org.gcube.informationsystem.resourceregistry.instances.base.ElementManagement; import org.gcube.informationsystem.resourceregistry.instances.base.ElementManagementUtility; +import org.gcube.smartgears.utils.InnerMethodName; /** * @author Luca Frosini (ISTI - CNR) @@ -53,7 +53,7 @@ public class InstancesManager extends BaseRest { @QueryParam(InstancePath.POLYMORPHIC_QUERY_PARAMETER) @DefaultValue("true") Boolean polymorphic) throws NotFoundException, ResourceRegistryException { logger.info("Requested all {}instances of {}", polymorphic ? InstancePath.POLYMORPHIC_QUERY_PARAMETER + " " : "", type); - CalledMethodProvider.instance.set("listInstances"); + InnerMethodName.instance.set("listInstances"); checkHierarchicalMode(); checkIncludeInstancesContexts(); @@ -74,7 +74,7 @@ public class InstancesManager extends BaseRest { public Response exists(@PathParam(TypeManager.TYPE_PATH_PARAMETER) String type, @PathParam(InstancesManager.UUID_PATH_PARAMETER) String uuid) throws NotFoundException, ResourceRegistryException { logger.info("Requested to check if {} with id {} exists", type, uuid); - CalledMethodProvider.instance.set("existInstance"); + InnerMethodName.instance.set("existInstance"); checkHierarchicalMode(); checkIncludeInstancesContexts(); @@ -112,7 +112,7 @@ public class InstancesManager extends BaseRest { public String read(@PathParam(TypeManager.TYPE_PATH_PARAMETER) String type, @PathParam(InstancesManager.UUID_PATH_PARAMETER) String uuid) throws NotFoundException, ResourceRegistryException { logger.info("Requested to read {} with id {}", type, uuid); - CalledMethodProvider.instance.set("readInstance"); + InnerMethodName.instance.set("readInstance"); checkHierarchicalMode(); checkIncludeInstancesContexts(); @@ -138,7 +138,7 @@ public class InstancesManager extends BaseRest { @PathParam(InstancesManager.UUID_PATH_PARAMETER) String uuid, String json) throws ResourceRegistryException { logger.info("Requested to update/create {} with id {}", type, uuid); logger.trace("Requested to update/create {} with id {} with json {}", type, uuid, json); - CalledMethodProvider.instance.set("updateInstance"); + InnerMethodName.instance.set("updateInstance"); @SuppressWarnings("rawtypes") ElementManagement erManagement = ElementManagementUtility.getERManagement(type); @@ -158,7 +158,7 @@ public class InstancesManager extends BaseRest { public Response delete(@PathParam(TypeManager.TYPE_PATH_PARAMETER) String type, @PathParam(InstancesManager.UUID_PATH_PARAMETER) String uuid) throws ResourceRegistryException { logger.info("Requested to delete {} with id {}", type, uuid); - CalledMethodProvider.instance.set("deleteInstance"); + InnerMethodName.instance.set("deleteInstance"); ElementManagement erManagement = ElementManagementUtility.getERManagement(type); erManagement.setUUID(UUID.fromString(uuid)); @@ -185,7 +185,7 @@ public class InstancesManager extends BaseRest { @PathParam(ContextManager.CONTEXT_UUID_PATH_PARAMETER) String contextId) throws ResourceNotFoundException, ContextNotFoundException, ResourceRegistryException { logger.info("Requested to get contexts of {} with UUID {}", type, instanceId); - CalledMethodProvider.instance.set("getInstanceContexts"); + InnerMethodName.instance.set("getInstanceContexts"); @SuppressWarnings("rawtypes") ElementManagement erManagement = ElementManagementUtility.getERManagement(type); diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/rest/QueryTemplateManager.java b/src/main/java/org/gcube/informationsystem/resourceregistry/rest/QueryTemplateManager.java index 9bf9599..7c3c3b8 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/rest/QueryTemplateManager.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/rest/QueryTemplateManager.java @@ -12,7 +12,6 @@ import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.Status; -import org.gcube.common.authorization.library.provider.CalledMethodProvider; import org.gcube.informationsystem.queries.templates.reference.entities.QueryTemplate; import org.gcube.informationsystem.resourceregistry.ResourceInitializer; import org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundException; @@ -20,6 +19,7 @@ import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegis import org.gcube.informationsystem.resourceregistry.api.exceptions.queries.InvalidQueryException; import org.gcube.informationsystem.resourceregistry.api.rest.QueryTemplatePath; import org.gcube.informationsystem.resourceregistry.queries.templates.QueryTemplateManagement; +import org.gcube.smartgears.utils.InnerMethodName; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -41,7 +41,7 @@ public class QueryTemplateManager { @Produces(ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8) public String all() throws NotFoundException, ResourceRegistryException { logger.info("Requested to read all {}s", QueryTemplate.NAME); - CalledMethodProvider.instance.set("listQueryTemplates"); + InnerMethodName.instance.set("listQueryTemplates"); QueryTemplateManagement queryTemplateManagement = new QueryTemplateManagement(); return queryTemplateManagement.all(false); @@ -84,7 +84,7 @@ public class QueryTemplateManager { public Response updateCreate(@PathParam(QueryTemplateManager.QUERY_TEMPLATE_NAME_PATH_PARAMETER) String queryTemplateName, String json) throws InvalidQueryException, ResourceRegistryException { logger.info("Requested {} creation with name {} and content {}", QueryTemplate.NAME, queryTemplateName, json); - CalledMethodProvider.instance.set("createQueryTemplate"); + InnerMethodName.instance.set("createQueryTemplate"); QueryTemplateManagement queryTemplateManagement = new QueryTemplateManagement(); queryTemplateManagement.setName(queryTemplateName); @@ -104,7 +104,7 @@ public class QueryTemplateManager { public String read(@PathParam(QueryTemplateManager.QUERY_TEMPLATE_NAME_PATH_PARAMETER) String queryTemplateName) throws NotFoundException, ResourceRegistryException { logger.info("Requested {} with name", QueryTemplate.NAME, queryTemplateName); - CalledMethodProvider.instance.set("readQueryTemplate"); + InnerMethodName.instance.set("readQueryTemplate"); QueryTemplateManagement queryTemplateManagement = new QueryTemplateManagement(); queryTemplateManagement.setName(queryTemplateName); @@ -125,7 +125,7 @@ public class QueryTemplateManager { public String run(@PathParam(QueryTemplateManager.QUERY_TEMPLATE_NAME_PATH_PARAMETER) String queryTemplateName, String params) throws NotFoundException, InvalidQueryException, ResourceRegistryException { logger.info("Requested {} with name", QueryTemplate.NAME, queryTemplateName); - CalledMethodProvider.instance.set("readQueryTemplate"); + InnerMethodName.instance.set("readQueryTemplate"); QueryTemplateManagement queryTemplateManagement = new QueryTemplateManagement(); queryTemplateManagement.setName(queryTemplateName); @@ -144,7 +144,7 @@ public class QueryTemplateManager { public Response delete(@PathParam(QueryTemplateManager.QUERY_TEMPLATE_NAME_PATH_PARAMETER) String queryTemplateName) throws NotFoundException, ResourceRegistryException { logger.info("Requested to delete {} with name {} ", QueryTemplate.NAME, queryTemplateName); - CalledMethodProvider.instance.set("deleteQueryTemplate"); + InnerMethodName.instance.set("deleteQueryTemplate"); QueryTemplateManagement queryTemplateManagement = new QueryTemplateManagement(); queryTemplateManagement.setName(queryTemplateName); diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/rest/RequestFilter.java b/src/main/java/org/gcube/informationsystem/resourceregistry/rest/RequestFilter.java index b3042a7..25edcd3 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/rest/RequestFilter.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/rest/RequestFilter.java @@ -9,13 +9,6 @@ import javax.ws.rs.container.ContainerResponseFilter; import javax.ws.rs.container.PreMatching; import javax.ws.rs.ext.Provider; -import org.gcube.common.authorization.library.provider.AccessTokenProvider; -import org.gcube.common.authorization.library.provider.SecurityTokenProvider; -import org.gcube.common.authorization.utils.manager.SecretManager; -import org.gcube.common.authorization.utils.manager.SecretManagerProvider; -import org.gcube.common.authorization.utils.secret.GCubeSecret; -import org.gcube.common.authorization.utils.secret.JWTSecret; -import org.gcube.common.authorization.utils.secret.Secret; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -31,31 +24,12 @@ public class RequestFilter implements ContainerRequestFilter, ContainerResponseF @Override public void filter(ContainerRequestContext requestContext) throws IOException { logger.trace("PreMatching RequestFilter"); - - SecretManagerProvider.instance.reset(); - SecretManager secretManager = new SecretManager(); - - String token = AccessTokenProvider.instance.get(); - if(token!=null) { - Secret secret = new JWTSecret(token); - secretManager.addSecret(secret); - } - - token = SecurityTokenProvider.instance.get(); - if(token!=null) { - Secret secret = new GCubeSecret(token); - secretManager.addSecret(secret); - } - - SecretManagerProvider.instance.set(secretManager); - } @Override public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException { logger.trace("ResponseFilter"); - SecretManagerProvider.instance.reset(); } } diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/rest/SharingManager.java b/src/main/java/org/gcube/informationsystem/resourceregistry/rest/SharingManager.java index 1d3961a..834b092 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/rest/SharingManager.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/rest/SharingManager.java @@ -15,7 +15,6 @@ import org.gcube.com.fasterxml.jackson.core.JsonProcessingException; import org.gcube.com.fasterxml.jackson.databind.JsonNode; import org.gcube.com.fasterxml.jackson.databind.ObjectMapper; import org.gcube.com.fasterxml.jackson.databind.node.ArrayNode; -import org.gcube.common.authorization.library.provider.CalledMethodProvider; import org.gcube.informationsystem.base.reference.Element; import org.gcube.informationsystem.base.reference.IdentifiableElement; import org.gcube.informationsystem.contexts.reference.entities.Context; @@ -31,6 +30,7 @@ import org.gcube.informationsystem.resourceregistry.contexts.ContextUtility; import org.gcube.informationsystem.resourceregistry.instances.base.ElementManagement; import org.gcube.informationsystem.resourceregistry.instances.base.ElementManagementUtility; import org.gcube.informationsystem.resourceregistry.instances.model.ERManagement; +import org.gcube.smartgears.utils.InnerMethodName; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -113,7 +113,7 @@ public class SharingManager { calledMethod.append("RemoveFromContext"); } calledMethod.append("NoPropagationConstraint"); - CalledMethodProvider.instance.set(calledMethod.toString()); + InnerMethodName.instance.set(calledMethod.toString()); ObjectMapper objectMapper = new ObjectMapper(); ArrayNode arrayNode = (ArrayNode) objectMapper.readTree(body); @@ -191,7 +191,7 @@ public class SharingManager { logger.info("Requested {} {} with UUID {} from {} with UUID {}", dryRun? "a dry run for removing": "to remove", type, instanceId, Context.NAME, contextId); calledMethod.append("RemoveFromContext"); } - CalledMethodProvider.instance.set(calledMethod.toString()); + InnerMethodName.instance.set(calledMethod.toString()); ElementManagement elementManagement = ElementManagementUtility.getERManagement(type); diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/rest/TypeManager.java b/src/main/java/org/gcube/informationsystem/resourceregistry/rest/TypeManager.java index cfe8c0f..db74944 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/rest/TypeManager.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/rest/TypeManager.java @@ -14,7 +14,6 @@ import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.Status; -import org.gcube.common.authorization.library.provider.CalledMethodProvider; import org.gcube.informationsystem.resourceregistry.ResourceInitializer; import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException; import org.gcube.informationsystem.resourceregistry.api.exceptions.types.SchemaException; @@ -24,6 +23,7 @@ import org.gcube.informationsystem.resourceregistry.contexts.ContextUtility; import org.gcube.informationsystem.resourceregistry.types.TypeManagement; import org.gcube.informationsystem.types.TypeMapper; import org.gcube.informationsystem.types.reference.Type; +import org.gcube.smartgears.utils.InnerMethodName; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -56,7 +56,7 @@ public class TypeManager { public Response create(@PathParam(TypeManager.TYPE_PATH_PARAMETER) String typeName, String json) throws SchemaException, ResourceRegistryException { logger.info("Requested {} creation with schema {}", typeName, json); - CalledMethodProvider.instance.set("createType"); + InnerMethodName.instance.set("createType"); TypeManagement schemaManagement = new TypeManagement(); schemaManagement.setTypeName(typeName); @@ -78,7 +78,7 @@ public class TypeManager { @QueryParam(TypePath.POLYMORPHIC_QUERY_PARAMETER) @DefaultValue("false") Boolean polymorphic) throws SchemaNotFoundException, ResourceRegistryException { logger.info("Requested Schema for type {}", type); - CalledMethodProvider.instance.set("readType"); + InnerMethodName.instance.set("readType"); TypeManagement schemaManagement = new TypeManagement(); schemaManagement.setTypeName(type); diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/utils/HeaderUtility.java b/src/main/java/org/gcube/informationsystem/resourceregistry/utils/HeaderUtility.java index fc79118..8601224 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/utils/HeaderUtility.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/utils/HeaderUtility.java @@ -9,7 +9,7 @@ import java.util.UUID; import org.gcube.com.fasterxml.jackson.core.JsonParseException; import org.gcube.com.fasterxml.jackson.databind.JsonMappingException; import org.gcube.com.fasterxml.jackson.databind.JsonNode; -import org.gcube.common.authorization.utils.manager.SecretManagerProvider; +import org.gcube.common.security.providers.SecretManagerProvider; import org.gcube.informationsystem.base.reference.IdentifiableElement; import org.gcube.informationsystem.model.reference.properties.Header; import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException; @@ -31,7 +31,7 @@ public class HeaderUtility { public static String getUser() { String user = Header.UNKNOWN_USER; try { - user = SecretManagerProvider.instance.get().getUser().getUsername(); + user = SecretManagerProvider.instance.get().getOwner().getId(); } catch(Exception e) { logger.error("Unable to retrieve user. {} will be used", user); } diff --git a/src/test/java/org/gcube/informationsystem/resourceregistry/ContextTest.java b/src/test/java/org/gcube/informationsystem/resourceregistry/ContextTest.java index e4d5845..f10e3c5 100644 --- a/src/test/java/org/gcube/informationsystem/resourceregistry/ContextTest.java +++ b/src/test/java/org/gcube/informationsystem/resourceregistry/ContextTest.java @@ -7,25 +7,18 @@ import java.io.IOException; import java.io.InputStream; import java.util.Properties; -import org.gcube.common.authorization.utils.manager.SecretManager; -import org.gcube.common.authorization.utils.manager.SecretManagerProvider; -import org.gcube.common.authorization.utils.secret.Secret; -import org.gcube.common.authorization.utils.secret.SecretUtility; -import org.gcube.informationsystem.model.reference.properties.Header; +import org.gcube.common.security.providers.SecretManagerProvider; +import org.gcube.common.security.secrets.CredentialSecret; +import org.gcube.common.security.secrets.Secret; import org.junit.AfterClass; import org.junit.BeforeClass; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; /** * @author Luca Frosini (ISTI - CNR) */ public class ContextTest { - private static final Logger logger = LoggerFactory.getLogger(ContextTest.class); - - protected static Properties properties; - protected static final String PROPERTIES_FILENAME = "token.properties"; + protected static final String CONFIG_INI_FILENAME = "config.ini"; public static final String PARENT_DEFAULT_TEST_SCOPE; public static final String DEFAULT_TEST_SCOPE; @@ -36,18 +29,16 @@ public class ContextTest { public static final String NEXTNEXT; public static final String DEVSEC; public static final String DEVVRE; + + protected static final Properties properties; + + protected static final String CLIENT_ID_PROPERTY_KEY = "client_id"; + protected static final String CLIENT_SECRET_PROPERTY_KEY = "client_secret"; + + protected static final String clientID; + protected static final String clientSecret; static { - properties = new Properties(); - InputStream input = ContextTest.class.getClassLoader().getResourceAsStream(PROPERTIES_FILENAME); - - try { - // load the properties file - properties.load(input); - } catch(IOException e) { - throw new RuntimeException(e); - } - GCUBE = "/gcube"; DEVNEXT = GCUBE + "/devNext"; NEXTNEXT = DEVNEXT + "/NextNext"; @@ -58,49 +49,40 @@ public class ContextTest { DEFAULT_TEST_SCOPE = DEVNEXT; ALTERNATIVE_TEST_SCOPE = NEXTNEXT; + properties = new Properties(); + InputStream input = ContextTest.class.getClassLoader().getResourceAsStream(CONFIG_INI_FILENAME); + try { + // load the properties file + properties.load(input); + + clientID = properties.getProperty(CLIENT_ID_PROPERTY_KEY); + clientSecret = properties.getProperty(CLIENT_SECRET_PROPERTY_KEY); + + } catch (IOException e) { + throw new RuntimeException(e); + } + } public static void set(Secret secret) throws Exception { SecretManagerProvider.instance.reset(); - SecretManager secretManager = new SecretManager(); - secretManager.addSecret(secret); - SecretManagerProvider.instance.set(secretManager); - SecretManagerProvider.instance.get().set(); + SecretManagerProvider.instance.set(secret); } - public static void setContext(String token) throws Exception { - Secret secret = getSecret(token); - set(secret); - } - public static void setContextByName(String fullContextName) throws Exception { Secret secret = getSecretByContextName(fullContextName); set(secret); } - private static Secret getSecret(String token) throws Exception { - Secret secret = SecretUtility.getSecretByTokenString(token); - return secret; - } private static Secret getSecretByContextName(String fullContextName) throws Exception { - String token = ContextTest.properties.getProperty(fullContextName); - return getSecret(token); - } - - public static String getUser() { - String user = Header.UNKNOWN_USER; - try { - user = SecretManagerProvider.instance.get().getUser().getUsername(); - } catch(Exception e) { - logger.error("Unable to retrieve user. {} will be used", user); - } - return user; + CredentialSecret credentialSecret = new CredentialSecret(clientID, clientSecret, fullContextName); + return credentialSecret; } @BeforeClass public static void beforeClass() throws Exception { - setContextByName(DEFAULT_TEST_SCOPE); + setContextByName(DEVVRE); } @AfterClass diff --git a/src/test/java/org/gcube/informationsystem/resourceregistry/instances/ERManagementTest.java b/src/test/java/org/gcube/informationsystem/resourceregistry/instances/ERManagementTest.java index 5f94c9f..37293e5 100644 --- a/src/test/java/org/gcube/informationsystem/resourceregistry/instances/ERManagementTest.java +++ b/src/test/java/org/gcube/informationsystem/resourceregistry/instances/ERManagementTest.java @@ -12,6 +12,7 @@ import java.util.List; import java.util.Map; import java.util.UUID; +import org.gcube.common.security.providers.SecretManagerProvider; import org.gcube.informationsystem.base.reference.Element; import org.gcube.informationsystem.base.reference.IdentifiableElement; import org.gcube.informationsystem.model.impl.properties.EncryptedImpl; @@ -524,7 +525,7 @@ public class ERManagementTest extends ContextTest { Assert.assertTrue(((String) updatedCpuFacet.getAdditionalProperty(additionPropertyKey)) .compareTo((String) readCpuFacet.getAdditionalProperty(additionPropertyKey)) == 0); Assert.assertTrue(uuid.compareTo(updatedCpuFacet.getHeader().getUUID()) == 0); - String user = ContextTest.getUser(); + String user = SecretManagerProvider.instance.get().getOwner().getId(); Assert.assertTrue(updatedCpuFacet.getHeader().getLastUpdateBy().compareTo(user) == 0); facetManagement = new FacetManagement(); diff --git a/src/test/java/org/gcube/informationsystem/resourceregistry/instances/multicontext/MultiContextTest.java b/src/test/java/org/gcube/informationsystem/resourceregistry/instances/multicontext/MultiContextTest.java index cbb1958..0c1c359 100644 --- a/src/test/java/org/gcube/informationsystem/resourceregistry/instances/multicontext/MultiContextTest.java +++ b/src/test/java/org/gcube/informationsystem/resourceregistry/instances/multicontext/MultiContextTest.java @@ -9,7 +9,7 @@ import java.util.TreeSet; import java.util.UUID; import org.gcube.com.fasterxml.jackson.databind.JsonNode; -import org.gcube.common.authorization.utils.manager.SecretManagerProvider; +import org.gcube.common.security.providers.SecretManagerProvider; import org.gcube.informationsystem.base.reference.Element; import org.gcube.informationsystem.contexts.reference.entities.Context; import org.gcube.informationsystem.model.reference.entities.Facet; diff --git a/src/test/java/org/gcube/informationsystem/resourceregistry/queries/templates/QueryTemplateManagementTest.java b/src/test/java/org/gcube/informationsystem/resourceregistry/queries/templates/QueryTemplateManagementTest.java index 18e8750..9be9e78 100644 --- a/src/test/java/org/gcube/informationsystem/resourceregistry/queries/templates/QueryTemplateManagementTest.java +++ b/src/test/java/org/gcube/informationsystem/resourceregistry/queries/templates/QueryTemplateManagementTest.java @@ -10,6 +10,7 @@ import org.gcube.com.fasterxml.jackson.databind.JavaType; import org.gcube.com.fasterxml.jackson.databind.JsonNode; import org.gcube.com.fasterxml.jackson.databind.ObjectMapper; import org.gcube.com.fasterxml.jackson.databind.node.ObjectNode; +import org.gcube.common.security.providers.SecretManagerProvider; import org.gcube.informationsystem.base.reference.IdentifiableElement; import org.gcube.informationsystem.model.reference.properties.Header; import org.gcube.informationsystem.queries.templates.impl.entities.QueryTemplateImpl; @@ -44,7 +45,7 @@ public class QueryTemplateManagementTest extends ContextTest { Assert.assertTrue(gotHeader != null); Assert.assertTrue(gotHeader.getUUID() != null); - String user = ContextTest.getUser(); + String user = SecretManagerProvider.instance.get().getOwner().getId(); Assert.assertTrue(gotHeader.getLastUpdateBy().compareTo(user) == 0); if(previousHeader != null) {