From 05a882563582422462fa3a9108400d56b6393243 Mon Sep 17 00:00:00 2001 From: Luca Frosini Date: Fri, 5 Mar 2021 14:41:02 +0100 Subject: [PATCH] Reorganizing code --- .../instances/model/ERManagement.java | 8 ++-- .../model/entities/EntityManagement.java | 29 +++++------- .../model/entities/ResourceManagement.java | 12 +++-- .../model/relations/RelationManagement.java | 44 ++++++++----------- .../resourceregistry/rest/SharingManager.java | 10 ++--- .../model/entity/FacetManagementTest.java | 6 ++- .../instances/multicontext/BasicTest.java | 3 +- .../multicontext/MultiContextTest.java | 8 ++-- 8 files changed, 55 insertions(+), 65 deletions(-) diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/ERManagement.java b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/ERManagement.java index d64ae58..94ce0d3 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/ERManagement.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/ERManagement.java @@ -27,10 +27,10 @@ public interface ERManagement { public SecurityContext getSourceSecurityContext(); - public Map internalAddToContext() + public void internalAddToContext() throws ContextException, ResourceRegistryException; - public Map addToContext(UUID contextUUID) + public void addToContext(UUID contextUUID) throws SchemaViolationException, NotFoundException, ContextException, ResourceRegistryException; /** @@ -41,10 +41,10 @@ public interface ERManagement { public SecurityContext getTargetSecurityContext(); - public Map internalRemoveFromContext() + public void internalRemoveFromContext() throws ContextException, ResourceRegistryException; - public Map removeFromContext(UUID contextUUID) + public void removeFromContext(UUID contextUUID) throws SchemaViolationException, NotFoundException, ContextException, ResourceRegistryException; // public void sanityCheck() throws SchemaViolationException, ResourceRegistryException; diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/entities/EntityManagement.java b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/entities/EntityManagement.java index c330db0..839f112 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/entities/EntityManagement.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/entities/EntityManagement.java @@ -299,9 +299,8 @@ public abstract class EntityManagement } } - protected Map reallyAddToContext() + protected void reallyAddToContext() throws ContextException, ResourceRegistryException { - if(!dryRun) { targetSecurityContext.addElement(getElement(), oDatabaseDocument); } @@ -320,15 +319,14 @@ public abstract class EntityManagement relationManagement.setDryRun(dryRun); relationManagement.setHonourPropagationConstraintsInContextSharing(honourPropagationConstraintsInContextSharing); relationManagement.setTargetSecurityContext(targetSecurityContext); - affectedInstances.putAll(relationManagement.internalAddToContext()); + relationManagement.internalAddToContext(); + affectedInstances.putAll(relationManagement.getAffectedInstances()); } } - - return affectedInstances; } @Override - public Map internalAddToContext() + public void internalAddToContext() throws ContextException, ResourceRegistryException { try { setOperation(Operation.ADD_TO_CONTEXT); @@ -339,7 +337,6 @@ public abstract class EntityManagement } affectedInstances.put(uuid, serializeSelfAsJsonNode()); sanityCheck(); - return affectedInstances; } catch(ResourceRegistryException e) { throw e; } catch(Exception e) { @@ -348,7 +345,7 @@ public abstract class EntityManagement } } - public Map addToContext(UUID contextUUID) throws SchemaViolationException, NotFoundException, ContextException, ResourceRegistryException { + public void addToContext(UUID contextUUID) throws SchemaViolationException, NotFoundException, ContextException, ResourceRegistryException { logger.info("Going to add {} with UUID {} to Context with UUID {}", accessType.getName(), uuid, contextUUID); ODatabaseDocument current = ContextUtility.getCurrentODatabaseDocumentFromThreadLocal(); try { @@ -360,12 +357,10 @@ public abstract class EntityManagement sourceSecurityContext = ContextUtility.getCurrentSecurityContext(); targetSecurityContext = ContextUtility.getInstance().getSecurityContextByUUID(contextUUID); - Map affectedInstances = internalAddToContext(); + internalAddToContext(); oDatabaseDocument.commit(); logger.info("{} with UUID {} successfully added to Context with UUID {}", typeName, uuid, contextUUID); - - return affectedInstances; } catch(ResourceRegistryException e) { logger.error("Unable to add {} with UUID {} to Context with UUID {} - Reason is {}", typeName, uuid, contextUUID, e.getMessage()); if(oDatabaseDocument != null) { @@ -390,18 +385,17 @@ public abstract class EntityManagement } @Override - public Map internalRemoveFromContext() + public void internalRemoveFromContext() throws ContextException, ResourceRegistryException { try { setOperation(Operation.REMOVE_FROM_CONTEXT); - Map affectedInstances = reallyRemoveFromContext(); + reallyRemoveFromContext(); if(!dryRun) { HeaderUtility.updateModifiedByAndLastUpdate(element); element.save(); } affectedInstances.put(uuid, serializeSelfAsJsonNode()); sanityCheck(); - return affectedInstances; } catch(ResourceRegistryException e) { throw e; } catch(Exception e) { @@ -421,7 +415,8 @@ public abstract class EntityManagement relationManagement.setDryRun(dryRun); relationManagement.setHonourPropagationConstraintsInContextSharing(honourPropagationConstraintsInContextSharing); relationManagement.setTargetSecurityContext(targetSecurityContext); - affectedInstances.putAll(relationManagement.internalRemoveFromContext()); + relationManagement.internalRemoveFromContext(); + affectedInstances.putAll(relationManagement.getAffectedInstances()); } } @@ -438,7 +433,7 @@ public abstract class EntityManagement return affectedInstances; } - public Map removeFromContext(UUID contextUUID) + public void removeFromContext(UUID contextUUID) throws SchemaViolationException, NotFoundException, ContextException, ResourceRegistryException { logger.debug("Going to remove {} with UUID {} from Context with UUID {}", typeName, uuid, contextUUID); @@ -455,8 +450,6 @@ public abstract class EntityManagement oDatabaseDocument.commit(); logger.info("{} with UUID {} successfully removed from Context with UUID {}", typeName, uuid, contextUUID); - - return affectedInstances; } catch(ResourceRegistryException e) { logger.error("Unable to remove {} with UUID {} from Context with UUID {}", typeName, uuid, contextUUID); if(oDatabaseDocument != null) { diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/entities/ResourceManagement.java b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/entities/ResourceManagement.java index 3c19819..a2da839 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/entities/ResourceManagement.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/entities/ResourceManagement.java @@ -6,7 +6,6 @@ import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; -import java.util.UUID; import org.gcube.com.fasterxml.jackson.databind.JsonNode; import org.gcube.informationsystem.base.reference.AccessType; @@ -240,7 +239,7 @@ public class ResourceManagement extends EntityManagement } @Override - protected Map reallyAddToContext() + protected void reallyAddToContext() throws ContextException, ResourceRegistryException { if(!dryRun) { @@ -264,10 +263,10 @@ public class ResourceManagement extends EntityManagement relationManagement.setDryRun(dryRun); relationManagement.setHonourPropagationConstraintsInContextSharing(honourPropagationConstraintsInContextSharing); relationManagement.setTargetSecurityContext(targetSecurityContext); - Map resourceCharacterisationInstances = relationManagement.internalAddToContext(); - affectedInstances.putAll(resourceCharacterisationInstances); + relationManagement.internalAddToContext(); + affectedInstances.putAll(relationManagement.getAffectedInstances()); if(relationManagement instanceof ConsistsOfManagement) { - facetCounter = facetCounter + resourceCharacterisationInstances.size(); + facetCounter = facetCounter + relationManagement.getAffectedInstances().size(); } relationManagement.sanityCheck(); } @@ -285,8 +284,7 @@ public class ResourceManagement extends EntityManagement throw new ResourceRegistryException(stringBuffer.toString()); } } - - return affectedInstances; + } public String all(boolean polymorphic) throws ResourceRegistryException { diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/relations/RelationManagement.java b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/relations/RelationManagement.java index 90a21bc..7f7caf0 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/relations/RelationManagement.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/relations/RelationManagement.java @@ -415,11 +415,11 @@ public abstract class RelationManagement internalAddToContext() + public void internalAddToContext() throws ContextException, ResourceRegistryException { try { operation = Operation.ADD_TO_CONTEXT; @@ -467,7 +467,6 @@ public abstract class RelationManagement forcedAddToContext() throws ContextException, ResourceRegistryException { - getElement(); - setOperation(Operation.ADD_TO_CONTEXT); /* Adding source to Context */ - ResourceManagement resourceManagement = getSourceEntityManagement(); - resourceManagement.setDryRun(dryRun); - resourceManagement.setHonourPropagationConstraintsInContextSharing(honourPropagationConstraintsInContextSharing); - resourceManagement.setTargetSecurityContext(targetSecurityContext); - affectedInstances.putAll(resourceManagement.internalAddToContext()); + getSourceEntityManagement().setDryRun(dryRun); + sourceEntityManagement.setHonourPropagationConstraintsInContextSharing(honourPropagationConstraintsInContextSharing); + sourceEntityManagement.setTargetSecurityContext(targetSecurityContext); + sourceEntityManagement.internalAddToContext(); + affectedInstances.putAll(sourceEntityManagement.getAffectedInstances()); /* Adding target to Context */ - T targetEntityManagement = getTargetEntityManagement(); - targetEntityManagement.setDryRun(dryRun); + getTargetEntityManagement().setDryRun(dryRun); targetEntityManagement.setHonourPropagationConstraintsInContextSharing(honourPropagationConstraintsInContextSharing); targetEntityManagement.setTargetSecurityContext(targetSecurityContext); - affectedInstances.putAll(getTargetEntityManagement().internalAddToContext()); + targetEntityManagement.internalAddToContext(); + affectedInstances.putAll(targetEntityManagement.getAffectedInstances()); if(!dryRun) { targetSecurityContext.addElement(getElement(), oDatabaseDocument); @@ -505,7 +502,7 @@ public abstract class RelationManagement addToContext(UUID contextUUID) throws NotFoundException, ContextException { + public void addToContext(UUID contextUUID) throws NotFoundException, ContextException { logger.debug("Going to add {} with UUID {} to Context with UUID {}", accessType.getName(), uuid, contextUUID); ODatabaseDocument current = ContextUtility.getCurrentODatabaseDocumentFromThreadLocal(); try { @@ -522,8 +519,6 @@ public abstract class RelationManagement internalRemoveFromContext() + public void internalRemoveFromContext() throws ContextException, ResourceRegistryException { try { setOperation(Operation.REMOVE_FROM_CONTEXT); @@ -640,7 +637,6 @@ public abstract class RelationManagement removeFromContext(UUID contextUUID) + public void removeFromContext(UUID contextUUID) throws NotFoundException, ContextException, ResourceRegistryException { logger.debug("Going to remove {} with UUID {} from Context with UUID {}", typeName, uuid, contextUUID); ODatabaseDocument current = ContextUtility.getCurrentODatabaseDocumentFromThreadLocal(); @@ -668,8 +664,6 @@ public abstract class RelationManagement affectedInstances = null; + if(operation == SharingOperation.ADD) { - affectedInstances = ((ERManagement) elementManagement).addToContext(contextUUID); + ((ERManagement) elementManagement).addToContext(contextUUID); }else { - affectedInstances = ((ERManagement) elementManagement).removeFromContext(contextUUID); + ((ERManagement) elementManagement).removeFromContext(contextUUID); } try { - return serializeAffectedInstaces(objectMapper, affectedInstances); + ObjectMapper objectMapper = new ObjectMapper(); + return serializeAffectedInstaces(objectMapper, elementManagement.getAffectedInstances()); } catch (Exception e) { throw new ResourceRegistryException(e); } diff --git a/src/test/java/org/gcube/informationsystem/resourceregistry/instances/model/entity/FacetManagementTest.java b/src/test/java/org/gcube/informationsystem/resourceregistry/instances/model/entity/FacetManagementTest.java index bdef219..45b8707 100644 --- a/src/test/java/org/gcube/informationsystem/resourceregistry/instances/model/entity/FacetManagementTest.java +++ b/src/test/java/org/gcube/informationsystem/resourceregistry/instances/model/entity/FacetManagementTest.java @@ -153,7 +153,8 @@ public class FacetManagementTest extends ContextTest { facetManagement.setElementType(facetType); facetManagement.setUUID(facet.getHeader().getUUID()); - Map affectedInstances = facetManagement.addToContext(ContextUtility.getCurrentSecurityContext().getUUID()); + facetManagement.addToContext(ContextUtility.getCurrentSecurityContext().getUUID()); + Map affectedInstances = facetManagement.getAffectedInstances(); Assert.assertTrue(affectedInstances.containsKey(facet.getHeader().getUUID())); Assert.assertTrue(affectedInstances.size()==1); @@ -166,7 +167,8 @@ public class FacetManagementTest extends ContextTest { facetManagement.setElementType(facetType); facetManagement.setUUID(facet.getHeader().getUUID()); - Map affectedInstances = facetManagement.removeFromContext(ContextUtility.getCurrentSecurityContext().getUUID()); + facetManagement.removeFromContext(ContextUtility.getCurrentSecurityContext().getUUID()); + Map affectedInstances = facetManagement.getAffectedInstances(); Assert.assertTrue(affectedInstances.containsKey(facet.getHeader().getUUID())); Assert.assertTrue(affectedInstances.size()==1); diff --git a/src/test/java/org/gcube/informationsystem/resourceregistry/instances/multicontext/BasicTest.java b/src/test/java/org/gcube/informationsystem/resourceregistry/instances/multicontext/BasicTest.java index f3b5750..4a14bb2 100644 --- a/src/test/java/org/gcube/informationsystem/resourceregistry/instances/multicontext/BasicTest.java +++ b/src/test/java/org/gcube/informationsystem/resourceregistry/instances/multicontext/BasicTest.java @@ -396,7 +396,8 @@ public class BasicTest extends MultiContextTest { resourceManagement = new ResourceManagement(); resourceManagement.setUUID(hnUUID); - Map affectedInstances = resourceManagement.removeFromContext(ContextUtility.getCurrentSecurityContext().getUUID()); + resourceManagement.removeFromContext(ContextUtility.getCurrentSecurityContext().getUUID()); + Map affectedInstances = resourceManagement.getAffectedInstances(); logger.debug("Remove from Context affects the following instances {}", affectedInstances.values()); // Assert.assertTrue(affectedInstaces); 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 b7ded5f..bcc1dfc 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 @@ -82,8 +82,9 @@ public class MultiContextTest extends ContextTest { resourceManagement.setUUID(r.getHeader().getUUID()); resourceManagement.setDryRun(dryRun); UUID contextUUID = ContextUtility.getCurrentSecurityContext().getUUID(); - Map affectedInstances = resourceManagement.removeFromContext(contextUUID); - + resourceManagement.removeFromContext(contextUUID); + Map affectedInstances = resourceManagement.getAffectedInstances(); + SortedSet expectedInstancesUUID = new TreeSet<>(expectedInstances.keySet()); SortedSet affectedInstancesUUID = new TreeSet<>(affectedInstances.keySet()); @@ -189,7 +190,8 @@ public class MultiContextTest extends ContextTest { resourceManagement.setUUID(r.getHeader().getUUID()); resourceManagement.setDryRun(dryRun); UUID contextUUID = ContextUtility.getInstance().getSecurityContextByFullName(targetContextFullName).getUUID(); - Map affectedInstances = resourceManagement.addToContext(contextUUID); + resourceManagement.addToContext(contextUUID); + Map affectedInstances = resourceManagement.getAffectedInstances(); SortedSet expectedInstancesUUID = new TreeSet<>(expectedInstances.keySet()); SortedSet affectedInstancesUUID = new TreeSet<>(affectedInstances.keySet());