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:
parent
7cfce46fa4
commit
0bcdd8a260
|
@ -367,9 +367,8 @@ public abstract class RelationManagement<R extends Relation> {
|
||||||
|
|
||||||
public boolean reallyAddToContext() throws ContextException,
|
public boolean reallyAddToContext() throws ContextException,
|
||||||
ResourceRegistryException {
|
ResourceRegistryException {
|
||||||
|
getEdge();
|
||||||
ContextUtility.addToActualContext(orientGraph, getEdge());
|
|
||||||
|
|
||||||
AddConstraint addConstraint = AddConstraint.unpropagate;
|
AddConstraint addConstraint = AddConstraint.unpropagate;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -390,17 +389,23 @@ public abstract class RelationManagement<R extends Relation> {
|
||||||
Vertex target = edge.getVertex(Direction.IN);
|
Vertex target = edge.getVertex(Direction.IN);
|
||||||
|
|
||||||
switch (addConstraint) {
|
switch (addConstraint) {
|
||||||
case propagate:
|
case propagate:
|
||||||
EntityManagement entityManagement = EntityManagement
|
/*
|
||||||
.getEntityManagement(orientGraph, target);
|
* The relation must be added only in the case the target vertex
|
||||||
entityManagement.reallyAddToContext();
|
* must be added. Otherwise we have a relation which point
|
||||||
break;
|
* to an entity outside of the context.
|
||||||
|
*/
|
||||||
case unpropagate:
|
ContextUtility.addToActualContext(orientGraph, getEdge());
|
||||||
break;
|
EntityManagement entityManagement = EntityManagement
|
||||||
|
.getEntityManagement(orientGraph, target);
|
||||||
default:
|
entityManagement.reallyAddToContext();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case unpropagate:
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -440,30 +445,35 @@ public abstract class RelationManagement<R extends Relation> {
|
||||||
}
|
}
|
||||||
|
|
||||||
Vertex target = edge.getVertex(Direction.IN);
|
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);
|
ContextUtility.removeFromActualContext(orientGraph, edge);
|
||||||
|
|
||||||
switch (removeConstraint) {
|
switch (removeConstraint) {
|
||||||
case cascade:
|
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 {
|
|
||||||
removeFromContextTargetVertex(target);
|
removeFromContextTargetVertex(target);
|
||||||
}
|
break;
|
||||||
break;
|
|
||||||
|
case cascadeWhenOrphan:
|
||||||
case keep:
|
Iterable<Edge> iterable = target.getEdges(Direction.IN);
|
||||||
break;
|
Iterator<Edge> iterator = iterable.iterator();
|
||||||
|
if (iterator.hasNext()) {
|
||||||
default:
|
logger.trace(
|
||||||
break;
|
"{} 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;
|
return true;
|
||||||
|
|
|
@ -279,7 +279,7 @@ public class MultiContextTest extends ScopedTest {
|
||||||
resourceManagement.setUUID(eServiceUUID);
|
resourceManagement.setUUID(eServiceUUID);
|
||||||
resourceManagement.delete();
|
resourceManagement.delete();
|
||||||
} catch (ResourceNotFoundException e) {
|
} catch (ResourceNotFoundException e) {
|
||||||
logger.debug("Resource with {} Not Found as Expected",
|
logger.debug("Resource with {} Not Deleted as Expected",
|
||||||
eServiceUUID);
|
eServiceUUID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -297,6 +297,7 @@ public class MultiContextTest extends ScopedTest {
|
||||||
resourceManagement.setUUID(eServiceUUID);
|
resourceManagement.setUUID(eServiceUUID);
|
||||||
deleted = resourceManagement.delete();
|
deleted = resourceManagement.delete();
|
||||||
Assert.assertTrue(deleted);
|
Assert.assertTrue(deleted);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,9 +11,8 @@
|
||||||
|
|
||||||
<logger name="org.gcube" level="INFO" />
|
<logger name="org.gcube" level="INFO" />
|
||||||
<logger name="org.gcube.informationsystem" level="DEBUG" />
|
<logger name="org.gcube.informationsystem" level="DEBUG" />
|
||||||
<logger name="org.gcube.informationsystem.resourceregistry.context" level="INFO" />
|
<logger name="org.gcube.informationsystem.resourceregistry" level="DEBUG" />
|
||||||
<logger name="org.gcube.informationsystem.resourceregistry.resources.utils" level="INFO" />
|
<logger name="org.gcube.informationsystem.resourceregistry.context" level="DEBUG" />
|
||||||
<logger name="org.gcube.informationsystem.resourceregistry.resources.impl" level="TRACE" />
|
|
||||||
<logger name="org.gcube.informationsystem.impl.utils.discovery" level="ERROR" />
|
<logger name="org.gcube.informationsystem.impl.utils.discovery" level="ERROR" />
|
||||||
|
|
||||||
<root level="WARN">
|
<root level="WARN">
|
||||||
|
|
Loading…
Reference in New Issue