From 0bcdd8a2607c4aeaf13b30000d6038033ee05da3 Mon Sep 17 00:00:00 2001 From: "luca.frosini" Date: Tue, 27 Dec 2016 14:31:39 +0000 Subject: [PATCH] Fixed addtoContext and removeFromContext git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/information-system/resource-registry@141413 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../er/relation/RelationManagement.java | 78 +++++++++++-------- .../context/MultiContextTest.java | 3 +- src/test/resources/logback-test.xml | 5 +- 3 files changed, 48 insertions(+), 38 deletions(-) diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/er/relation/RelationManagement.java b/src/main/java/org/gcube/informationsystem/resourceregistry/er/relation/RelationManagement.java index 1b46810..663582a 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/er/relation/RelationManagement.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/er/relation/RelationManagement.java @@ -367,9 +367,8 @@ public abstract class RelationManagement { public boolean reallyAddToContext() throws ContextException, ResourceRegistryException { - - ContextUtility.addToActualContext(orientGraph, getEdge()); - + getEdge(); + AddConstraint addConstraint = AddConstraint.unpropagate; try { @@ -390,17 +389,23 @@ public abstract class RelationManagement { Vertex target = edge.getVertex(Direction.IN); switch (addConstraint) { - case propagate: - EntityManagement entityManagement = EntityManagement - .getEntityManagement(orientGraph, target); - entityManagement.reallyAddToContext(); - break; - - case unpropagate: - break; - - default: - break; + case propagate: + /* + * The relation must be added only in the case the target vertex + * must be added. Otherwise we have a relation which point + * to an entity outside of the context. + */ + ContextUtility.addToActualContext(orientGraph, getEdge()); + EntityManagement entityManagement = EntityManagement + .getEntityManagement(orientGraph, target); + entityManagement.reallyAddToContext(); + break; + + case unpropagate: + break; + + default: + break; } return true; @@ -440,30 +445,35 @@ public abstract class RelationManagement { } Vertex target = edge.getVertex(Direction.IN); + + /* + * In any removeConstraint value the relation MUSt be removed from + * context to avoid to have edge having a source outside of the context. + */ ContextUtility.removeFromActualContext(orientGraph, edge); switch (removeConstraint) { - case cascade: - removeFromContextTargetVertex(target); - break; - - case cascadeWhenOrphan: - Iterable iterable = target.getEdges(Direction.IN); - Iterator iterator = iterable.iterator(); - if (iterator.hasNext()) { - logger.trace( - "{} point to {} which is not orphan. Giving {} directive, it will be not remove from current context.", - edge, target, removeConstraint); - } else { + case cascade: removeFromContextTargetVertex(target); - } - break; - - case keep: - break; - - default: - break; + break; + + case cascadeWhenOrphan: + Iterable iterable = target.getEdges(Direction.IN); + Iterator iterator = iterable.iterator(); + if (iterator.hasNext()) { + logger.trace( + "{} point to {} which is not orphan. Giving {} directive, it will be not remove from current context.", + edge, target, removeConstraint); + } else { + removeFromContextTargetVertex(target); + } + break; + + case keep: + break; + + default: + break; } return true; diff --git a/src/test/java/org/gcube/informationsystem/resourceregistry/context/MultiContextTest.java b/src/test/java/org/gcube/informationsystem/resourceregistry/context/MultiContextTest.java index 6efaf6b..4d7c531 100644 --- a/src/test/java/org/gcube/informationsystem/resourceregistry/context/MultiContextTest.java +++ b/src/test/java/org/gcube/informationsystem/resourceregistry/context/MultiContextTest.java @@ -279,7 +279,7 @@ public class MultiContextTest extends ScopedTest { resourceManagement.setUUID(eServiceUUID); resourceManagement.delete(); } catch (ResourceNotFoundException e) { - logger.debug("Resource with {} Not Found as Expected", + logger.debug("Resource with {} Not Deleted as Expected", eServiceUUID); } @@ -297,6 +297,7 @@ public class MultiContextTest extends ScopedTest { resourceManagement.setUUID(eServiceUUID); deleted = resourceManagement.delete(); Assert.assertTrue(deleted); + } diff --git a/src/test/resources/logback-test.xml b/src/test/resources/logback-test.xml index f915c5c..e365fab 100644 --- a/src/test/resources/logback-test.xml +++ b/src/test/resources/logback-test.xml @@ -11,9 +11,8 @@ - - - + +