From f17106e42ef662d283b05160bdebef8f71f6fd29 Mon Sep 17 00:00:00 2001 From: Luca Frosini Date: Thu, 16 Sep 2021 15:23:04 +0200 Subject: [PATCH] Add to context add only the ERElement in the source context #12218 --- .../contexts/ContextUtility.java | 56 +++-- .../contexts/security/SecurityContext.java | 123 +++++++--- .../instances/base/ElementManagement.java | 11 +- .../model/entities/FacetManagement.java | 8 +- .../model/entities/ResourceManagement.java | 16 +- .../model/relations/ConsistsOfManagement.java | 6 +- .../relations/IsRelatedToManagement.java | 3 +- .../resourceregistry/ContextTest.java | 11 + .../instances/ERManagementTest.java | 6 +- .../multicontext/AddToContextTest.java | 230 +++++++++++++++++- .../instances/multicontext/ComplexTest.java | 19 +- 11 files changed, 406 insertions(+), 83 deletions(-) diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/contexts/ContextUtility.java b/src/main/java/org/gcube/informationsystem/resourceregistry/contexts/ContextUtility.java index 361e66a..4955971 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/contexts/ContextUtility.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/contexts/ContextUtility.java @@ -10,8 +10,10 @@ import org.gcube.common.authorization.library.AuthorizationEntry; import org.gcube.common.authorization.library.provider.SecurityTokenProvider; import org.gcube.common.scope.api.ScopeProvider; import org.gcube.common.scope.impl.ScopeBean; +import org.gcube.informationsystem.base.reference.IdentifiableElement; import org.gcube.informationsystem.context.reference.entities.Context; import org.gcube.informationsystem.context.reference.relations.IsParentOf; +import org.gcube.informationsystem.model.reference.properties.Header; import org.gcube.informationsystem.resourceregistry.api.contexts.ContextCache; import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException; import org.gcube.informationsystem.resourceregistry.api.exceptions.context.ContextException; @@ -29,6 +31,7 @@ import com.orientechnologies.orient.core.db.ODatabaseRecordThreadLocal; import com.orientechnologies.orient.core.db.document.ODatabaseDocument; import com.orientechnologies.orient.core.record.ODirection; import com.orientechnologies.orient.core.record.OVertex; +import com.orientechnologies.orient.core.record.impl.ODocument; import com.orientechnologies.orient.core.sql.executor.OResult; import com.orientechnologies.orient.core.sql.executor.OResultSet; @@ -115,6 +118,8 @@ public class ContextUtility { } public synchronized SecurityContext getSecurityContextByFullName(String fullName) throws ContextException { + ODatabaseDocument current = ContextUtility.getCurrentODatabaseDocumentFromThreadLocal(); + ODatabaseDocument oDatabaseDocument = null; try { SecurityContext securityContext = null; @@ -128,14 +133,18 @@ public class ContextUtility { if(securityContext==null) { logger.trace("{} for {} is not in cache. Going to get it", SecurityContext.class.getSimpleName(), fullName); + oDatabaseDocument = getAdminSecurityContext().getDatabaseDocument(PermissionMode.READER); - OVertex contextVertex = getContextVertexByFullName(fullName); + OVertex contextVertex = getContextVertexByFullName(oDatabaseDocument, fullName); - uuid = Utility.getUUID(contextVertex); + ODocument oDocument = contextVertex.getProperty(IdentifiableElement.HEADER_PROPERTY); + + uuid = UUID.fromString(oDocument.getProperty(Header.UUID_PROPERTY)); securityContext = getSecurityContextByUUID(uuid, contextVertex); addSecurityContext(fullName, securityContext); + } return securityContext; @@ -144,6 +153,14 @@ public class ContextUtility { throw e; } catch(Exception e) { throw new ContextException("Unable to retrieve Context UUID from current Context", e); + } finally { + if(oDatabaseDocument!=null) { + oDatabaseDocument.close(); + } + + if(current!=null) { + current.activateOnCurrentThread(); + } } } @@ -163,12 +180,21 @@ public class ContextUtility { private OVertex getContextVertexByUUID(UUID uuid) throws ResourceRegistryException { ODatabaseDocument current = ContextUtility.getCurrentODatabaseDocumentFromThreadLocal(); - OVertex oVertex = Utility.getElementByUUID(getAdminSecurityContext().getDatabaseDocument(PermissionMode.READER), Context.NAME, uuid, - OVertex.class); - if(current!=null) { - current.activateOnCurrentThread(); + ODatabaseDocument oDatabaseDocument = null; + try { + oDatabaseDocument = getAdminSecurityContext().getDatabaseDocument(PermissionMode.READER); + OVertex oVertex = Utility.getElementByUUID(oDatabaseDocument, Context.NAME, uuid, + OVertex.class); + return oVertex; + } finally { + if(oDatabaseDocument!=null) { + oDatabaseDocument.close(); + } + + if(current!=null) { + current.activateOnCurrentThread(); + } } - return oVertex; } private SecurityContext getSecurityContextByUUID(UUID uuid, OVertex contextVertex) throws ResourceRegistryException { @@ -198,16 +224,16 @@ public class ContextUtility { return securityContext; } + /* protected UUID getContextUUIDFromFullName(String fullName) throws ResourceRegistryException { OVertex contextVertex = getContextVertexByFullName(fullName); return Utility.getUUID(contextVertex); } + */ - - private OVertex getContextVertexByFullName(String fullName) throws ResourceRegistryException { - + private OVertex getContextVertexByFullName(ODatabaseDocument oDatabaseDocument, String fullName) throws ResourceRegistryException { logger.trace("Going to get {} {} with full name '{}'", Context.NAME, OVertex.class.getSimpleName(), fullName); - + ScopeBean scopeBean = new ScopeBean(fullName); String name = scopeBean.name(); @@ -216,9 +242,7 @@ public class ContextUtility { Map map = new HashMap<>(); map.put("name", name); - ODatabaseDocument current = ContextUtility.getCurrentODatabaseDocumentFromThreadLocal(); - - OResultSet resultSet = getAdminSecurityContext().getDatabaseDocument(PermissionMode.READER).query(select, map); + OResultSet resultSet = oDatabaseDocument.query(select, map); if(resultSet == null || !resultSet.hasNext()) { throw new ContextNotFoundException("Error retrieving context with name " + fullName); @@ -234,10 +258,6 @@ public class ContextUtility { + "but required the one with path" + fullName + ". Please Reimplement the query"); } - if(current!=null) { - current.activateOnCurrentThread(); - } - return context; } diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/contexts/security/SecurityContext.java b/src/main/java/org/gcube/informationsystem/resourceregistry/contexts/security/SecurityContext.java index d1d46c8..cb9ba4b 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/contexts/security/SecurityContext.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/contexts/security/SecurityContext.java @@ -308,11 +308,18 @@ public class SecurityContext { public void addElement(OElement element) throws ResourceRegistryException { ODatabaseDocument current = ContextUtility.getCurrentODatabaseDocumentFromThreadLocal(); - ODatabaseDocument adminDatabaseDocument = getAdminDatabaseDocument(); - adminDatabaseDocument.activateOnCurrentThread(); - addElement(element, adminDatabaseDocument); - if(current!=null) { - current.activateOnCurrentThread(); + ODatabaseDocument adminDatabaseDocument = null; + try { + adminDatabaseDocument = getAdminDatabaseDocument(); + addElement(element, adminDatabaseDocument); + }finally { + if(adminDatabaseDocument!=null) { + adminDatabaseDocument.close(); + } + + if(current!=null) { + current.activateOnCurrentThread(); + } } } @@ -325,18 +332,26 @@ public class SecurityContext { public boolean isElementInContext(final OElement element) throws ResourceRegistryException { ORID orid = element.getIdentity(); - ODatabaseDocument current = ContextUtility.getCurrentODatabaseDocumentFromThreadLocal(); - ODatabaseDocument contextODatabaseDocument = getDatabaseDocument(PermissionMode.READER); - contextODatabaseDocument.activateOnCurrentThread(); + ODatabaseDocument contextODatabaseDocument = null; - ORecord oRecord = contextODatabaseDocument.getRecord(orid); - logger.trace("{}", oRecord); - - if(current!=null) { - current.activateOnCurrentThread(); + try { + contextODatabaseDocument = getDatabaseDocument(PermissionMode.READER); + + ORecord oRecord = contextODatabaseDocument.getRecord(orid); + logger.trace("{}", oRecord); + return true; + + } finally { + if(contextODatabaseDocument!=null) { + contextODatabaseDocument.close(); + } + + if(current!=null) { + current.activateOnCurrentThread(); + } } - return true; + } public void addElement(OElement element, ODatabaseDocument oDatabaseDocument) { @@ -352,11 +367,18 @@ public class SecurityContext { public void removeElement(OElement element) throws ResourceRegistryException { ODatabaseDocument current = ContextUtility.getCurrentODatabaseDocumentFromThreadLocal(); - ODatabaseDocument adminDatabaseDocument = getAdminDatabaseDocument(); - adminDatabaseDocument.activateOnCurrentThread(); - removeElement(element, adminDatabaseDocument); - if(current!=null) { - current.activateOnCurrentThread(); + ODatabaseDocument adminDatabaseDocument = null; + try { + adminDatabaseDocument = getAdminDatabaseDocument(); + removeElement(element, adminDatabaseDocument); + }finally { + if(adminDatabaseDocument!=null) { + adminDatabaseDocument.close(); + } + + if(current!=null) { + current.activateOnCurrentThread(); + } } } @@ -395,8 +417,11 @@ public class SecurityContext { @Override public Boolean call() throws Exception { ContextUtility.getHierarchicalMode().set(false); - ODatabaseDocument oDatabaseDocument = getDatabaseDocument(PermissionMode.READER); + + ODatabaseDocument current = ContextUtility.getCurrentODatabaseDocumentFromThreadLocal(); + ODatabaseDocument oDatabaseDocument = null; try { + oDatabaseDocument = getDatabaseDocument(PermissionMode.READER); oDatabaseDocument.activateOnCurrentThread(); ORecord element = oDatabaseDocument.getRecord(oDocument.getIdentity()); if(element == null) { @@ -406,7 +431,13 @@ public class SecurityContext { } catch(Exception e) { return false; } finally { - oDatabaseDocument.close(); + if(oDatabaseDocument!=null) { + oDatabaseDocument.close(); + } + + if(current!=null) { + current.activateOnCurrentThread(); + } } } @@ -422,16 +453,21 @@ public class SecurityContext { public void create() throws ResourceRegistryException { ODatabaseDocument current = ContextUtility.getCurrentODatabaseDocumentFromThreadLocal(); - - ODatabaseDocument adminDatabaseDocument = getAdminDatabaseDocument(); - adminDatabaseDocument.activateOnCurrentThread(); - - create(adminDatabaseDocument); - adminDatabaseDocument.commit(); - adminDatabaseDocument.close(); - - if(current!=null) { - current.activateOnCurrentThread(); + ODatabaseDocument adminDatabaseDocument = null; + try { + adminDatabaseDocument = getAdminDatabaseDocument(); + + create(adminDatabaseDocument); + + adminDatabaseDocument.commit(); + } finally { + if(adminDatabaseDocument!=null) { + adminDatabaseDocument.close(); + } + + if(current!=null) { + current.activateOnCurrentThread(); + } } } @@ -518,16 +554,23 @@ public class SecurityContext { public void delete() throws ResourceRegistryException { ODatabaseDocument current = ContextUtility.getCurrentODatabaseDocumentFromThreadLocal(); - ODatabaseDocument adminDatabaseDocument = getAdminDatabaseDocument(); - adminDatabaseDocument.activateOnCurrentThread(); - - delete(adminDatabaseDocument); - adminDatabaseDocument.commit(); - adminDatabaseDocument.close(); - - if(current!=null) { - current.activateOnCurrentThread(); + ODatabaseDocument adminDatabaseDocument = null; + try { + adminDatabaseDocument = getAdminDatabaseDocument(); + + delete(adminDatabaseDocument); + + adminDatabaseDocument.commit(); + } finally { + if(adminDatabaseDocument!=null) { + adminDatabaseDocument.close(); + } + + if(current!=null) { + current.activateOnCurrentThread(); + } } + } protected void removeChildrenHRolesFromParents(OSecurity oSecurity) { diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/instances/base/ElementManagement.java b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/base/ElementManagement.java index 416dd5d..934cb50 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/instances/base/ElementManagement.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/base/ElementManagement.java @@ -776,7 +776,8 @@ public abstract class ElementManagement { logger.debug("Going to delete {} with UUID {}", accessType.getName(), uuid); ODatabaseDocument current = ContextUtility.getCurrentODatabaseDocumentFromThreadLocal(); try { - oDatabaseDocument = ContextUtility.getAdminSecurityContext().getDatabaseDocument(PermissionMode.WRITER); + // oDatabaseDocument = ContextUtility.getAdminSecurityContext().getDatabaseDocument(PermissionMode.WRITER); + oDatabaseDocument = getWorkingContext().getDatabaseDocument(PermissionMode.WRITER); oDatabaseDocument.begin(); setAsEntryPoint(); @@ -1224,6 +1225,14 @@ public abstract class ElementManagement { // https://www.orientdb.com/docs/last/java/Graph-Schema-Property.html#using-constraints // Going to validate them here + if(operation.isSafe()) { + /* + * The sanity check is not required for a safe operation. + */ + return; + } + + Set definedProperties = getAllProperties(); if(definedProperties==null) { diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/entities/FacetManagement.java b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/entities/FacetManagement.java index ed1394a..b068c0c 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/entities/FacetManagement.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/entities/FacetManagement.java @@ -113,12 +113,11 @@ public class FacetManagement extends EntityManagement { if(!entryPoint) { return; } + if(operation.isSafe()) { - /* You should not be here. - * The sanity check should not be triggered for a safety operation. - * Anyway, using this code as guard. + /* + * The sanity check is not required for a safe operation. */ - logger.warn("sanityCheck should not be triggered for a safe method (i.e. {}). It is not an error but it slow down the performace. Please contact the developer", operation.toString()); return; } @@ -161,6 +160,7 @@ public class FacetManagement extends EntityManagement { } resourceManagement.setOperation(operation); + resourceManagement.sanityCheck(); }catch (ResourceRegistryException e) { 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 ed7743f..92e7c32 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 @@ -23,6 +23,7 @@ import org.gcube.informationsystem.resourceregistry.api.exceptions.entity.resour import org.gcube.informationsystem.resourceregistry.api.exceptions.entity.resource.ResourceNotFoundException; import org.gcube.informationsystem.resourceregistry.api.exceptions.schema.SchemaException; import org.gcube.informationsystem.resourceregistry.api.exceptions.schema.SchemaViolationException; +import org.gcube.informationsystem.resourceregistry.contexts.ContextUtility; import org.gcube.informationsystem.resourceregistry.contexts.security.SecurityContext.PermissionMode; import org.gcube.informationsystem.resourceregistry.instances.base.ElementManagementUtility; import org.gcube.informationsystem.resourceregistry.instances.model.Operation; @@ -35,6 +36,7 @@ import org.gcube.informationsystem.resourceregistry.utils.Utility; import org.gcube.informationsystem.types.reference.entities.ResourceType; import org.gcube.informationsystem.types.reference.properties.LinkedEntity; +import com.orientechnologies.orient.core.db.document.ODatabaseDocument; import com.orientechnologies.orient.core.metadata.schema.OClass; import com.orientechnologies.orient.core.record.ODirection; import com.orientechnologies.orient.core.record.OEdge; @@ -304,10 +306,12 @@ public class ResourceManagement extends EntityManagement } + + @Override public String all(boolean polymorphic) throws ResourceRegistryException { + ODatabaseDocument current = ContextUtility.getCurrentODatabaseDocumentFromThreadLocal(); try { oDatabaseDocument = getWorkingContext().getDatabaseDocument(PermissionMode.READER); - return reallyGetAll(polymorphic); } catch(ResourceRegistryException e) { throw e; @@ -317,6 +321,9 @@ public class ResourceManagement extends EntityManagement if(oDatabaseDocument != null) { oDatabaseDocument.close(); } + if(current!=null) { + current.activateOnCurrentThread(); + } } } @@ -404,6 +411,13 @@ public class ResourceManagement extends EntityManagement */ @Override public void sanityCheck() throws SchemaViolationException, ResourceRegistryException { + if(operation.isSafe()) { + /* + * The sanity check is not required for a safe operation. + */ + return; + } + // In case of a resource is deleted due to cascade effect is look like is the entry point // of the operation and the sanity check is not required. The Resource and all its facets are deleted. diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/relations/ConsistsOfManagement.java b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/relations/ConsistsOfManagement.java index 595c4f0..7a01c8b 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/relations/ConsistsOfManagement.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/instances/model/relations/ConsistsOfManagement.java @@ -94,11 +94,9 @@ public class ConsistsOfManagement extends RelationManagement isIdentifiedBy = new IsIdentifiedByImpl<>(dataset, identifierFacet); + dataset.addFacet(isIdentifiedBy); + + ContactFacet contactFacet = new ContactFacetImpl(); + contactFacet.setTitle("Dr."); + contactFacet.setName("Luca"); + contactFacet.setSurname("Frosini"); + contactFacet.setEMail("luca.frosini@d4science.org"); + HasOwner hasOwner = new HasOwnerImpl<>(dataset, contactFacet); + dataset.addFacet(hasOwner); + + CoverageFacet coverageFacet = new CoverageFacetImpl(); + ValueSchema coverage = new ValueSchemaImpl(); + coverage.setValue("Test"); + coverage.setSchema(new URI("String")); + coverageFacet.setCoverage(coverage); + HasCoverage hasCoverage = new HasSpatialCoverageImpl(dataset, coverageFacet); + dataset.addFacet(hasCoverage); + + try { + deleteResource(dataset); + }catch (NotFoundException e) { + // OK + logger.trace("OK"); + } + + return createResource(dataset); + } + + protected PropagationConstraint getPropagationConstraint() { + PropagationConstraint propagationConstraint = new PropagationConstraintImpl(); + propagationConstraint.setAddConstraint(AddConstraint.propagate); + propagationConstraint.setRemoveConstraint(RemoveConstraint.cascade); + return propagationConstraint; + } + + @SuppressWarnings("unchecked") + protected IsCorrelatedTo createIsCorrelatedTo(Dataset source, Dataset target) throws Exception { + PropagationConstraint propagationConstraint = getPropagationConstraint(); + IsCorrelatedTo isCorrelatedTo = new IsCorrelatedToImpl(source, target, propagationConstraint); + + IsRelatedToManagement isRelatedToManagement = getIsRelatedToManagement(isCorrelatedTo); + String json = isRelatedToManagement.create(); + + isCorrelatedTo = ElementMapper.unmarshal(isCorrelatedTo.getClass(), json); + + return isCorrelatedTo; + } + + @Test + public void testAddToContextFromDifferentSourceContext() throws Exception { + setContextByName(GCUBE); + + Dataset datasetR1 = createDataset("R1", "da111111-dada-1111-1111-111111111111"); + Dataset datasetR2 = null; + Dataset datasetR3 = null; + try { + addToContextThenTestIfBehaveProperly(datasetR1, false, DEVNEXT); + addToContextThenTestIfBehaveProperly(datasetR1, false, DEVSEC); + + setContextByName(DEVNEXT); + datasetR2 = createDataset("R2", "da222222-dada-2222-2222-222222222222"); + IsCorrelatedTo isCorrelatedToR1R2 = createIsCorrelatedTo(datasetR1, datasetR2); + + getResourceManagement(datasetR1).exists(); + getIsRelatedToManagement(isCorrelatedToR1R2).exists(); + getResourceManagement(datasetR2).exists(); + + + setContextByName(DEVSEC); + datasetR3 = createDataset("R3", "da333333-dada-3333-3333-333333333333"); + IsCorrelatedTo isCorrelatedToR1R3 = createIsCorrelatedTo(datasetR1, datasetR3); + + getResourceManagement(datasetR1).exists(); + getIsRelatedToManagement(isCorrelatedToR1R3).exists(); + getResourceManagement(datasetR3).exists(); + + + try { + getIsRelatedToManagement(isCorrelatedToR1R2).exists(); + }catch (AvailableInAnotherContextException e) { + // OK + logger.trace("As expected"); + } + + try { + getResourceManagement(datasetR2).exists(); + }catch (AvailableInAnotherContextException e) { + // OK + logger.trace("As expected"); + } + + + + setContextByName(DEVNEXT); + try { + getIsRelatedToManagement(isCorrelatedToR1R3).exists(); + }catch (AvailableInAnotherContextException e) { + // OK + logger.trace("As expected"); + } + + try { + getResourceManagement(datasetR3).exists(); + }catch (AvailableInAnotherContextException e) { + // OK + logger.trace("As expected"); + } + + + + setContextByName(GCUBE); + getResourceManagement(datasetR1).exists(); + try { + getIsRelatedToManagement(isCorrelatedToR1R2).exists(); + }catch (AvailableInAnotherContextException e) { + // OK + logger.trace("As expected"); + } + + try { + getResourceManagement(datasetR2).exists(); + }catch (AvailableInAnotherContextException e) { + // OK + logger.trace("As expected"); + } + + try { + getIsRelatedToManagement(isCorrelatedToR1R3).exists(); + }catch (AvailableInAnotherContextException e) { + // OK + logger.trace("As expected"); + } + + try { + getResourceManagement(datasetR3).exists(); + }catch (AvailableInAnotherContextException e) { + // OK + logger.trace("As expected"); + } + + ContextUtility.getHierarchicalMode().set(true); + ContextUtility.getIncludeInstanceContexts().set(true); + + Dataset r1 = ElementMapper.unmarshal(Dataset.class, getResourceManagement(datasetR1).read()); + @SuppressWarnings("unchecked") + List contextsR1 = (List) r1.getHeader().getAdditionalProperty(Header.__CONTEXTS); + Assert.assertTrue(contextsR1.size()==3); + + Dataset r2 = ElementMapper.unmarshal(Dataset.class, getResourceManagement(datasetR2).read()); + @SuppressWarnings("unchecked") + List contextsR2 = (List) r2.getHeader().getAdditionalProperty(Header.__CONTEXTS); + Assert.assertTrue(contextsR2.size()==1); + + Dataset r3 = ElementMapper.unmarshal(Dataset.class, getResourceManagement(datasetR3).read()); + @SuppressWarnings("unchecked") + List contextsR3 = (List) r3.getHeader().getAdditionalProperty(Header.__CONTEXTS); + Assert.assertTrue(contextsR3.size()==1); + + + + } catch (Exception e) { + logger.error("", e); + throw e; + }finally { + ContextUtility.getHierarchicalMode().set(false); + ContextUtility.getIncludeInstanceContexts().set(false); + + setContextByName(GCUBE); + deleteResource(datasetR1); + + if(datasetR2!=null) { + setContextByName(DEVNEXT); + deleteResource(datasetR2); + } + + if(datasetR3!=null) { + setContextByName(DEVSEC); + deleteResource(datasetR3); + } + + } + } } diff --git a/src/test/java/org/gcube/informationsystem/resourceregistry/instances/multicontext/ComplexTest.java b/src/test/java/org/gcube/informationsystem/resourceregistry/instances/multicontext/ComplexTest.java index 56a7844..ceeb396 100644 --- a/src/test/java/org/gcube/informationsystem/resourceregistry/instances/multicontext/ComplexTest.java +++ b/src/test/java/org/gcube/informationsystem/resourceregistry/instances/multicontext/ComplexTest.java @@ -11,7 +11,6 @@ import org.gcube.informationsystem.model.reference.properties.PropagationConstra import org.gcube.informationsystem.resourceregistry.ContextTest; import org.gcube.informationsystem.resourceregistry.api.contexts.ContextCache; import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException; -import org.gcube.informationsystem.resourceregistry.api.exceptions.entity.resource.ResourceNotFoundException; import org.gcube.informationsystem.resourceregistry.api.utils.Utility; import org.gcube.informationsystem.resourceregistry.instances.ERManagementTest; import org.gcube.informationsystem.resourceregistry.instances.model.entities.FacetManagement; @@ -33,7 +32,7 @@ public class ComplexTest extends MultiContextTest { @Test public void testGetInstancesContexts() throws ResourceRegistryException, Exception { - ContextTest.setContextByName(DEFAULT_TEST_SCOPE); + ContextTest.setContextByName(DEVNEXT); ContextCache contextCache = ContextCache.getInstance(); contextCache.setContextCacheRenewal(contextCacheRenewal); @@ -47,10 +46,8 @@ public class ComplexTest extends MultiContextTest { /* Creating Activates Relation */ PropagationConstraint propagationConstraint = new PropagationConstraintImpl(); - propagationConstraint - .setRemoveConstraint(RemoveConstraint.cascade); - propagationConstraint - .setAddConstraint(AddConstraint.unpropagate); + propagationConstraint.setRemoveConstraint(RemoveConstraint.cascade); + propagationConstraint.setAddConstraint(AddConstraint.unpropagate); Activates activates = new ActivatesImpl<>(hostingNode, eService, @@ -69,10 +66,10 @@ public class ComplexTest extends MultiContextTest { /* ------------------------------------------------------------------ */ - addToContextThenTestIfBehaveProperly(hostingNode, false, ALTERNATIVE_TEST_SCOPE); + addToContextThenTestIfBehaveProperly(hostingNode, false, NEXTNEXT); logger.debug("Switching to alternative scope"); - ContextTest.setContextByName(ALTERNATIVE_TEST_SCOPE); + ContextTest.setContextByName(NEXTNEXT); ResourceManagement hostingNodeManagement = ERManagementTest.getResourceManagement(hostingNode); @@ -128,10 +125,10 @@ public class ComplexTest extends MultiContextTest { ERManagementTest.deleteResource(hostingNode); try { + ContextTest.setContextByName(DEVNEXT); ERManagementTest.deleteResource(eService); - throw new Exception(EService.NAME + " should be already deleted giving the cascade"); - }catch (ResourceNotFoundException e) { - // As expected + } catch (Exception e) { + logger.error("",e); } }