Fixing corner case
This commit is contained in:
parent
6afde17b0f
commit
d7ed728c81
|
@ -414,6 +414,7 @@ public abstract class EntityManagement<E extends Entity, ET extends EntityType>
|
||||||
relationManagement.setHonourPropagationConstraintsInContextSharing(honourPropagationConstraintsInContextSharing);
|
relationManagement.setHonourPropagationConstraintsInContextSharing(honourPropagationConstraintsInContextSharing);
|
||||||
relationManagement.setTargetSecurityContext(targetSecurityContext);
|
relationManagement.setTargetSecurityContext(targetSecurityContext);
|
||||||
relationManagement.internalRemoveFromContext();
|
relationManagement.internalRemoveFromContext();
|
||||||
|
addToRelationManagements(relationManagement);
|
||||||
affectedInstances.putAll(relationManagement.getAffectedInstances());
|
affectedInstances.putAll(relationManagement.getAffectedInstances());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -70,9 +70,16 @@ public class FacetManagement extends EntityManagement<Facet, FacetType> {
|
||||||
protected void reallyRemoveFromContext()
|
protected void reallyRemoveFromContext()
|
||||||
throws ContextException, ResourceRegistryException {
|
throws ContextException, ResourceRegistryException {
|
||||||
if(entryPoint) {
|
if(entryPoint) {
|
||||||
|
OEdge oEdge = getElement().getEdges(ODirection.IN).iterator().next();
|
||||||
|
consistsOfManagement = new ConsistsOfManagement();
|
||||||
|
consistsOfManagement.setElement(oEdge);
|
||||||
|
consistsOfManagement.setTargetEntityManagement(this);
|
||||||
|
affectedInstances.put(uuid, consistsOfManagement.serializeSelfAsJsonNode());
|
||||||
|
|
||||||
OVertex oVertex = getElement().getVertices(ODirection.IN).iterator().next();
|
OVertex oVertex = getElement().getVertices(ODirection.IN).iterator().next();
|
||||||
resourceManagement = new ResourceManagement();
|
resourceManagement = new ResourceManagement();
|
||||||
resourceManagement.setElement(oVertex);
|
resourceManagement.setElement(oVertex);
|
||||||
|
resourceManagement.addToRelationManagements(consistsOfManagement);
|
||||||
}
|
}
|
||||||
super.reallyRemoveFromContext();
|
super.reallyRemoveFromContext();
|
||||||
}
|
}
|
||||||
|
@ -89,7 +96,7 @@ public class FacetManagement extends EntityManagement<Facet, FacetType> {
|
||||||
OVertex oVertex = getElement().getVertices(ODirection.IN).iterator().next();
|
OVertex oVertex = getElement().getVertices(ODirection.IN).iterator().next();
|
||||||
resourceManagement = new ResourceManagement();
|
resourceManagement = new ResourceManagement();
|
||||||
resourceManagement.setElement(oVertex);
|
resourceManagement.setElement(oVertex);
|
||||||
// TODO
|
resourceManagement.addToRelationManagements(consistsOfManagement);
|
||||||
}
|
}
|
||||||
|
|
||||||
affectedInstances.put(uuid, serializeSelfAsJsonNode());
|
affectedInstances.put(uuid, serializeSelfAsJsonNode());
|
||||||
|
@ -126,7 +133,13 @@ public class FacetManagement extends EntityManagement<Facet, FacetType> {
|
||||||
resourceManagement.setODatabaseDocument(oDatabaseDocument);
|
resourceManagement.setODatabaseDocument(oDatabaseDocument);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ADD_TO_CONTEXT: case REMOVE_FROM_CONTEXT:
|
case ADD_TO_CONTEXT:
|
||||||
|
resourceManagement.setWorkingContext(targetSecurityContext);
|
||||||
|
targetSecurityContextODatabaseDocument = targetSecurityContext.getDatabaseDocument(PermissionMode.READER);
|
||||||
|
resourceManagement.setODatabaseDocument(targetSecurityContextODatabaseDocument);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case REMOVE_FROM_CONTEXT:
|
||||||
resourceManagement.setWorkingContext(targetSecurityContext);
|
resourceManagement.setWorkingContext(targetSecurityContext);
|
||||||
targetSecurityContextODatabaseDocument = targetSecurityContext.getDatabaseDocument(PermissionMode.READER);
|
targetSecurityContextODatabaseDocument = targetSecurityContext.getDatabaseDocument(PermissionMode.READER);
|
||||||
resourceManagement.setODatabaseDocument(targetSecurityContextODatabaseDocument);
|
resourceManagement.setODatabaseDocument(targetSecurityContextODatabaseDocument);
|
||||||
|
|
|
@ -477,8 +477,17 @@ public class ResourceManagement extends EntityManagement<Resource, ResourceType>
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}else {
|
}else {
|
||||||
|
if(operation == Operation.REMOVE_FROM_CONTEXT && relationManagement!=null) {
|
||||||
|
/*
|
||||||
|
* The relation has been removed from the targetContext but it has not been committed.
|
||||||
|
* We must consider as not available in targetSecurityContext
|
||||||
|
*/
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if(relationManagement==null) {
|
if(relationManagement==null) {
|
||||||
relationManagement = getRelationManagement(edge);
|
relationManagement = getRelationManagement(edge);
|
||||||
|
relationManagements.put(id, relationManagement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -129,6 +129,7 @@ public class ConsistsOfManagement extends RelationManagement<FacetManagement, Fa
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
resourceManagement.setOperation(operation);
|
resourceManagement.setOperation(operation);
|
||||||
|
resourceManagement.addToRelationManagements(this);
|
||||||
resourceManagement.sanityCheck();
|
resourceManagement.sanityCheck();
|
||||||
}catch (ResourceRegistryException e) {
|
}catch (ResourceRegistryException e) {
|
||||||
throw e;
|
throw e;
|
||||||
|
|
|
@ -277,7 +277,6 @@ public class ERManagementTest extends ContextTest {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCreateEServiceAndRemoveFromContextRequiredFacet() throws Exception {
|
public void testCreateEServiceAndRemoveFromContextRequiredFacet() throws Exception {
|
||||||
EService eService = instantiateValidEService();
|
EService eService = instantiateValidEService();
|
||||||
|
|
Loading…
Reference in New Issue