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
This commit is contained in:
Luca Frosini 2016-12-27 14:31:39 +00:00
parent 7cfce46fa4
commit 0bcdd8a260
3 changed files with 48 additions and 38 deletions

View File

@ -367,9 +367,8 @@ public abstract class RelationManagement<R extends Relation> {
public boolean reallyAddToContext() throws ContextException,
ResourceRegistryException {
ContextUtility.addToActualContext(orientGraph, getEdge());
getEdge();
AddConstraint addConstraint = AddConstraint.unpropagate;
try {
@ -390,17 +389,23 @@ public abstract class RelationManagement<R extends Relation> {
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<R extends Relation> {
}
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<Edge> iterable = target.getEdges(Direction.IN);
Iterator<Edge> 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<Edge> iterable = target.getEdges(Direction.IN);
Iterator<Edge> 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;

View File

@ -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);
}

View File

@ -11,9 +11,8 @@
<logger name="org.gcube" level="INFO" />
<logger name="org.gcube.informationsystem" level="DEBUG" />
<logger name="org.gcube.informationsystem.resourceregistry.context" level="INFO" />
<logger name="org.gcube.informationsystem.resourceregistry.resources.utils" level="INFO" />
<logger name="org.gcube.informationsystem.resourceregistry.resources.impl" level="TRACE" />
<logger name="org.gcube.informationsystem.resourceregistry" level="DEBUG" />
<logger name="org.gcube.informationsystem.resourceregistry.context" level="DEBUG" />
<logger name="org.gcube.informationsystem.impl.utils.discovery" level="ERROR" />
<root level="WARN">