From c467720ac6d5c6964b036e12d7990cf864cd4dd1 Mon Sep 17 00:00:00 2001 From: Luanne Misquitta Date: Thu, 31 Mar 2016 21:17:58 +0530 Subject: [PATCH] DATAGRAPH-847 - deleteAll() invoked delete(Object) instead of deleteAll(Class). --- .../neo4j/repository/GraphRepositoryImpl.java | 2 +- .../data/neo4j/template/Neo4jOperations.java | 6 +++++ .../ProgrammaticRepositoryTest.java | 23 +++++++++++++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/GraphRepositoryImpl.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/GraphRepositoryImpl.java index eba0c853d..a60d36bca 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/GraphRepositoryImpl.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/GraphRepositoryImpl.java @@ -94,7 +94,7 @@ public class GraphRepositoryImpl implements GraphRepository { @Override public void deleteAll() { - neo4jOperations.delete(clazz); + neo4jOperations.deleteAll(clazz); } @Override diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/template/Neo4jOperations.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/template/Neo4jOperations.java index 105236e7c..544fd1cd2 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/template/Neo4jOperations.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/template/Neo4jOperations.java @@ -271,6 +271,12 @@ public interface Neo4jOperations { */ void delete(Object entity); + /** + * Removes all nodes or relationship entities of a specific type from the graph. + * @param type the type of entity to delete + */ + void deleteAll(Class type); + /** * Removes all mapping information from the current session */ diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repositories/ProgrammaticRepositoryTest.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repositories/ProgrammaticRepositoryTest.java index eec0425be..a116528f3 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repositories/ProgrammaticRepositoryTest.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repositories/ProgrammaticRepositoryTest.java @@ -19,7 +19,9 @@ import org.neo4j.ogm.session.Session; import org.neo4j.ogm.session.SessionFactory; import org.neo4j.ogm.testutil.MultiDriverTestClass; import org.springframework.data.neo4j.repositories.domain.Movie; +import org.springframework.data.neo4j.repositories.domain.User; import org.springframework.data.neo4j.repositories.repo.MovieRepository; +import org.springframework.data.neo4j.repositories.repo.UserRepository; import org.springframework.data.neo4j.repository.support.GraphRepositoryFactory; import org.springframework.data.neo4j.template.Neo4jOperations; import org.springframework.data.neo4j.template.Neo4jTemplate; @@ -62,4 +64,25 @@ public class ProgrammaticRepositoryTest extends MultiDriverTestClass { assertEquals(1, IterableUtils.count(movieRepository.findAll())); } + /** + * @see DATAGRAPH-847 + */ + @Test + public void shouldBeAbleToDeleteAllViaRepository() { + + RepositoryFactorySupport factory = new GraphRepositoryFactory(session, neo4jOperations); + + UserRepository userRepository = factory.getRepository(UserRepository.class); + + User userA = new User("A"); + User userB = new User("B"); + userRepository.save(userA); + userRepository.save(userB); + + assertEquals(2, userRepository.count()); + + userRepository.deleteAll(); + assertEquals(0, userRepository.count()); + } + }