Bugfix relation management
This commit is contained in:
parent
ef30cd46d4
commit
3b2ae25034
|
@ -335,7 +335,7 @@ public class ProfiledMongoManager extends MongoManager implements MongoManagerI<
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Project deleteRelation(String id, String relation, String targetUCD, String targetId) throws IOException, EventException, ProjectLockedException, ProjectNotFoundException, InvalidLockException, InvalidUserRoleException, UnauthorizedAccess, RegistrationException, ConfigurationException {
|
public Project deleteRelation(String id, String relation, String targetUCD, String targetId) throws IOException, EventException, ProjectLockedException, ProjectNotFoundException, InvalidLockException, InvalidUserRoleException, UnauthorizedAccess, RegistrationException, ConfigurationException {
|
||||||
Project toUpdate=lock(id,"Set Relation");
|
Project toUpdate=lock(id,"Delete Relation");
|
||||||
try{
|
try{
|
||||||
// check if relation existing
|
// check if relation existing
|
||||||
List<Relationship> relations = toUpdate.getRelationships();
|
List<Relationship> relations = toUpdate.getRelationships();
|
||||||
|
@ -346,9 +346,9 @@ public class ProfiledMongoManager extends MongoManager implements MongoManagerI<
|
||||||
r.getTargetUCD().equals(targetUCD)&&
|
r.getTargetUCD().equals(targetUCD)&&
|
||||||
r.getTargetID().equals(targetId));
|
r.getTargetID().equals(targetId));
|
||||||
// update only if something changed
|
// update only if something changed
|
||||||
if(toUpdate.getRelationships().size()!=beforeSize) return onUpdate(toUpdate);
|
if(toUpdate.getRelationships().size()!=beforeSize) return unlockAndUpdate(toUpdate);
|
||||||
}
|
}
|
||||||
return unlockAndUpdate(toUpdate);
|
return unlock(toUpdate);
|
||||||
}catch(Throwable t){
|
}catch(Throwable t){
|
||||||
log.error("Unexpected exception ",t);
|
log.error("Unexpected exception ",t);
|
||||||
unlock(toUpdate);
|
unlock(toUpdate);
|
||||||
|
|
|
@ -5,6 +5,7 @@ import org.gcube.application.cms.serialization.Serialization;
|
||||||
import org.gcube.application.geoportal.common.model.JSONPathWrapper;
|
import org.gcube.application.geoportal.common.model.JSONPathWrapper;
|
||||||
import org.gcube.application.geoportal.common.model.document.Project;
|
import org.gcube.application.geoportal.common.model.document.Project;
|
||||||
import org.gcube.application.geoportal.common.model.document.filesets.RegisteredFileSet;
|
import org.gcube.application.geoportal.common.model.document.filesets.RegisteredFileSet;
|
||||||
|
import org.gcube.application.geoportal.common.model.document.relationships.Relationship;
|
||||||
import org.gcube.application.geoportal.common.model.rest.RegisterFileSetRequest;
|
import org.gcube.application.geoportal.common.model.rest.RegisterFileSetRequest;
|
||||||
import org.gcube.application.geoportal.common.model.useCaseDescriptor.Field;
|
import org.gcube.application.geoportal.common.model.useCaseDescriptor.Field;
|
||||||
import org.gcube.application.geoportal.common.rest.InterfaceConstants;
|
import org.gcube.application.geoportal.common.rest.InterfaceConstants;
|
||||||
|
@ -19,8 +20,7 @@ import javax.ws.rs.client.WebTarget;
|
||||||
import javax.ws.rs.core.MediaType;
|
import javax.ws.rs.core.MediaType;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
import static org.junit.Assert.assertNull;
|
import static org.junit.Assert.*;
|
||||||
import static org.junit.Assert.assertTrue;
|
|
||||||
import static org.junit.Assume.assumeTrue;
|
import static org.junit.Assume.assumeTrue;
|
||||||
|
|
||||||
public class DummyProjectTest extends AbstractProfiledDocumentsTests{
|
public class DummyProjectTest extends AbstractProfiledDocumentsTests{
|
||||||
|
@ -155,6 +155,51 @@ public class DummyProjectTest extends AbstractProfiledDocumentsTests{
|
||||||
assertNull(p.getLock());
|
assertNull(p.getLock());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testRelationships() throws Exception {
|
||||||
|
assumeTrue(GCubeTest.isTestInfrastructureEnabled());
|
||||||
|
Project a = createNew(new Document("key","value"));
|
||||||
|
Project b = createNew(new Document("key","value"));
|
||||||
|
|
||||||
|
// set relation a -- precedes --> b
|
||||||
|
System.out.println("Setting relation..");
|
||||||
|
String relId="precedes";
|
||||||
|
a = check(baseTarget().
|
||||||
|
path(InterfaceConstants.Methods.RELATIONSHIP).
|
||||||
|
path(a.getId()).
|
||||||
|
path(relId).
|
||||||
|
queryParam(InterfaceConstants.Parameters.TARGET_UCD,b.getProfileID()).
|
||||||
|
queryParam(InterfaceConstants.Parameters.TARGET_ID,b.getId()).
|
||||||
|
request(MediaType.APPLICATION_JSON).
|
||||||
|
put(Entity.json("")), Project.class);
|
||||||
|
// check set relation in a
|
||||||
|
System.out.println("Checking relation a->b");
|
||||||
|
assertTrue(a.getRelationships()!=null && a.getRelationships().size()==1);
|
||||||
|
Relationship rel = a.getRelationships().get(0);
|
||||||
|
assertEquals(rel.getRelationshipName(),relId);
|
||||||
|
assertEquals(rel.getTargetUCD(),b.getProfileID());
|
||||||
|
assertEquals(rel.getTargetID(),b.getId());
|
||||||
|
|
||||||
|
// TODO TBD check reciprocity : expected relation b -- follows -> a
|
||||||
|
|
||||||
|
// delete relation
|
||||||
|
System.out.println("Deleting relation a->b");
|
||||||
|
a = check(baseTarget().
|
||||||
|
path(InterfaceConstants.Methods.RELATIONSHIP).
|
||||||
|
path(a.getId()).
|
||||||
|
path(relId).
|
||||||
|
queryParam(InterfaceConstants.Parameters.TARGET_UCD,b.getProfileID()).
|
||||||
|
queryParam(InterfaceConstants.Parameters.TARGET_ID,b.getId()).
|
||||||
|
request(MediaType.APPLICATION_JSON).
|
||||||
|
delete(), Project.class);
|
||||||
|
// check deleted
|
||||||
|
|
||||||
|
System.out.println("Checking deleted relation");
|
||||||
|
assertTrue(a.getRelationships()==null || a.getRelationships().isEmpty());
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// @Test
|
// @Test
|
||||||
// public void testSDI() throws Exception {
|
// public void testSDI() throws Exception {
|
||||||
|
|
Loading…
Reference in New Issue