diff --git a/spring-data-neo4j-rest/src/test/java/org/springframework/data/neo4j/rest/support/Neo4jDatabaseCleaner.java b/spring-data-neo4j-rest/src/test/java/org/springframework/data/neo4j/rest/support/Neo4jDatabaseCleaner.java index 7dcde2ba2..8c333894b 100644 --- a/spring-data-neo4j-rest/src/test/java/org/springframework/data/neo4j/rest/support/Neo4jDatabaseCleaner.java +++ b/spring-data-neo4j-rest/src/test/java/org/springframework/data/neo4j/rest/support/Neo4jDatabaseCleaner.java @@ -36,13 +36,10 @@ public class Neo4jDatabaseCleaner { public Map cleanDb() { Map result = new HashMap(); - Transaction tx = graph.beginTx(); - try { + try (Transaction tx = graph.beginTx()) { removeNodes(result); clearIndex(result); tx.success(); - } finally { - tx.finish(); } return result; } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/support/mapping/EntityRemoverTest.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/support/mapping/EntityRemoverTest.java new file mode 100644 index 000000000..a35aced9c --- /dev/null +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/support/mapping/EntityRemoverTest.java @@ -0,0 +1,52 @@ +package org.springframework.data.neo4j.support.mapping; + +import org.junit.Test; +import org.neo4j.graphdb.*; +import org.neo4j.graphdb.index.AutoIndexer; +import org.neo4j.test.TestGraphDatabaseFactory; +import org.springframework.data.neo4j.support.Infrastructure; +import org.springframework.data.neo4j.support.MappingInfrastructureFactoryBean; + +/** + * @author mh + * @since 11.11.13 + */ +public class EntityRemoverTest { + @Test + public void testRemoveNodeEntityWithAutoIndex() throws Exception { + GraphDatabaseService db = new TestGraphDatabaseFactory().newImpermanentDatabase(); + try (Transaction tx = db.beginTx()) { + AutoIndexer nodeAutoIndexer = db.index().getNodeAutoIndexer(); + nodeAutoIndexer.setEnabled(true); + nodeAutoIndexer.startAutoIndexingProperty("foo"); + Infrastructure infrastructure = MappingInfrastructureFactoryBean.createDirect(db, null); + Node node = db.createNode(); + node.setProperty("foo", "bar"); + infrastructure.getEntityRemover().remove(node); + node = db.createNode(); + node.setProperty("foo", "bar"); + infrastructure.getGraphDatabase().remove(node); + tx.success(); + } + } + @Test + public void testRemoveRelationshipEntityWithAutoIndex() throws Exception { + GraphDatabaseService db = new TestGraphDatabaseFactory().newImpermanentDatabase(); + try (Transaction tx = db.beginTx()) { + AutoIndexer autoIndexer = db.index().getRelationshipAutoIndexer(); + autoIndexer.setEnabled(true); + autoIndexer.startAutoIndexingProperty("foo"); + Infrastructure infrastructure = MappingInfrastructureFactoryBean.createDirect(db, null); + final Node node = db.createNode(); + + Relationship relationship = node.createRelationshipTo(node, DynamicRelationshipType.withName("KNOWS")); + relationship.setProperty("foo", "bar"); + infrastructure.getEntityRemover().remove(relationship); + + relationship = node.createRelationshipTo(node, DynamicRelationshipType.withName("KNOWS")); + relationship.setProperty("foo", "bar"); + infrastructure.getGraphDatabase().remove(relationship); + tx.success(); + } + } +}