From b652ff9f082118c7f6452955005d755f30a11a2e Mon Sep 17 00:00:00 2001 From: Michael Hunger Date: Sat, 15 Oct 2011 10:39:59 +0200 Subject: [PATCH] renamed @GraphTraversal attribute "traversalBuilder" to "traversal" --- .../org/springframework/data/neo4j/aspects/Group.java | 6 +++--- .../com/springone/myrestaurants/domain/UserAccount.java | 4 +--- .../data/neo4j/annotation/GraphTraversal.java | 2 +- .../data/neo4j/core/FieldTraversalDescriptionBuilder.java | 2 +- .../neo4j/fieldaccess/TraversalFieldAccessorFactory.java | 4 ++-- .../data/neo4j/support/GraphDatabaseContext.java | 4 ++++ .../java/org/springframework/data/neo4j/model/Group.java | 2 +- .../java/org/springframework/data/neo4j/model/Person.java | 8 ++++---- .../resources/repository-namespace-config-context.xml | 2 +- 9 files changed, 18 insertions(+), 16 deletions(-) diff --git a/spring-data-neo4j-aspects/src/test/java/org/springframework/data/neo4j/aspects/Group.java b/spring-data-neo4j-aspects/src/test/java/org/springframework/data/neo4j/aspects/Group.java index 500b242c6..8bd48abe6 100644 --- a/spring-data-neo4j-aspects/src/test/java/org/springframework/data/neo4j/aspects/Group.java +++ b/spring-data-neo4j-aspects/src/test/java/org/springframework/data/neo4j/aspects/Group.java @@ -41,13 +41,13 @@ public class Group { @RelatedTo(type = "persons", elementClass = Person.class) private Iterable readOnlyPersons; - @GraphTraversal(traversalBuilder = PeopleTraversalBuilder.class, elementClass = Person.class, params = "persons") + @GraphTraversal(traversal = PeopleTraversalBuilder.class, elementClass = Person.class, params = "persons") private Iterable people; - @GraphTraversal(traversalBuilder = PeopleTraversalBuilder.class, params = "persons") + @GraphTraversal(traversal = PeopleTraversalBuilder.class, params = "persons") private Iterable peopleNodes; - @GraphTraversal(traversalBuilder = PeopleTraversalBuilder.class, params = "persons") + @GraphTraversal(traversal = PeopleTraversalBuilder.class, params = "persons") private Iterable peopleRelationships; @GraphProperty diff --git a/spring-data-neo4j-examples/myrestaurants-social/src/main/java/com/springone/myrestaurants/domain/UserAccount.java b/spring-data-neo4j-examples/myrestaurants-social/src/main/java/com/springone/myrestaurants/domain/UserAccount.java index 89274936e..23f22af75 100644 --- a/spring-data-neo4j-examples/myrestaurants-social/src/main/java/com/springone/myrestaurants/domain/UserAccount.java +++ b/spring-data-neo4j-examples/myrestaurants-social/src/main/java/com/springone/myrestaurants/domain/UserAccount.java @@ -14,10 +14,8 @@ import javax.persistence.ManyToMany; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; -import javax.persistence.Transient; import javax.persistence.Version; -import org.neo4j.graphdb.DynamicRelationshipType; import org.springframework.data.neo4j.annotation.GraphProperty; import org.springframework.data.neo4j.annotation.GraphTraversal; import org.springframework.data.neo4j.annotation.NodeEntity; @@ -46,7 +44,7 @@ public class UserAccount { @RelatedToVia(type = "recommends", elementClass = Recommendation.class) Iterable recommendations; - @GraphTraversal(traversalBuilder = TopRatedRestaurantTraverser.class, elementClass = Restaurant.class) + @GraphTraversal(traversal = TopRatedRestaurantTraverser.class, elementClass = Restaurant.class) Iterable topRatedRestaurants; public Collection getTopNRatedRestaurants(int n) { diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/annotation/GraphTraversal.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/annotation/GraphTraversal.java index 6c61a2d10..854eb68fd 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/annotation/GraphTraversal.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/annotation/GraphTraversal.java @@ -40,7 +40,7 @@ public @interface GraphTraversal { * @return Builder for the {@link org.neo4j.graphdb.traversal.TraversalDescription} to be applied */ // FQN is a fix for javac compiler bug - Class traversalBuilder() default org.springframework.data.neo4j.core.FieldTraversalDescriptionBuilder.class; + Class traversal() default org.springframework.data.neo4j.core.FieldTraversalDescriptionBuilder.class; /** * @return target graph entity to be iterated over. diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/core/FieldTraversalDescriptionBuilder.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/core/FieldTraversalDescriptionBuilder.java index 618772ac0..d1b7d0654 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/core/FieldTraversalDescriptionBuilder.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/core/FieldTraversalDescriptionBuilder.java @@ -21,7 +21,7 @@ import org.springframework.data.neo4j.mapping.Neo4jPersistentProperty; /** * Interface for classes that build traversal descriptions. Those classes can be referred to by - * {@link org.springframework.data.neo4j.annotation.GraphTraversal#traversalBuilder()} to provide fields that return + * {@link org.springframework.data.neo4j.annotation.GraphTraversal#traversal()} to provide fields that return * a dynamic traversal on access. * * @author Michael Hunger diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/fieldaccess/TraversalFieldAccessorFactory.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/fieldaccess/TraversalFieldAccessorFactory.java index 9bdc0ed76..f33ed9599 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/fieldaccess/TraversalFieldAccessorFactory.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/fieldaccess/TraversalFieldAccessorFactory.java @@ -43,7 +43,7 @@ public class TraversalFieldAccessorFactory implements FieldAccessorFactory { public boolean accept(final Neo4jPersistentProperty f) { final GraphTraversal graphEntityTraversal = f.getAnnotation(GraphTraversal.class); return graphEntityTraversal != null - && graphEntityTraversal.traversalBuilder() != FieldTraversalDescriptionBuilder.class + && graphEntityTraversal.traversal() != FieldTraversalDescriptionBuilder.class && f.getType().equals(Iterable.class); } @@ -110,7 +110,7 @@ public class TraversalFieldAccessorFactory implements FieldAccessorFactory { private FieldTraversalDescriptionBuilder createTraversalDescription(final GraphTraversal graphEntityTraversal) { try { - final Class traversalDescriptionClass = graphEntityTraversal.traversalBuilder(); + final Class traversalDescriptionClass = graphEntityTraversal.traversal(); final Constructor constructor = traversalDescriptionClass.getDeclaredConstructor(); constructor.setAccessible(true); return constructor.newInstance(); diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/GraphDatabaseContext.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/GraphDatabaseContext.java index 9b4471526..b6c3bd5db 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/GraphDatabaseContext.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/GraphDatabaseContext.java @@ -31,6 +31,7 @@ import org.springframework.core.convert.ConversionService; import org.springframework.data.neo4j.annotation.Indexed; import org.springframework.data.neo4j.annotation.NodeEntity; import org.springframework.data.neo4j.annotation.RelationshipEntity; +import org.springframework.data.neo4j.core.EntityPath; import org.springframework.data.neo4j.core.TypeRepresentationStrategy; import org.springframework.data.neo4j.fieldaccess.GraphBackedEntityIterableWrapper; import org.springframework.data.neo4j.mapping.Neo4jEntityPersister; @@ -38,6 +39,8 @@ import org.springframework.data.neo4j.mapping.Neo4jMappingContext; import org.springframework.data.neo4j.mapping.Neo4jPersistentProperty; import org.springframework.data.neo4j.support.node.EntityStateFactory; import org.springframework.data.neo4j.support.node.NodeEntityInstantiator; +import org.springframework.data.neo4j.support.path.ConvertingEntityPath; +import org.springframework.data.neo4j.support.path.EntityPathPathIterableWrapper; import org.springframework.data.neo4j.support.query.CypherQueryExecutor; import org.springframework.data.neo4j.support.relationship.RelationshipEntityInstantiator; import org.springframework.data.util.TypeInformation; @@ -330,6 +333,7 @@ public class GraphDatabaseContext { public Iterable convertResultsTo(Traverser traverser, Class targetType) { if (Node.class.isAssignableFrom(targetType)) return (Iterable) traverser.nodes(); if (Relationship.class.isAssignableFrom(targetType)) return (Iterable) traverser.relationships(); + if (EntityPath.class.isAssignableFrom(targetType)) return new EntityPathPathIterableWrapper(traverser,this); if (Path.class.isAssignableFrom(targetType)) return (Iterable) traverser; if (isNodeEntity(targetType)) { return GraphBackedEntityIterableWrapper.create(traverser.nodes(), targetType, this); diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/model/Group.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/model/Group.java index 19587bf49..729535d4f 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/model/Group.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/model/Group.java @@ -47,7 +47,7 @@ public class Group { @RelatedTo(type = "persons", elementClass = Person.class) private Iterable readOnlyPersons; - @GraphTraversal(traversalBuilder = PeopleTraversalBuilder.class, elementClass = Person.class, params = "persons") + @GraphTraversal(traversal = PeopleTraversalBuilder.class, elementClass = Person.class, params = "persons") private Iterable people; @GraphProperty diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/model/Person.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/model/Person.java index a873fd299..dacaf037b 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/model/Person.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/model/Person.java @@ -71,16 +71,16 @@ public class Person { @RelatedToVia(type = "knows", elementClass = Friendship.class) private Iterable friendships; - @Query(value = "start person=node({self}) match (person)<-[?:boss]-(boss) return boss") + @Query("start person=node({self}) match (person)<-[?:boss]-(boss) return boss") private Person bossByQuery; - @Query(value = "start person=node({self}) match (person)<-[?:boss]-(boss) return boss.name") + @Query("start person=node({self}) match (person)<-[?:boss]-(boss) return boss.name") private String bossName; - @Query(value = "start person=node({self}) match (person)<-[:persons]-(team)-[:persons]->(member) return member") + @Query("start person=node({self}) match (person)<-[:persons]-(team)-[:persons]->(member) return member") private Iterable otherTeamMembers; - @Query(value = "start person=node({self}) match (person)<-[:persons]-(team)-[:persons]->(member) return member.name, member.age") + @Query("start person=node({self}) match (person)<-[:persons]-(team)-[:persons]->(member) return member.name, member.age") private Iterable> otherTeamMemberData; public Person(Node n) { diff --git a/spring-data-neo4j/src/test/resources/repository-namespace-config-context.xml b/spring-data-neo4j/src/test/resources/repository-namespace-config-context.xml index 29bae8edf..a691fcaf1 100644 --- a/spring-data-neo4j/src/test/resources/repository-namespace-config-context.xml +++ b/spring-data-neo4j/src/test/resources/repository-namespace-config-context.xml @@ -10,6 +10,6 @@ - + \ No newline at end of file