From 186a910c3f94fd8e34f562884e405e819cd62793 Mon Sep 17 00:00:00 2001 From: David Montag Date: Tue, 22 Mar 2011 15:49:44 -0700 Subject: [PATCH] Extracted node type strategy selection to a factory bean. --- .../jpa/Neo4jEntityManagerTest-context.xml | 2 +- .../neo4j/config/Neo4jConfiguration.java | 5 +-- .../support/NodeTypeStrategyFactoryBean.java | 33 +++++++++++++++++++ .../Neo4jGraphRecommendationTest-context.xml | 2 +- .../Neo4jGraphPersistenceTest-context.xml | 7 +--- 5 files changed, 39 insertions(+), 10 deletions(-) create mode 100644 spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/support/NodeTypeStrategyFactoryBean.java diff --git a/spring-data-neo4j-roo/src/test/resources/org/springframework/data/graph/neo4j/jpa/Neo4jEntityManagerTest-context.xml b/spring-data-neo4j-roo/src/test/resources/org/springframework/data/graph/neo4j/jpa/Neo4jEntityManagerTest-context.xml index e24b5865d..dddb3438c 100644 --- a/spring-data-neo4j-roo/src/test/resources/org/springframework/data/graph/neo4j/jpa/Neo4jEntityManagerTest-context.xml +++ b/spring-data-neo4j-roo/src/test/resources/org/springframework/data/graph/neo4j/jpa/Neo4jEntityManagerTest-context.xml @@ -100,7 +100,7 @@ - + diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/config/Neo4jConfiguration.java b/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/config/Neo4jConfiguration.java index 027d3c70d..32f8e6ba7 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/config/Neo4jConfiguration.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/config/Neo4jConfiguration.java @@ -31,7 +31,7 @@ import org.springframework.data.graph.neo4j.fieldaccess.NodeEntityStateFactory; import org.springframework.data.graph.neo4j.fieldaccess.RelationshipEntityStateFactory; import org.springframework.data.graph.neo4j.finder.FinderFactory; import org.springframework.data.graph.neo4j.support.GraphDatabaseContext; -import org.springframework.data.graph.neo4j.support.SubReferenceNodeTypeStrategy; +import org.springframework.data.graph.neo4j.support.NodeTypeStrategyFactoryBean; import org.springframework.data.graph.neo4j.support.node.Neo4jConstructorGraphEntityInstantiator; import org.springframework.data.graph.neo4j.support.node.Neo4jNodeBacking; import org.springframework.data.graph.neo4j.support.node.PartialNeo4jEntityInstantiator; @@ -93,7 +93,8 @@ public class Neo4jConfiguration { EntityInstantiator graphEntityInstantiator = getGraphEntityInstantiator(); gdc.setGraphEntityInstantiator(graphEntityInstantiator); gdc.setConversionService(new Neo4jConversionServiceFactoryBean().getObject()); - gdc.setNodeTypeStrategy(new SubReferenceNodeTypeStrategy(graphDatabaseService, graphEntityInstantiator)); + NodeTypeStrategyFactoryBean nodeTypeStrategyFactoryBean = new NodeTypeStrategyFactoryBean(graphDatabaseService, graphEntityInstantiator); + gdc.setNodeTypeStrategy(nodeTypeStrategyFactoryBean.getObject()); if (validator!=null) { gdc.setValidator(validator); } diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/support/NodeTypeStrategyFactoryBean.java b/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/support/NodeTypeStrategyFactoryBean.java new file mode 100644 index 000000000..ec4c95a93 --- /dev/null +++ b/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/support/NodeTypeStrategyFactoryBean.java @@ -0,0 +1,33 @@ +package org.springframework.data.graph.neo4j.support; + +import org.neo4j.graphdb.GraphDatabaseService; +import org.neo4j.graphdb.Node; +import org.springframework.beans.factory.FactoryBean; +import org.springframework.data.graph.core.NodeBacked; +import org.springframework.data.graph.core.NodeTypeStrategy; +import org.springframework.persistence.support.EntityInstantiator; + +public class NodeTypeStrategyFactoryBean implements FactoryBean { + private GraphDatabaseService graphDatabaseService; + private EntityInstantiator graphEntityInstantiator; + + public NodeTypeStrategyFactoryBean(GraphDatabaseService graphDatabaseService, EntityInstantiator graphEntityInstantiator) { + this.graphDatabaseService = graphDatabaseService; + this.graphEntityInstantiator = graphEntityInstantiator; + } + + @Override + public NodeTypeStrategy getObject() throws Exception { + return new SubReferenceNodeTypeStrategy(graphDatabaseService, graphEntityInstantiator); + } + + @Override + public Class getObjectType() { + return SubReferenceNodeTypeStrategy.class; + } + + @Override + public boolean isSingleton() { + return false; + } +} diff --git a/spring-data-neo4j/src/test/resources/org/springframework/data/graph/neo4j/partial/Neo4jGraphRecommendationTest-context.xml b/spring-data-neo4j/src/test/resources/org/springframework/data/graph/neo4j/partial/Neo4jGraphRecommendationTest-context.xml index 40d380a6c..2a444b96d 100644 --- a/spring-data-neo4j/src/test/resources/org/springframework/data/graph/neo4j/partial/Neo4jGraphRecommendationTest-context.xml +++ b/spring-data-neo4j/src/test/resources/org/springframework/data/graph/neo4j/partial/Neo4jGraphRecommendationTest-context.xml @@ -103,7 +103,7 @@ - + diff --git a/spring-data-neo4j/src/test/resources/org/springframework/data/graph/neo4j/support/Neo4jGraphPersistenceTest-context.xml b/spring-data-neo4j/src/test/resources/org/springframework/data/graph/neo4j/support/Neo4jGraphPersistenceTest-context.xml index 14873ec46..83e78ba9e 100644 --- a/spring-data-neo4j/src/test/resources/org/springframework/data/graph/neo4j/support/Neo4jGraphPersistenceTest-context.xml +++ b/spring-data-neo4j/src/test/resources/org/springframework/data/graph/neo4j/support/Neo4jGraphPersistenceTest-context.xml @@ -100,16 +100,11 @@ - + - - - - -