# HG changeset patch # User casties # Date 1406120994 -7200 # Node ID 3be57c18c693abc75854e540e9278f2e73c6e19d # Parent 4724fc7b47333675eab81e923ecfa07e5376f472 more fixing bugs with transactions thanks to neo4j 2 :-( diff -r 4724fc7b4733 -r 3be57c18c693 src/main/java/de/mpiwg/itgroup/annotations/neo4j/AnnotationStore.java --- a/src/main/java/de/mpiwg/itgroup/annotations/neo4j/AnnotationStore.java Mon Jul 21 17:28:15 2014 +0200 +++ b/src/main/java/de/mpiwg/itgroup/annotations/neo4j/AnnotationStore.java Wed Jul 23 15:09:54 2014 +0200 @@ -313,16 +313,19 @@ */ public List getGroupsForPersonNode(Node person) { ArrayList groups = new ArrayList(); - Iterable rels = person.getRelationships(RelationTypes.MEMBER_OF); - for (Relationship rel : rels) { - Node groupNode = rel.getEndNode(); - Actor group = createActorFromNode(groupNode); - // make sure we're getting a group - if (!(group instanceof Group)) { - logger.severe("target of MEMBER_OF is not GROUP! rel=" + rel); - continue; - } - groups.add((Group) group); + try (Transaction tx = graphDb.beginTx()) { + Iterable rels = person.getRelationships(RelationTypes.MEMBER_OF); + for (Relationship rel : rels) { + Node groupNode = rel.getEndNode(); + Actor group = createActorFromNode(groupNode); + // make sure we're getting a group + if (!(group instanceof Group)) { + logger.severe("target of MEMBER_OF is not GROUP! rel=" + rel); + continue; + } + groups.add((Group) group); + } + tx.success(); } return groups; } @@ -363,16 +366,19 @@ public List getMembersOfGroup(Group group) { ArrayList members = new ArrayList(); Node gn = getActorNode(group); - Iterable rels = gn.getRelationships(RelationTypes.MEMBER_OF); - for (Relationship rel : rels) { - Node memberNode = rel.getStartNode(); - Actor member = createActorFromNode(memberNode); - // make sure we're getting a group - if (!(member instanceof Person)) { - logger.severe("source of MEMBER_OF is not PERSON! rel=" + rel); - continue; - } - members.add((Person) member); + try (Transaction tx = graphDb.beginTx()) { + Iterable rels = gn.getRelationships(RelationTypes.MEMBER_OF); + for (Relationship rel : rels) { + Node memberNode = rel.getStartNode(); + Actor member = createActorFromNode(memberNode); + // make sure we're getting a group + if (!(member instanceof Person)) { + logger.severe("source of MEMBER_OF is not PERSON! rel=" + rel); + continue; + } + members.add((Person) member); + } + tx.success(); } return members; } @@ -403,17 +409,17 @@ public void deleteGroupMember(Group group, Person member) { Node gn = getActorNode(group); Node pn = getActorNode(member); - Iterable rels = gn.getRelationships(RelationTypes.MEMBER_OF); - for (Relationship rel : rels) { - Node mn = rel.getStartNode(); - if (mn.equals(pn)) { - try (Transaction tx = graphDb.beginTx()) { + try (Transaction tx = graphDb.beginTx()) { + Iterable rels = gn.getRelationships(RelationTypes.MEMBER_OF); + for (Relationship rel : rels) { + Node mn = rel.getStartNode(); + if (mn.equals(pn)) { rel.delete(); - tx.success(); } // there should be only one break; } + tx.success(); } } @@ -473,21 +479,21 @@ } else { idx = getNodeIndex(NodeTypes.PERSON); } - Node actorNode = idx.get("uri", uri).getSingle(); - if (actorNode != null) { - // delete relations - try (Transaction tx = graphDb.beginTx()) { - for (Relationship rel : actorNode.getRelationships()) { - rel.delete(); - } - if (!actorNode.hasRelationship()) { + try (Transaction tx = graphDb.beginTx()) { + Node actorNode = idx.get("uri", uri).getSingle(); + if (actorNode != null) { + // delete relations + for (Relationship rel : actorNode.getRelationships()) { + rel.delete(); + } + if (!actorNode.hasRelationship()) { // this shouldn't happen deleteNode(actorNode); } else { logger.severe("deleteActor: unable to delete: Node still has relations."); } - tx.success(); } + tx.success(); } }