diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/config/Neo4jConfiguration.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/config/Neo4jConfiguration.java
index f06c876399..c58a0fd9f1 100644
--- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/config/Neo4jConfiguration.java
+++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/config/Neo4jConfiguration.java
@@ -16,6 +16,10 @@
package org.springframework.data.neo4j.config;
+import static java.util.Arrays.*;
+
+import javax.validation.Validator;
+
import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.graphdb.Node;
import org.neo4j.graphdb.Relationship;
@@ -41,7 +45,13 @@
import org.springframework.data.neo4j.support.MappingInfrastructure;
import org.springframework.data.neo4j.support.Neo4jExceptionTranslator;
import org.springframework.data.neo4j.support.Neo4jTemplate;
-import org.springframework.data.neo4j.support.mapping.*;
+import org.springframework.data.neo4j.support.index.IndexProvider;
+import org.springframework.data.neo4j.support.index.IndexProviderImpl;
+import org.springframework.data.neo4j.support.mapping.EntityStateHandler;
+import org.springframework.data.neo4j.support.mapping.Neo4jEntityFetchHandler;
+import org.springframework.data.neo4j.support.mapping.Neo4jMappingContext;
+import org.springframework.data.neo4j.support.mapping.SourceStateTransmitter;
+import org.springframework.data.neo4j.support.mapping.TRSTypeAliasAccessor;
import org.springframework.data.neo4j.support.node.NodeEntityInstantiator;
import org.springframework.data.neo4j.support.node.NodeEntityStateFactory;
import org.springframework.data.neo4j.support.relationship.RelationshipEntityInstantiator;
@@ -52,10 +62,6 @@
import org.springframework.transaction.jta.JtaTransactionManager;
import org.springframework.transaction.jta.UserTransactionAdapter;
-import javax.validation.Validator;
-
-import static java.util.Arrays.asList;
-
/**
* Abstract base class for code based configuration of Spring managed Neo4j infrastructure.
*
Subclasses are required to provide an implementation of graphDbService ....
@@ -105,6 +111,8 @@ public MappingInfrastructure mappingInfrastructure() throws Exception {
infrastructure.setTransactionManager(neo4jTransactionManager());
infrastructure.setGraphDatabase(graphDatabase());
+
+ infrastructure.setIndexProvider(indexProvider());
if (validator!=null) {
infrastructure.setValidator(validator);
@@ -251,4 +259,9 @@ public ConfigurationCheck configurationCheck() throws Exception {
public PersistenceExceptionTranslator persistenceExceptionTranslator() {
return new Neo4jExceptionTranslator();
}
+
+ @Bean
+ public IndexProvider indexProvider() throws Exception {
+ return new IndexProviderImpl(mappingContext(), graphDatabase());
+ }
}
diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/MappingInfrastructure.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/MappingInfrastructure.java
index fc719381aa..8187e91ca9 100644
--- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/MappingInfrastructure.java
+++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/MappingInfrastructure.java
@@ -15,6 +15,8 @@
*/
package org.springframework.data.neo4j.support;
+import javax.validation.Validator;
+
import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.graphdb.Node;
import org.neo4j.graphdb.Relationship;
@@ -26,7 +28,12 @@
import org.springframework.data.neo4j.mapping.EntityInstantiator;
import org.springframework.data.neo4j.support.conversion.EntityResultConverter;
import org.springframework.data.neo4j.support.index.IndexProvider;
-import org.springframework.data.neo4j.support.mapping.*;
+import org.springframework.data.neo4j.support.index.IndexProviderImpl;
+import org.springframework.data.neo4j.support.mapping.EntityRemover;
+import org.springframework.data.neo4j.support.mapping.EntityStateHandler;
+import org.springframework.data.neo4j.support.mapping.EntityTools;
+import org.springframework.data.neo4j.support.mapping.Neo4jEntityPersister;
+import org.springframework.data.neo4j.support.mapping.Neo4jMappingContext;
import org.springframework.data.neo4j.support.node.EntityStateFactory;
import org.springframework.data.neo4j.support.node.NodeEntityInstantiator;
import org.springframework.data.neo4j.support.query.CypherQueryExecutor;
@@ -35,8 +42,6 @@
import org.springframework.data.neo4j.support.typerepresentation.TypeRepresentationStrategyFactory;
import org.springframework.transaction.PlatformTransactionManager;
-import javax.validation.Validator;
-
/**
* @author mh
* @since 17.10.11
@@ -102,12 +107,14 @@ public void postConstruct() {
EntityTools relationshipEntityTools = new EntityTools(relationshipTypeRepresentationStrategy, relationshipEntityStateFactory, relationshipEntityInstantiator);
this.entityPersister = new Neo4jEntityPersister(conversionService, nodeEntityTools, relationshipEntityTools, mappingContext, entityStateHandler);
this.entityRemover = new EntityRemover(this.entityStateHandler, nodeTypeRepresentationStrategy, relationshipTypeRepresentationStrategy, graphDatabase);
- this.indexProvider = new IndexProvider(mappingContext, graphDatabase);
if (this.resultConverter==null) {
this.resultConverter = new EntityResultConverter