diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/publisher/ResourceRegistryPublisher.java b/src/main/java/org/gcube/informationsystem/resourceregistry/publisher/ResourceRegistryPublisher.java index d19075f..752e78e 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/publisher/ResourceRegistryPublisher.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/publisher/ResourceRegistryPublisher.java @@ -174,29 +174,29 @@ public interface ResourceRegistryPublisher { /* ----- */ - public List addToContext(String type, UUID instanceUUID, UUID contextUUID) + public List addToContext(String type, UUID instanceUUID, UUID contextUUID, Boolean dryRun) throws SchemaViolationException, NotFoundException, ResourceRegistryException; - public List addToContext(ERElement er, UUID contextUUID) + public List addToContext(ERElement er, UUID contextUUID, Boolean dryRun) throws SchemaViolationException, NotFoundException, ResourceRegistryException; - public List addToCurrentContext(String type, UUID instanceUUID) + public List addToCurrentContext(String type, UUID instanceUUID, Boolean dryRun) throws SchemaViolationException, NotFoundException, ResourceRegistryException; - public List addToCurrentContext(ERElement er) + public List addToCurrentContext(ERElement er, Boolean dryRun) throws SchemaViolationException, NotFoundException, ResourceRegistryException; - public List removeFromContext(String type, UUID instanceUUID, UUID contextUUID) + public List removeFromContext(String type, UUID instanceUUID, UUID contextUUID, Boolean dryRun) throws SchemaViolationException, NotFoundException, ResourceRegistryException; - public List removeFromContext(ERElement er, UUID contextUUID) + public List removeFromContext(ERElement er, UUID contextUUID, Boolean dryRun) throws SchemaViolationException, ResourceNotFoundException, ContextNotFoundException, ResourceRegistryException; - public List removeFromCurrentContext(String type, UUID instanceUUID) throws SchemaViolationException, + public List removeFromCurrentContext(String type, UUID instanceUUID, Boolean dryRun) throws SchemaViolationException, ResourceNotFoundException, ContextNotFoundException, ResourceRegistryException; - public List removeFromCurrentContext(ERElement er) + public List removeFromCurrentContext(ERElement er, Boolean dryRun) throws SchemaViolationException, ResourceNotFoundException, ContextNotFoundException, ResourceRegistryException; @@ -208,33 +208,33 @@ public interface ResourceRegistryPublisher { /* ----- */ - public List addResourceToContext(String resourceType, UUID resourceUUID, UUID contextUUID) + public List addResourceToContext(String resourceType, UUID resourceUUID, UUID contextUUID, Boolean dryRun) throws SchemaViolationException, ResourceNotFoundException, ContextNotFoundException, ResourceRegistryException; - public List addResourceToContext(R resource, UUID contextUUID) + public List addResourceToContext(R resource, UUID contextUUID, Boolean dryRun) throws SchemaViolationException, ResourceNotFoundException, ContextNotFoundException, ResourceRegistryException; - public List addResourceToCurrentContext(String resourceType, UUID resourceUUID) throws SchemaViolationException, + public List addResourceToCurrentContext(String resourceType, UUID resourceUUID, Boolean dryRun) throws SchemaViolationException, ResourceNotFoundException, ContextNotFoundException, ResourceRegistryException; - public List addResourceToCurrentContext(R resource) throws SchemaViolationException, + public List addResourceToCurrentContext(R resource, Boolean dryRun) throws SchemaViolationException, ResourceNotFoundException, ContextNotFoundException, ResourceRegistryException; - public List removeResourceFromContext(String resourceType, UUID resourceUUID, UUID contextUUID) + public List removeResourceFromContext(String resourceType, UUID resourceUUID, UUID contextUUID, Boolean dryRun) throws SchemaViolationException, ResourceNotFoundException, ContextNotFoundException, ResourceRegistryException; - public List removeResourceFromContext(R resource, UUID contextUUID) + public List removeResourceFromContext(R resource, UUID contextUUID, Boolean dryRun) throws SchemaViolationException, ResourceNotFoundException, ContextNotFoundException, ResourceRegistryException; - public List removeResourceFromCurrentContext(String resourceType, UUID resourceUUID) + public List removeResourceFromCurrentContext(String resourceType, UUID resourceUUID, Boolean dryRun) throws SchemaViolationException, ResourceNotFoundException, ContextNotFoundException, ResourceRegistryException; - public List removeResourceFromCurrentContext(R resource) throws SchemaViolationException, + public List removeResourceFromCurrentContext(R resource, Boolean dryRun) throws SchemaViolationException, ResourceNotFoundException, ContextNotFoundException, ResourceRegistryException; public Set getResourceContexts(String resourceType, UUID resourceUUID) @@ -245,29 +245,29 @@ public interface ResourceRegistryPublisher { /* ----- */ - public List addFacetToContext(String facetType, UUID facetUUID, UUID contextUUID) + public List addFacetToContext(String facetType, UUID facetUUID, UUID contextUUID, Boolean dryRun) throws FacetNotFoundException, ContextNotFoundException, ResourceRegistryException; - public List addFacetToContext(F facet, UUID contextUUID) + public List addFacetToContext(F facet, UUID contextUUID, Boolean dryRun) throws FacetNotFoundException, ContextNotFoundException, ResourceRegistryException; - public List addFacetToCurrentContext(String facetType, UUID facetUUID) + public List addFacetToCurrentContext(String facetType, UUID facetUUID, Boolean dryRun) throws FacetNotFoundException, ContextNotFoundException, ResourceRegistryException; - public List addFacetToCurrentContext(F facet) + public List addFacetToCurrentContext(F facet, Boolean dryRun) throws FacetNotFoundException, ContextNotFoundException, ResourceRegistryException; - public List removeFacetFromContext(String facetType, UUID facetUUID, UUID contextUUID) + public List removeFacetFromContext(String facetType, UUID facetUUID, UUID contextUUID, Boolean dryRun) throws SchemaViolationException, FacetNotFoundException, ContextNotFoundException, ResourceRegistryException; - public List removeFacetFromContext(F facet, UUID contextUUID) throws SchemaViolationException, + public List removeFacetFromContext(F facet, UUID contextUUID, Boolean dryRun) throws SchemaViolationException, FacetNotFoundException, ContextNotFoundException, ResourceRegistryException; - public List removeFacetFromCurrentContext(String facetType, UUID facetUUID) throws SchemaViolationException, + public List removeFacetFromCurrentContext(String facetType, UUID facetUUID, Boolean dryRun) throws SchemaViolationException, FacetNotFoundException, ContextNotFoundException, ResourceRegistryException; - public List removeFacetFromCurrentContext(F facet) throws SchemaViolationException, + public List removeFacetFromCurrentContext(F facet, Boolean dryRun) throws SchemaViolationException, FacetNotFoundException, ContextNotFoundException, ResourceRegistryException; public Set getFacetContexts(String facetType, UUID facetUUID) diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/publisher/ResourceRegistryPublisherImpl.java b/src/main/java/org/gcube/informationsystem/resourceregistry/publisher/ResourceRegistryPublisherImpl.java index 39afd42..7a91ec6 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/publisher/ResourceRegistryPublisherImpl.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/publisher/ResourceRegistryPublisherImpl.java @@ -34,6 +34,7 @@ import org.gcube.informationsystem.resourceregistry.api.exceptions.schema.Schema import org.gcube.informationsystem.resourceregistry.api.rest.AccessPath; import org.gcube.informationsystem.resourceregistry.api.rest.InstancePath; import org.gcube.informationsystem.resourceregistry.api.rest.SharingPath; +import org.gcube.informationsystem.resourceregistry.api.rest.SharingPath.SharingOperation; import org.gcube.informationsystem.resourceregistry.api.rest.httputils.HTTPUtility; import org.gcube.informationsystem.utils.ElementMapper; import org.gcube.informationsystem.utils.Utility; @@ -751,7 +752,7 @@ public class ResourceRegistryPublisherImpl implements ResourceRegistryPublisher } @Override - public List addToContext(String type, UUID instanceUUID, UUID contextUUID) + public List addToContext(String type, UUID instanceUUID, UUID contextUUID, Boolean dryRun) throws SchemaViolationException, NotFoundException, ResourceRegistryException { try { logger.trace("Going to add {} with UUID {} to {} with UUID {} ", type, instanceUUID, Context.NAME, @@ -764,7 +765,14 @@ public class ResourceRegistryPublisherImpl implements ResourceRegistryPublisher gxHTTPStringRequest.path(type); gxHTTPStringRequest.path(instanceUUID.toString()); - HttpURLConnection httpURLConnection = gxHTTPStringRequest.put(); + + Map queryParams = new HashMap<>(); + queryParams.put(SharingPath.OPERATION_QUERY_PARAMETER, SharingOperation.ADD.name()); + queryParams.put(SharingPath.DRY_RUN_QUERY_PARAMETER, dryRun.toString()); + + includeAdditionalQueryParameters(gxHTTPStringRequest, queryParams); + + HttpURLConnection httpURLConnection = gxHTTPStringRequest.post(); String jsonArray = HTTPUtility.getResponse(String.class, httpURLConnection); logger.info("{} with UUID {} successfully added to {} with UUID {}", type, instanceUUID, Context.NAME, contextUUID); @@ -782,13 +790,13 @@ public class ResourceRegistryPublisherImpl implements ResourceRegistryPublisher } @Override - public List addToContext(ERElement er, UUID contextUUID) + public List addToContext(ERElement er, UUID contextUUID, Boolean dryRun) throws SchemaViolationException, NotFoundException, ResourceRegistryException { try { String type = org.gcube.informationsystem.resourceregistry.api.utils.Utility .getTypeName(er); UUID instanceUUID = er.getHeader().getUUID(); - return addToContext(type, instanceUUID, contextUUID); + return addToContext(type, instanceUUID, contextUUID, dryRun); } catch (ResourceRegistryException e) { // logger.trace("Error Creating {}", facet, e); throw e; @@ -799,21 +807,21 @@ public class ResourceRegistryPublisherImpl implements ResourceRegistryPublisher } @Override - public List addToCurrentContext(String type, UUID instanceUUID) + public List addToCurrentContext(String type, UUID instanceUUID, Boolean dryRun) throws SchemaViolationException, NotFoundException, ResourceRegistryException { UUID contextUUID = getCurrentContextUUID(); - return addToContext(type, instanceUUID, contextUUID); + return addToContext(type, instanceUUID, contextUUID, dryRun); } @Override - public List addToCurrentContext(ERElement er) + public List addToCurrentContext(ERElement er, Boolean dryRun) throws SchemaViolationException, NotFoundException, ResourceRegistryException { UUID contextUUID = getCurrentContextUUID(); - return addToContext(er, contextUUID); + return addToContext(er, contextUUID, dryRun); } @Override - public List removeFromContext(String type, UUID instanceUUID, UUID contextUUID) + public List removeFromContext(String type, UUID instanceUUID, UUID contextUUID, Boolean dryRun) throws SchemaViolationException, NotFoundException, ResourceRegistryException { try { logger.trace("Going to add {} with UUID {} to {} with UUID {} ", type, instanceUUID, Context.NAME, @@ -825,8 +833,15 @@ public class ResourceRegistryPublisherImpl implements ResourceRegistryPublisher gxHTTPStringRequest.path(contextUUID.toString()); gxHTTPStringRequest.path(type); gxHTTPStringRequest.path(instanceUUID.toString()); - - HttpURLConnection httpURLConnection = gxHTTPStringRequest.delete(); + + Map queryParams = new HashMap<>(); + queryParams.put(SharingPath.OPERATION_QUERY_PARAMETER, SharingOperation.REMOVE.name()); + queryParams.put(SharingPath.DRY_RUN_QUERY_PARAMETER, dryRun.toString()); + + includeAdditionalQueryParameters(gxHTTPStringRequest, queryParams); + + + HttpURLConnection httpURLConnection = gxHTTPStringRequest.post(); String jsonArray = HTTPUtility.getResponse(String.class, httpURLConnection); logger.info("{} with UUID {} successfully removed from {} with UUID {}", type, instanceUUID, Context.NAME, contextUUID); @@ -844,14 +859,14 @@ public class ResourceRegistryPublisherImpl implements ResourceRegistryPublisher } @Override - public List removeFromContext(ERElement er, UUID contextUUID) + public List removeFromContext(ERElement er, UUID contextUUID, Boolean dryRun) throws SchemaViolationException, ResourceNotFoundException, ContextNotFoundException, ResourceRegistryException { try { String type = org.gcube.informationsystem.resourceregistry.api.utils.Utility .getTypeName(er); UUID instanceUUID = er.getHeader().getUUID(); - return removeFromContext(type, instanceUUID, contextUUID); + return removeFromContext(type, instanceUUID, contextUUID, dryRun); } catch (ResourceRegistryException e) { // logger.trace("Error Creating {}", facet, e); throw e; @@ -862,18 +877,18 @@ public class ResourceRegistryPublisherImpl implements ResourceRegistryPublisher } @Override - public List removeFromCurrentContext(String type, UUID instanceUUID) throws SchemaViolationException, + public List removeFromCurrentContext(String type, UUID instanceUUID, Boolean dryRun) throws SchemaViolationException, ResourceNotFoundException, ContextNotFoundException, ResourceRegistryException { UUID contextUUID = getCurrentContextUUID(); - return removeFromContext(type, instanceUUID, contextUUID); + return removeFromContext(type, instanceUUID, contextUUID, dryRun); } @Override - public List removeFromCurrentContext(ERElement er) + public List removeFromCurrentContext(ERElement er, Boolean dryRun) throws SchemaViolationException, ResourceNotFoundException, ContextNotFoundException, ResourceRegistryException { UUID contextUUID = getCurrentContextUUID(); - return removeFromContext(er, contextUUID); + return removeFromContext(er, contextUUID, dryRun); } @Override @@ -914,105 +929,105 @@ public class ResourceRegistryPublisherImpl implements ResourceRegistryPublisher } @Override - public List addResourceToContext(String resourceType, UUID resourceUUID, UUID contextUUID) + public List addResourceToContext(String resourceType, UUID resourceUUID, UUID contextUUID, Boolean dryRun) throws SchemaViolationException, ResourceNotFoundException, ContextNotFoundException, ResourceRegistryException { - return addToContext(resourceType, resourceUUID, contextUUID); + return addToContext(resourceType, resourceUUID, contextUUID, dryRun); } @Override - public List addResourceToContext(R resource, UUID contextUUID) + public List addResourceToContext(R resource, UUID contextUUID, Boolean dryRun) throws SchemaViolationException, ResourceNotFoundException, ContextNotFoundException, ResourceRegistryException { - return addToContext(resource, contextUUID); + return addToContext(resource, contextUUID, dryRun); } @Override - public List addResourceToCurrentContext(String resourceType, UUID resourceUUID) throws SchemaViolationException, + public List addResourceToCurrentContext(String resourceType, UUID resourceUUID, Boolean dryRun) throws SchemaViolationException, ResourceNotFoundException, ContextNotFoundException, ResourceRegistryException { - return addToCurrentContext(resourceType, resourceUUID); + return addToCurrentContext(resourceType, resourceUUID, dryRun); } @Override - public List addResourceToCurrentContext(R resource) throws SchemaViolationException, + public List addResourceToCurrentContext(R resource, Boolean dryRun) throws SchemaViolationException, ResourceNotFoundException, ContextNotFoundException, ResourceRegistryException { - return addToCurrentContext(resource); + return addToCurrentContext(resource, dryRun); } @Override - public List removeResourceFromContext(String resourceType, UUID resourceUUID, UUID contextUUID) + public List removeResourceFromContext(String resourceType, UUID resourceUUID, UUID contextUUID, Boolean dryRun) throws SchemaViolationException, ResourceNotFoundException, ContextNotFoundException, ResourceRegistryException { - return removeFromContext(resourceType, resourceUUID, contextUUID); + return removeFromContext(resourceType, resourceUUID, contextUUID, dryRun); } @Override - public List removeResourceFromContext(R resource, UUID contextUUID) + public List removeResourceFromContext(R resource, UUID contextUUID, Boolean dryRun) throws SchemaViolationException, ResourceNotFoundException, ContextNotFoundException, ResourceRegistryException { - return removeFromContext(resource, contextUUID); + return removeFromContext(resource, contextUUID, dryRun); } @Override - public List removeResourceFromCurrentContext(String resourceType, UUID resourceUUID) + public List removeResourceFromCurrentContext(String resourceType, UUID resourceUUID, Boolean dryRun) throws SchemaViolationException, ResourceNotFoundException, ContextNotFoundException, ResourceRegistryException { - return removeFromCurrentContext(resourceType, resourceUUID); + return removeFromCurrentContext(resourceType, resourceUUID, dryRun); } @Override - public List removeResourceFromCurrentContext(R resource) throws SchemaViolationException, + public List removeResourceFromCurrentContext(R resource, Boolean dryRun) throws SchemaViolationException, ResourceNotFoundException, ContextNotFoundException, ResourceRegistryException { - return removeFromCurrentContext(resource); + return removeFromCurrentContext(resource, dryRun); } @Override - public List addFacetToContext(String facetType, UUID facetUUID, UUID contextUUID) + public List addFacetToContext(String facetType, UUID facetUUID, UUID contextUUID, Boolean dryRun) throws FacetNotFoundException, ContextNotFoundException, ResourceRegistryException { - return addToContext(facetType, facetUUID, contextUUID); + return addToContext(facetType, facetUUID, contextUUID, dryRun); } @Override - public List addFacetToContext(F facet, UUID contextUUID) + public List addFacetToContext(F facet, UUID contextUUID, Boolean dryRun) throws FacetNotFoundException, ContextNotFoundException, ResourceRegistryException { - return addToContext(facet, contextUUID); + return addToContext(facet, contextUUID, dryRun); } @Override - public List addFacetToCurrentContext(String facetType, UUID facetUUID) + public List addFacetToCurrentContext(String facetType, UUID facetUUID, Boolean dryRun) throws FacetNotFoundException, ContextNotFoundException, ResourceRegistryException { - return addToCurrentContext(facetType, facetUUID); + return addToCurrentContext(facetType, facetUUID, dryRun); } @Override - public List addFacetToCurrentContext(F facet) + public List addFacetToCurrentContext(F facet, Boolean dryRun) throws FacetNotFoundException, ContextNotFoundException, ResourceRegistryException { - return addToCurrentContext(facet); + return addToCurrentContext(facet, dryRun); } @Override - public List removeFacetFromContext(String facetType, UUID facetUUID, UUID contextUUID) + public List removeFacetFromContext(String facetType, UUID facetUUID, UUID contextUUID, Boolean dryRun) throws SchemaViolationException, FacetNotFoundException, ContextNotFoundException, ResourceRegistryException { - return removeFromContext(facetType, facetUUID, contextUUID); + return removeFromContext(facetType, facetUUID, contextUUID, dryRun); } @Override - public List removeFacetFromContext(F facet, UUID contextUUID) throws SchemaViolationException, + public List removeFacetFromContext(F facet, UUID contextUUID, Boolean dryRun) throws SchemaViolationException, FacetNotFoundException, ContextNotFoundException, ResourceRegistryException { - return removeFromContext(facet, contextUUID); + return removeFromContext(facet, contextUUID, dryRun); } @Override - public List removeFacetFromCurrentContext(String facetType, UUID facetUUID) throws SchemaViolationException, + public List removeFacetFromCurrentContext(String facetType, UUID facetUUID, Boolean dryRun) throws SchemaViolationException, FacetNotFoundException, ContextNotFoundException, ResourceRegistryException { - return removeFromCurrentContext(facetType, facetUUID); + return removeFromCurrentContext(facetType, facetUUID, dryRun); } @Override - public List removeFacetFromCurrentContext(F facet) throws SchemaViolationException, + public List removeFacetFromCurrentContext(F facet, Boolean dryRun) throws SchemaViolationException, FacetNotFoundException, ContextNotFoundException, ResourceRegistryException { - return removeFromCurrentContext(facet); + return removeFromCurrentContext(facet, dryRun); } @Override diff --git a/src/test/java/org/gcube/informationsystem/resourceregistry/publisher/old/MultiContextTest.java b/src/test/java/org/gcube/informationsystem/resourceregistry/publisher/old/MultiContextTest.java index fc9c153..dbee401 100644 --- a/src/test/java/org/gcube/informationsystem/resourceregistry/publisher/old/MultiContextTest.java +++ b/src/test/java/org/gcube/informationsystem/resourceregistry/publisher/old/MultiContextTest.java @@ -189,7 +189,7 @@ public class MultiContextTest extends ContextTest { } - List affectedInstances = resourceRegistryPublisher.addResourceToCurrentContext(createdHN); + List affectedInstances = resourceRegistryPublisher.addResourceToCurrentContext(createdHN, false); logger.debug("{} added to context. Affected instances are {}", createdHN, affectedInstances); //Assert.assertTrue(addedToContext);