From 115ae5830a5c367271bc2cdb69506a368387a09f Mon Sep 17 00:00:00 2001 From: Michael Hunger Date: Mon, 11 Nov 2013 08:43:45 +0100 Subject: [PATCH] DATAGRAPH-407 deleting entities with a read-only index --- .../rest/support/Neo4jDatabaseCleaner.java | 5 +- .../support/mapping/EntityRemoverTest.java | 52 +++++++++++++++++++ 2 files changed, 53 insertions(+), 4 deletions(-) create mode 100644 spring-data-neo4j/src/test/java/org/springframework/data/neo4j/support/mapping/EntityRemoverTest.java 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(); + } + } +}