From f0b1eff928b7b182cf1111af83e6e9dee9d2cb54 Mon Sep 17 00:00:00 2001 From: Michael Hunger Date: Mon, 6 Aug 2012 18:48:29 +0200 Subject: [PATCH] Updates to stable versions of Neo4j 1.8.M06, spatial, cypher-dsl and java-rest-binding, adopted to API changes --- .../data/neo4j/aspects/Group.java | 3 +- .../aspects/support/NodeEntityQueryTest.java | 4 +- .../neo4j/aspects/support/NodeEntityTest.java | 8 ++ .../neo4j/aspects/support/TraversalTest.java | 2 +- .../backwardscompatibility/pom.xml | 2 +- .../cineasts-aspects/pom.xml | 11 +- .../webapp/WEB-INF/applicationContext.xml | 6 +- .../cineasts-rest/pom.xml | 12 +- .../webapp/WEB-INF/applicationContext.xml | 6 +- spring-data-neo4j-examples/cineasts/pom.xml | 11 +- .../webapp/WEB-INF/applicationContext.xml | 6 +- .../examples/imdb/domain/ImdbServiceImpl.java | 3 +- .../main/webapp/WEB-INF/imdb-app-servlet.xml | 8 +- .../myrestaurants-social/pom.xml | 2 +- .../domain/TopRatedRestaurantFinder.java | 14 ++- .../domain/TopRatedRestaurantTraverser.java | 15 ++- .../META-INF/spring/applicationContext.xml | 12 +- spring-data-neo4j-examples/todos/pom.xml | 4 +- .../spring/applicationContext-graph.xml | 6 +- spring-data-neo4j-parent/pom.xml | 19 +-- spring-data-neo4j-rest/pom.xml | 10 +- .../neo4j/rest/SpringRestGraphDatabase.java | 25 ++-- .../neo4j/rest/support/LocalTestServer.java | 110 +++++++++--------- .../data/neo4j/rest/support/RestTestBase.java | 22 ++++ .../neo4j/rest/support/ServerPluginTest.java | 2 +- .../neo4j/transaction/SpringProvider.java | 3 +- .../transaction/JOTMIntegrationTest.java | 2 +- .../repository/AbstractGraphRepository.java | 4 +- .../neo4j/repository/CypherDslRepository.java | 2 +- .../support/mapping/EntityStateHandler.java | 10 +- .../support/path/ConvertingEntityPath.java | 10 ++ .../data/neo4j/support/path/NodePath.java | 10 ++ .../neo4j/support/path/RelationshipPath.java | 10 ++ .../config/DataGraphNamespaceHandlerTest.java | 7 +- .../data/neo4j/model/Group.java | 6 +- .../repository/CypherDslRepositoryTest.java | 8 +- .../support/EntityNeo4jTemplateTest.java | 4 +- .../neo4j/template/FullNeo4jTemplateTest.java | 4 +- .../neo4j/template/Neo4jTemplateApiTest.java | 4 +- .../data/neo4j/template/NeoTraversalTest.java | 7 +- src/docbkx/reference/cross-store.xml | 6 +- src/docbkx/reference/neo4j-server.xml | 2 +- src/docbkx/reference/setup.xml | 25 ++-- src/docbkx/tutorial/neo4j-server.xml | 2 +- src/docbkx/tutorial/neo4j.xml | 2 +- src/docbkx/tutorial/spring-data-neo4j-aj.xml | 4 +- src/docbkx/tutorial/spring-data-neo4j.xml | 4 +- 47 files changed, 260 insertions(+), 199 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 81c8a4a48..f9ad693dc 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 @@ -20,6 +20,7 @@ import org.neo4j.graphdb.Direction; import org.neo4j.graphdb.DynamicRelationshipType; import org.neo4j.graphdb.Node; import org.neo4j.graphdb.Relationship; +import org.neo4j.graphdb.traversal.Evaluators; import org.neo4j.graphdb.traversal.TraversalDescription; import org.neo4j.kernel.Traversal; import org.neo4j.kernel.impl.traversal.TraversalDescriptionImpl; @@ -184,7 +185,7 @@ public class Group { public TraversalDescription build(Object start, Neo4jPersistentProperty property, String...params) { return new TraversalDescriptionImpl() .relationships(DynamicRelationshipType.withName(params[0])) - .filter(Traversal.returnAllButStartNode()); + .evaluator(Evaluators.excludeStartPosition()); } } diff --git a/spring-data-neo4j-aspects/src/test/java/org/springframework/data/neo4j/aspects/support/NodeEntityQueryTest.java b/spring-data-neo4j-aspects/src/test/java/org/springframework/data/neo4j/aspects/support/NodeEntityQueryTest.java index a015f4111..786aedd8f 100644 --- a/spring-data-neo4j-aspects/src/test/java/org/springframework/data/neo4j/aspects/support/NodeEntityQueryTest.java +++ b/spring-data-neo4j-aspects/src/test/java/org/springframework/data/neo4j/aspects/support/NodeEntityQueryTest.java @@ -78,8 +78,8 @@ public class NodeEntityQueryTest extends EntityTestBase { } @Test - public void testEmptyQueryReturnsNull() { + public void testEmptyQueryReturnsZero() { final Group group = neo4jTemplate.save(new Group()); - assertNull("empty result leads to null value", group.getMemberCount()); + assertEquals("empty result leads to zero",(Long)0L, group.getMemberCount()); } } diff --git a/spring-data-neo4j-aspects/src/test/java/org/springframework/data/neo4j/aspects/support/NodeEntityTest.java b/spring-data-neo4j-aspects/src/test/java/org/springframework/data/neo4j/aspects/support/NodeEntityTest.java index b34240cf3..110443e40 100644 --- a/spring-data-neo4j-aspects/src/test/java/org/springframework/data/neo4j/aspects/support/NodeEntityTest.java +++ b/spring-data-neo4j-aspects/src/test/java/org/springframework/data/neo4j/aspects/support/NodeEntityTest.java @@ -17,6 +17,7 @@ package org.springframework.data.neo4j.aspects.support; import org.junit.Assert; +import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.neo4j.graphdb.Transaction; @@ -212,6 +213,13 @@ public class NodeEntityTest extends EntityTestBase { attribute.setValue("test"); persist(attribute); } + + @Test + @Ignore + public void testNotEqualToNonNodebackedObject() { + final Attribute attribute = new Attribute(); + assertEquals(false, persist(attribute).equals("foo")); + } @Test public void testAccessReadOnlyCollectionMakesEntityDirty() { Group g = new Group(); diff --git a/spring-data-neo4j-aspects/src/test/java/org/springframework/data/neo4j/aspects/support/TraversalTest.java b/spring-data-neo4j-aspects/src/test/java/org/springframework/data/neo4j/aspects/support/TraversalTest.java index afb27a3d3..95e6865a7 100644 --- a/spring-data-neo4j-aspects/src/test/java/org/springframework/data/neo4j/aspects/support/TraversalTest.java +++ b/spring-data-neo4j-aspects/src/test/java/org/springframework/data/neo4j/aspects/support/TraversalTest.java @@ -112,7 +112,7 @@ public class TraversalTest extends EntityTestBase { Group group = persist(new Group()); group.setName("dev"); group.addPerson(p); - final TraversalDescription traversalDescription = new TraversalDescriptionImpl().relationships(DynamicRelationshipType.withName("persons")).filter(Traversal.returnAllButStartNode()); + final TraversalDescription traversalDescription = new TraversalDescriptionImpl().relationships(DynamicRelationshipType.withName("persons")).evaluator(Evaluators.excludeStartPosition()); Iterable people = finder.findAllByTraversal(group, traversalDescription); final HashSet found = new HashSet(); for (Person person : people) { diff --git a/spring-data-neo4j-examples/backwardscompatibility/pom.xml b/spring-data-neo4j-examples/backwardscompatibility/pom.xml index 09ef9e599..9aa65882e 100644 --- a/spring-data-neo4j-examples/backwardscompatibility/pom.xml +++ b/spring-data-neo4j-examples/backwardscompatibility/pom.xml @@ -86,7 +86,7 @@ 1.8-SNAPSHOT - 1.8-SNAPSHOT + 1.8.M06 diff --git a/spring-data-neo4j-examples/cineasts-aspects/pom.xml b/spring-data-neo4j-examples/cineasts-aspects/pom.xml index 3bfe8b53d..b36375b73 100644 --- a/spring-data-neo4j-examples/cineasts-aspects/pom.xml +++ b/spring-data-neo4j-examples/cineasts-aspects/pom.xml @@ -11,12 +11,11 @@ UTF-8 - 3.0.7.RELEASE + 3.1.0.RELEASE 1.6.1 - 1.7 + 1.8.M06 ${project.version} 1.6.12 - 1.6.1 @@ -153,17 +152,17 @@ org.slf4j slf4j-api - ${org.slf4j-version} + ${slf4j.version} org.slf4j jcl-over-slf4j - ${org.slf4j-version} + ${slf4j.version} org.slf4j slf4j-log4j12 - ${org.slf4j-version} + ${slf4j.version} runtime diff --git a/spring-data-neo4j-examples/cineasts-aspects/src/main/webapp/WEB-INF/applicationContext.xml b/spring-data-neo4j-examples/cineasts-aspects/src/main/webapp/WEB-INF/applicationContext.xml index bff684ee6..c2ccf767e 100644 --- a/spring-data-neo4j-examples/cineasts-aspects/src/main/webapp/WEB-INF/applicationContext.xml +++ b/spring-data-neo4j-examples/cineasts-aspects/src/main/webapp/WEB-INF/applicationContext.xml @@ -4,9 +4,9 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:neo4j="http://www.springframework.org/schema/data/neo4j" xmlns:tx="http://www.springframework.org/schema/tx" - xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd - http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd - http://www.springframework.org/schema/data/neo4j http://www.springframework.org/schema/data/neo4j/spring-neo4j-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> + xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd + http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd + http://www.springframework.org/schema/data/neo4j http://www.springframework.org/schema/data/neo4j/spring-neo4j.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> diff --git a/spring-data-neo4j-examples/cineasts-rest/pom.xml b/spring-data-neo4j-examples/cineasts-rest/pom.xml index c0e782d87..3eeb61898 100644 --- a/spring-data-neo4j-examples/cineasts-rest/pom.xml +++ b/spring-data-neo4j-examples/cineasts-rest/pom.xml @@ -11,12 +11,11 @@ UTF-8 - 3.0.7.RELEASE + 3.1.0.RELEASE 1.6.1 - 1.7 + 1.8.M06 ${project.version} 1.6.12 - 1.6.1 1.4 @@ -166,17 +165,17 @@ org.slf4j slf4j-api - ${org.slf4j-version} + ${slf4j.version} org.slf4j jcl-over-slf4j - ${org.slf4j-version} + ${slf4j.version} org.slf4j slf4j-log4j12 - ${org.slf4j-version} + ${slf4j.version} runtime @@ -400,6 +399,7 @@ org.apache.maven.plugins maven-surefire-plugin + once true **/*Tests.java diff --git a/spring-data-neo4j-examples/cineasts-rest/src/main/webapp/WEB-INF/applicationContext.xml b/spring-data-neo4j-examples/cineasts-rest/src/main/webapp/WEB-INF/applicationContext.xml index 611ff25f8..87a0a4c0a 100644 --- a/spring-data-neo4j-examples/cineasts-rest/src/main/webapp/WEB-INF/applicationContext.xml +++ b/spring-data-neo4j-examples/cineasts-rest/src/main/webapp/WEB-INF/applicationContext.xml @@ -4,9 +4,9 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:neo4j="http://www.springframework.org/schema/data/neo4j" xmlns:tx="http://www.springframework.org/schema/tx" - xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd - http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd - http://www.springframework.org/schema/data/neo4j http://www.springframework.org/schema/data/neo4j/spring-neo4j-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> + xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd + http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd + http://www.springframework.org/schema/data/neo4j http://www.springframework.org/schema/data/neo4j/spring-neo4j.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> diff --git a/spring-data-neo4j-examples/cineasts/pom.xml b/spring-data-neo4j-examples/cineasts/pom.xml index 043c27754..6e967ef59 100644 --- a/spring-data-neo4j-examples/cineasts/pom.xml +++ b/spring-data-neo4j-examples/cineasts/pom.xml @@ -11,12 +11,11 @@ UTF-8 - 3.0.7.RELEASE + 3.1.0.RELEASE 1.6.1 ${project.version} - 1.6.1 1.6.12 - 1.7 + 1.8.M06 @@ -153,17 +152,17 @@ org.slf4j slf4j-api - ${org.slf4j-version} + ${slf4j.version} org.slf4j jcl-over-slf4j - ${org.slf4j-version} + ${slf4j.version} org.slf4j slf4j-log4j12 - ${org.slf4j-version} + ${slf4j.version} runtime diff --git a/spring-data-neo4j-examples/cineasts/src/main/webapp/WEB-INF/applicationContext.xml b/spring-data-neo4j-examples/cineasts/src/main/webapp/WEB-INF/applicationContext.xml index 61f2ec520..c53ae4bd8 100644 --- a/spring-data-neo4j-examples/cineasts/src/main/webapp/WEB-INF/applicationContext.xml +++ b/spring-data-neo4j-examples/cineasts/src/main/webapp/WEB-INF/applicationContext.xml @@ -4,9 +4,9 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:neo4j="http://www.springframework.org/schema/data/neo4j" xmlns:tx="http://www.springframework.org/schema/tx" - xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd - http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd - http://www.springframework.org/schema/data/neo4j http://www.springframework.org/schema/data/neo4j/spring-neo4j-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> + xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd + http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd + http://www.springframework.org/schema/data/neo4j http://www.springframework.org/schema/data/neo4j/spring-neo4j.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> diff --git a/spring-data-neo4j-examples/imdb/src/main/java/org/neo4j/examples/imdb/domain/ImdbServiceImpl.java b/spring-data-neo4j-examples/imdb/src/main/java/org/neo4j/examples/imdb/domain/ImdbServiceImpl.java index 03341658a..241b9e6c8 100644 --- a/spring-data-neo4j-examples/imdb/src/main/java/org/neo4j/examples/imdb/domain/ImdbServiceImpl.java +++ b/spring-data-neo4j-examples/imdb/src/main/java/org/neo4j/examples/imdb/domain/ImdbServiceImpl.java @@ -3,6 +3,7 @@ package org.neo4j.examples.imdb.domain; import org.neo4j.graphalgo.GraphAlgoFactory; import org.neo4j.graphdb.Node; import org.neo4j.graphdb.Path; +import org.neo4j.graphdb.PathExpander; import org.neo4j.kernel.StandardExpander; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.neo4j.support.Neo4jTemplate; @@ -71,7 +72,7 @@ class ImdbServiceImpl implements ImdbService { Actor bacon = actorRepository.findByPropertyValue("name", "Bacon, Kevin"); - Path path = GraphAlgoFactory.shortestPath(StandardExpander.DEFAULT.add(RelTypes.ACTS_IN), 10).findSinglePath(bacon.getPersistentState(), actor.getPersistentState()); + Path path = GraphAlgoFactory.shortestPath((PathExpander)StandardExpander.DEFAULT.add(RelTypes.ACTS_IN), 10).findSinglePath(bacon.getPersistentState(), actor.getPersistentState()); if (path==null) return Collections.emptyList(); return convertNodesToActorsAndMovies(path); } diff --git a/spring-data-neo4j-examples/imdb/src/main/webapp/WEB-INF/imdb-app-servlet.xml b/spring-data-neo4j-examples/imdb/src/main/webapp/WEB-INF/imdb-app-servlet.xml index 64adf9620..96743d3b5 100644 --- a/spring-data-neo4j-examples/imdb/src/main/webapp/WEB-INF/imdb-app-servlet.xml +++ b/spring-data-neo4j-examples/imdb/src/main/webapp/WEB-INF/imdb-app-servlet.xml @@ -5,10 +5,10 @@ xmlns:tx="http://www.springframework.org/schema/tx" xmlns:neo4j="http://www.springframework.org/schema/data/neo4j" xsi:schemaLocation=" - http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd - http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd - http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd - http://www.springframework.org/schema/data/neo4j http://www.springframework.org/schema/data/neo4j/spring-neo4j-2.0.xsd"> + http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd + http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd + http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd + http://www.springframework.org/schema/data/neo4j http://www.springframework.org/schema/data/neo4j/spring-neo4j.xsd"> diff --git a/spring-data-neo4j-examples/myrestaurants-social/pom.xml b/spring-data-neo4j-examples/myrestaurants-social/pom.xml index 8235c1ec5..98d47e05f 100644 --- a/spring-data-neo4j-examples/myrestaurants-social/pom.xml +++ b/spring-data-neo4j-examples/myrestaurants-social/pom.xml @@ -11,7 +11,7 @@ ${project.version} 1.6.12 1.6.1 - 1.7 + 1.8.M06 UTF-8 3.1.0.RELEASE diff --git a/spring-data-neo4j-examples/myrestaurants-social/src/main/java/com/springone/myrestaurants/domain/TopRatedRestaurantFinder.java b/spring-data-neo4j-examples/myrestaurants-social/src/main/java/com/springone/myrestaurants/domain/TopRatedRestaurantFinder.java index e984f0003..77b59924e 100644 --- a/spring-data-neo4j-examples/myrestaurants-social/src/main/java/com/springone/myrestaurants/domain/TopRatedRestaurantFinder.java +++ b/spring-data-neo4j-examples/myrestaurants-social/src/main/java/com/springone/myrestaurants/domain/TopRatedRestaurantFinder.java @@ -1,7 +1,7 @@ package com.springone.myrestaurants.domain; import org.neo4j.graphdb.*; -import org.neo4j.graphdb.traversal.TraversalDescription; +import org.neo4j.graphdb.traversal.*; import org.neo4j.graphdb.traversal.Traverser; import org.neo4j.helpers.Predicate; import org.neo4j.kernel.Traversal; @@ -28,8 +28,8 @@ public class TopRatedRestaurantFinder { final Node userNode=user.getPersistentState(); final TraversalDescription traversalDescription = new TraversalDescriptionImpl() .order(Traversal.postorderBreadthFirst()) - .prune(Traversal.pruneAfterDepth(MAXIMUM_DEPTH)) - .filter(calculateRatingPredicate) + .evaluator(Evaluators.toDepth(MAXIMUM_DEPTH)) + .evaluator(calculateRatingPredicate) .relationships(DynamicRelationshipType.withName("friends")); final Traverser traverser = traversalDescription.traverse(userNode); final Iterator it = traverser.nodes().iterator(); @@ -39,7 +39,8 @@ public class TopRatedRestaurantFinder { return calculateRatingPredicate.getRecommendedRestaurants(n); } - private class CalculateRatingPredicate implements Predicate { + private class CalculateRatingPredicate implements Evaluator { + class AggregatedRecommendation implements Comparable { private Node restaurant; private Collection recommendations=new HashSet(); @@ -77,7 +78,8 @@ public class TopRatedRestaurantFinder { public CalculateRatingPredicate() { } - public boolean accept(final Path path) { + @Override + public Evaluation evaluate(Path path) { final int distance = path.length(); final Node friend = path.endNode(); for (final Relationship recommendation : friend.getRelationships(DynamicRelationshipType.withName("recommends"))) { @@ -87,7 +89,7 @@ public class TopRatedRestaurantFinder { } recommendedRestaurants.get(restaurant).add(recommendation,distance); } - return true; + return Evaluation.INCLUDE_AND_CONTINUE; } public Collection getRecommendedRestaurants(final int n) { diff --git a/spring-data-neo4j-examples/myrestaurants-social/src/main/java/com/springone/myrestaurants/domain/TopRatedRestaurantTraverser.java b/spring-data-neo4j-examples/myrestaurants-social/src/main/java/com/springone/myrestaurants/domain/TopRatedRestaurantTraverser.java index 26ef81c7a..2709545ad 100644 --- a/spring-data-neo4j-examples/myrestaurants-social/src/main/java/com/springone/myrestaurants/domain/TopRatedRestaurantTraverser.java +++ b/spring-data-neo4j-examples/myrestaurants-social/src/main/java/com/springone/myrestaurants/domain/TopRatedRestaurantTraverser.java @@ -1,10 +1,8 @@ package com.springone.myrestaurants.domain; import org.neo4j.graphdb.DynamicRelationshipType; -import org.neo4j.graphdb.traversal.BranchOrderingPolicy; -import org.neo4j.graphdb.traversal.BranchSelector; -import org.neo4j.graphdb.traversal.TraversalBranch; -import org.neo4j.graphdb.traversal.TraversalDescription; +import org.neo4j.graphdb.PathExpander; +import org.neo4j.graphdb.traversal.*; import org.neo4j.kernel.impl.traversal.TraversalDescriptionImpl; import org.springframework.data.neo4j.core.FieldTraversalDescriptionBuilder; import org.springframework.data.neo4j.mapping.Neo4jPersistentProperty; @@ -23,17 +21,18 @@ class TopRatedRestaurantTraverser implements FieldTraversalDescriptionBuilder { .relationships(DynamicRelationshipType.withName("friends")) .order(new BranchOrderingPolicy() { @Override - public BranchSelector create(final TraversalBranch startBranch) { + public BranchSelector create(final TraversalBranch startBranch, final PathExpander expander) { return new BranchSelector(){ @Override - public TraversalBranch next() { + public TraversalBranch next(TraversalContext metadata) { TraversalBranch branch=startBranch; while (branch!=null) { - if (branch.depth() + xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd + http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd + http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd + http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/data/neo4j http://www.springframework.org/schema/data/neo4j/spring-neo4j.xsd"> 3.1.2.RELEASE 1.4.0.M1 - 1.7.1 - 0.8 + 1.8.M06 + 0.9.M01 1.6.12 1.2 1.5 @@ -443,12 +443,6 @@ org.neo4j neo4j ${neo4j.version} - - - org.neo4j - neo4j-cypher - - @@ -471,11 +465,10 @@ true - org.neo4j - neo4j-cypher-dsl - 1.7 - - + org.neo4j + neo4j-cypher-dsl + 1.8.M06 + org.neo4j diff --git a/spring-data-neo4j-rest/pom.xml b/spring-data-neo4j-rest/pom.xml index 131f6ac6b..397a867f8 100644 --- a/spring-data-neo4j-rest/pom.xml +++ b/spring-data-neo4j-rest/pom.xml @@ -38,7 +38,7 @@ org.neo4j neo4j-rest-graphdb - 1.7 + 1.8.M06 org.neo4j @@ -163,12 +163,12 @@ org.codehaus.jackson jackson-jaxrs - 1.6.1 + 1.8.5 org.codehaus.jackson jackson-mapper-asl - 1.6.1 + 1.8.5 com.sun.jersey @@ -233,7 +233,7 @@ org.springframework.data spring-data-neo4j - 2.1.0.BUILD-SNAPSHOT + ${project.version} test test-jar @@ -241,7 +241,7 @@ org.springframework.data spring-data-neo4j-aspects - 2.1.0.BUILD-SNAPSHOT + ${project.version} test test-jar diff --git a/spring-data-neo4j-rest/src/main/java/org/springframework/data/neo4j/rest/SpringRestGraphDatabase.java b/spring-data-neo4j-rest/src/main/java/org/springframework/data/neo4j/rest/SpringRestGraphDatabase.java index 9cd467732..54360dc39 100644 --- a/spring-data-neo4j-rest/src/main/java/org/springframework/data/neo4j/rest/SpringRestGraphDatabase.java +++ b/spring-data-neo4j-rest/src/main/java/org/springframework/data/neo4j/rest/SpringRestGraphDatabase.java @@ -18,17 +18,17 @@ package org.springframework.data.neo4j.rest; import org.neo4j.graphdb.*; import org.neo4j.graphdb.index.Index; import org.neo4j.graphdb.traversal.TraversalDescription; -import org.neo4j.rest.graphdb.ExecutingRestRequest; import org.neo4j.rest.graphdb.RestAPI; -import org.neo4j.rest.graphdb.RestRequest; +import org.neo4j.rest.graphdb.RestAPIFacade; import org.neo4j.rest.graphdb.entity.RestNode; import org.neo4j.rest.graphdb.index.RestIndex; import org.neo4j.rest.graphdb.index.RestIndexManager; import org.neo4j.rest.graphdb.query.RestCypherQueryEngine; import org.neo4j.rest.graphdb.query.RestGremlinQueryEngine; +import org.neo4j.rest.graphdb.transaction.NullTransaction; +import org.neo4j.rest.graphdb.transaction.NullTransactionManager; import org.springframework.core.convert.ConversionService; import org.springframework.data.neo4j.annotation.QueryType; -import org.springframework.data.neo4j.config.NullTransactionManager; import org.springframework.data.neo4j.conversion.DefaultConverter; import org.springframework.data.neo4j.conversion.ResultConverter; import org.springframework.data.neo4j.core.GraphDatabase; @@ -48,15 +48,11 @@ public class SpringRestGraphDatabase extends org.neo4j.rest.graphdb.RestGraphDat } public SpringRestGraphDatabase( String uri ) { - this( new ExecutingRestRequest( uri )); + this( new RestAPIFacade( uri ) ); } public SpringRestGraphDatabase( String uri, String user, String password ) { - this(new ExecutingRestRequest( uri, user, password )); - } - - public SpringRestGraphDatabase( RestRequest restRequest){ - this(new RestAPI(restRequest)); + this(new RestAPIFacade( uri, user, password )); } @Override @@ -64,6 +60,17 @@ public class SpringRestGraphDatabase extends org.neo4j.rest.graphdb.RestGraphDat return super.getRestAPI().createNode(props); } + @Override + public Transaction beginTx() { + // return super.beginTx(); + return new NullTransaction(); + } + + @Override + public TransactionManager getTxManager() { + return new NullTransactionManager(); + } + @Override public Node getOrCreateNode(String indexName, String key, Object value, final Map properties) { if (indexName ==null || key == null || value==null) throw new IllegalArgumentException("Unique index "+ indexName +" key "+key+" value must not be null"); diff --git a/spring-data-neo4j-rest/src/test/java/org/springframework/data/neo4j/rest/support/LocalTestServer.java b/spring-data-neo4j-rest/src/test/java/org/springframework/data/neo4j/rest/support/LocalTestServer.java index ca94decf6..b661ed1d2 100644 --- a/spring-data-neo4j-rest/src/test/java/org/springframework/data/neo4j/rest/support/LocalTestServer.java +++ b/spring-data-neo4j-rest/src/test/java/org/springframework/data/neo4j/rest/support/LocalTestServer.java @@ -16,45 +16,35 @@ package org.springframework.data.neo4j.rest.support; -import org.apache.commons.configuration.Configuration; import org.mortbay.component.LifeCycle; -import org.mortbay.jetty.NCSARequestLog; import org.mortbay.jetty.Server; -import org.mortbay.jetty.handler.RequestLogHandler; import org.neo4j.graphdb.GraphDatabaseService; -import org.neo4j.kernel.AbstractGraphDatabase; -import org.neo4j.server.Bootstrapper; -import org.neo4j.server.NeoServerWithEmbeddedWebServer; +import org.neo4j.server.CommunityNeoServer; import org.neo4j.server.configuration.PropertyFileConfigurator; import org.neo4j.server.database.Database; -import org.neo4j.server.database.GraphDatabaseFactory; +import org.neo4j.server.database.WrappingDatabase; import org.neo4j.server.modules.RESTApiModule; import org.neo4j.server.modules.ServerModule; import org.neo4j.server.modules.ThirdPartyJAXRSModule; import org.neo4j.server.startup.healthcheck.StartupHealthCheck; -import org.neo4j.server.startup.healthcheck.StartupHealthCheckRule; import org.neo4j.server.web.Jetty6WebServer; +import org.neo4j.server.web.WebServer; import org.neo4j.test.ImpermanentGraphDatabase; import java.io.File; import java.net.URI; import java.net.URL; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Map; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; -/** - * @author mh - * @since 24.03.11 - */ +import static java.util.Arrays.asList; + public class LocalTestServer { - private NeoServerWithEmbeddedWebServer neoServer; + private CommunityNeoServer neoServer; private final int port; private final String hostname; protected String propertiesFile = "test-db.properties"; + private final ImpermanentGraphDatabase graphDatabase; public LocalTestServer() { this("localhost",7473); @@ -63,69 +53,69 @@ public class LocalTestServer { public LocalTestServer(String hostname, int port) { this.port = port; this.hostname = hostname; + graphDatabase = new ImpermanentGraphDatabase(); } public void start() { if (neoServer!=null) throw new IllegalStateException("Server already running"); URL url = getClass().getResource("/" + propertiesFile); if (url==null) throw new IllegalArgumentException("Could not resolve properties file "+propertiesFile); - final List> serverModules = Arrays.asList(RESTApiModule.class, ThirdPartyJAXRSModule.class); - final Bootstrapper bootstrapper = new Bootstrapper() { - @Override - protected GraphDatabaseFactory getGraphDatabaseFactory(Configuration configuration) { - return new GraphDatabaseFactory() { - @Override - public AbstractGraphDatabase createDatabase(String databaseStoreDirectory, Map databaseProperties) { - return new ImpermanentGraphDatabase(); - } - }; - } - - @Override - protected Iterable getHealthCheckRules() { - return Collections.emptyList(); - } - - @Override - protected Iterable> getServerModules() { - return serverModules; - } - }; - final JettyStartupListener startupListener = new JettyStartupListener(); final Jetty6WebServer jettyWebServer = new Jetty6WebServer() { @Override protected void startJetty() { final Server jettyServer = getJetty(); jettyServer.setStopAtShutdown(true); - final Server server = jettyServer.getServer(); - server.addLifeCycleListener(startupListener); - // addAccessLogHandler(server); + final JettyStartupListener startupListener = new JettyStartupListener(); + jettyServer.getServer().addLifeCycleListener(startupListener); + // System.err.println("jetty is started before notification " + jettyServer.isStarted()); + super.startJetty(); startupListener.await(); + jettyServer.removeLifeCycleListener(startupListener); + // System.err.println("jetty is started after notification " + jettyServer.isStarted()); } @Override public void stop() { - getJetty().setStopAtShutdown(false); + final Server jettyServer = getJetty(); + final JettyStartupListener listener = new JettyStartupListener(); + jettyServer.getServer().addLifeCycleListener(listener); + super.stop(); + + listener.await(); + jettyServer.removeLifeCycleListener(listener); } }; - neoServer = new NeoServerWithEmbeddedWebServer(bootstrapper, new StartupHealthCheck(), new PropertyFileConfigurator(new File(url.getPath())), jettyWebServer, serverModules) { + neoServer = new CommunityNeoServer(new PropertyFileConfigurator(new File(url.getPath()))) { @Override protected int getWebServerPort() { return port; } - }; - System.err.println(neoServer.getConfiguration()); - neoServer.start(); - } - private void addAccessLogHandler(Server server) { - final RequestLogHandler logHandler = new RequestLogHandler(); - final NCSARequestLog requestLog = new NCSARequestLog("/tmp/NCSARequestLog.log"); - logHandler.setRequestLog(requestLog); - server.addHandler(logHandler); + @Override + protected StartupHealthCheck createHealthCheck() { + return new StartupHealthCheck(); + } + + @Override + protected Database createDatabase() { + return new WrappingDatabase(graphDatabase); + } + + + @Override + protected WebServer createWebServer() { + return jettyWebServer; + } + + @Override + protected Iterable createServerModules() { + return asList(new RESTApiModule(webServer,database,configurator.configuration()),new ThirdPartyJAXRSModule(webServer,configurator)); + } + }; + neoServer.start(); } public void stop() { @@ -170,35 +160,39 @@ public class LocalTestServer { CountDownLatch latch=new CountDownLatch(1); public void await() { try { - latch.await(5, TimeUnit.SECONDS); + latch.await(10, TimeUnit.SECONDS); } catch(InterruptedException ie) { - Thread.currentThread().interrupt(); - throw new RuntimeException(ie); + System.err.println("ERROR startup took too long - await()"); + throw new RuntimeException("Jetty did not start correctly",ie); } } @Override public void lifeCycleStarting(LifeCycle event) { + System.err.println("STARTING"); } @Override public void lifeCycleStarted(LifeCycle event) { + System.err.println("STARTED"); latch.countDown(); } @Override public void lifeCycleFailure(LifeCycle event, Throwable cause) { + System.out.println("FAILURE "+cause.getMessage()); latch.countDown(); throw new RuntimeException(cause); } @Override public void lifeCycleStopping(LifeCycle event) { - + System.err.println("STOPPING"); } @Override public void lifeCycleStopped(LifeCycle event) { + System.err.println("STOPPED"); latch.countDown(); } } diff --git a/spring-data-neo4j-rest/src/test/java/org/springframework/data/neo4j/rest/support/RestTestBase.java b/spring-data-neo4j-rest/src/test/java/org/springframework/data/neo4j/rest/support/RestTestBase.java index 38a622fd2..e3fd1a6e3 100644 --- a/spring-data-neo4j-rest/src/test/java/org/springframework/data/neo4j/rest/support/RestTestBase.java +++ b/spring-data-neo4j-rest/src/test/java/org/springframework/data/neo4j/rest/support/RestTestBase.java @@ -27,8 +27,13 @@ import org.neo4j.graphdb.Direction; import org.neo4j.graphdb.GraphDatabaseService; import org.neo4j.graphdb.Node; import org.neo4j.graphdb.Relationship; +import org.neo4j.rest.graphdb.ExecutingRestRequest; +import org.neo4j.rest.graphdb.RequestResult; +import org.neo4j.rest.graphdb.RestRequest; import org.springframework.data.neo4j.rest.SpringRestGraphDatabase; +import static org.junit.Assert.assertEquals; + public class RestTestBase { protected SpringRestGraphDatabase restGraphDatabase; @@ -41,6 +46,23 @@ public class RestTestBase { public static void startDb() throws Exception { BasicConfigurator.configure(); neoServer.start(); + + tryConnect(); + } + + private static void tryConnect() throws InterruptedException { + int retryCount = 3; + for (int i = 0; i < retryCount; i++) { + try { + RequestResult result = new ExecutingRestRequest(SERVER_ROOT_URI).get(""); + assertEquals(200, result.getStatus()); + System.err.println("Successful HTTP connection to "+SERVER_ROOT_URI); + return; + } catch (Exception e) { + System.err.println("Error retrieving ROOT URI " + e.getMessage()); + Thread.sleep(500); + } + } } @Before diff --git a/spring-data-neo4j-rest/src/test/java/org/springframework/data/neo4j/rest/support/ServerPluginTest.java b/spring-data-neo4j-rest/src/test/java/org/springframework/data/neo4j/rest/support/ServerPluginTest.java index afb711036..7e29241dc 100644 --- a/spring-data-neo4j-rest/src/test/java/org/springframework/data/neo4j/rest/support/ServerPluginTest.java +++ b/spring-data-neo4j-rest/src/test/java/org/springframework/data/neo4j/rest/support/ServerPluginTest.java @@ -49,7 +49,7 @@ public class ServerPluginTest extends RestTestBase { Person person = persistedPerson("Michael", 35); final RequestResult requestResult = RequestResult.extractFrom(createRequest("ext/TestServerPlugin/graphdb/person").post(ClientResponse.class, "{\"name\":\"" + person.getName() + "\"}")); assertEquals(200, requestResult.getStatus()); - final String result = requestResult.getEntity(); + final String result = requestResult.getText(); final Map data = (Map) new ObjectMapper().readValue(result, Object.class); assertEquals(person.getName(),((Map)data.get("data")).get("name")); diff --git a/spring-data-neo4j-tx/src/main/java/org/springframework/data/neo4j/transaction/SpringProvider.java b/spring-data-neo4j-tx/src/main/java/org/springframework/data/neo4j/transaction/SpringProvider.java index b6b1001f7..bc6e796c9 100644 --- a/spring-data-neo4j-tx/src/main/java/org/springframework/data/neo4j/transaction/SpringProvider.java +++ b/spring-data-neo4j-tx/src/main/java/org/springframework/data/neo4j/transaction/SpringProvider.java @@ -22,6 +22,7 @@ import org.neo4j.kernel.impl.nioneo.store.FileSystemAbstraction; import org.neo4j.kernel.impl.transaction.AbstractTransactionManager; import org.neo4j.kernel.impl.transaction.TransactionManagerProvider; import org.neo4j.kernel.impl.transaction.TxHook; +import org.neo4j.kernel.impl.transaction.XaDataSourceManager; import org.neo4j.kernel.impl.util.StringLogger; import org.springframework.beans.factory.annotation.Configurable; @@ -35,7 +36,7 @@ public class SpringProvider extends TransactionManagerProvider } @Override - public AbstractTransactionManager loadTransactionManager(String s, KernelPanicEventGenerator kernelPanicEventGenerator, TxHook txHook, StringLogger stringLogger, FileSystemAbstraction fileSystemAbstraction) { + public AbstractTransactionManager loadTransactionManager(String txLogDir, XaDataSourceManager xaDataSourceManager, KernelPanicEventGenerator kpe, TxHook rollbackHook, StringLogger msgLog, FileSystemAbstraction fileSystem) { return new SpringServiceImpl(); } } diff --git a/spring-data-neo4j-tx/src/test/java/org/springframework/data/neo4j/transaction/JOTMIntegrationTest.java b/spring-data-neo4j-tx/src/test/java/org/springframework/data/neo4j/transaction/JOTMIntegrationTest.java index 40e0f660b..b2f5e778e 100644 --- a/spring-data-neo4j-tx/src/test/java/org/springframework/data/neo4j/transaction/JOTMIntegrationTest.java +++ b/spring-data-neo4j-tx/src/test/java/org/springframework/data/neo4j/transaction/JOTMIntegrationTest.java @@ -111,7 +111,7 @@ public class JOTMIntegrationTest { @Test public void databaseConfiguredWithSpringJtaShouldUseJtaTransactionManager() throws SystemException, NotSupportedException { - final Config config = ((AbstractGraphDatabase) gds).getConfig(); + final Config config = ((AbstractGraphDatabase) gds).getKernelData().getConfig(); Assert.assertEquals("spring-jta", config.getParams().get(Config.TXMANAGER_IMPLEMENTATION)); JtaTransactionManager tm = ctx.getBean("transactionManager", JtaTransactionManager.class); diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/AbstractGraphRepository.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/AbstractGraphRepository.java index ae7beb82f..5da034109 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/AbstractGraphRepository.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/AbstractGraphRepository.java @@ -17,8 +17,8 @@ package org.springframework.data.neo4j.repository; import org.apache.lucene.search.NumericRangeQuery; -import org.neo4j.cypherdsl.Execute; -import org.neo4j.cypherdsl.Skip; +import org.neo4j.cypherdsl.grammar.Execute; +import org.neo4j.cypherdsl.grammar.Skip; import org.neo4j.graphdb.NotFoundException; import org.neo4j.graphdb.PropertyContainer; import org.neo4j.graphdb.index.IndexHits; diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/CypherDslRepository.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/CypherDslRepository.java index ab0e05bc1..4f36b62b9 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/CypherDslRepository.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/CypherDslRepository.java @@ -15,7 +15,7 @@ */ package org.springframework.data.neo4j.repository; -import org.neo4j.cypherdsl.Execute; +import org.neo4j.cypherdsl.grammar.Execute; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.neo4j.conversion.EndResult; diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/mapping/EntityStateHandler.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/mapping/EntityStateHandler.java index a0ce3903b..0ced33c78 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/mapping/EntityStateHandler.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/mapping/EntityStateHandler.java @@ -90,6 +90,9 @@ public class EntityStateHandler { @SuppressWarnings("unchecked") public S getPersistentState(Object entity) { + return getPersistentState(entity,true); + } + public S getPersistentState(Object entity, boolean check) { if (entity instanceof PropertyContainer) { return (S) entity; } @@ -106,7 +109,8 @@ public class EntityStateHandler { if (persistentEntity.isRelationshipEntity()) { return (S) graphDatabase.getRelationshipById(graphId); } - throw new IllegalArgumentException("The entity " + persistentEntity.getEntityName() + " has to be either annotated with @NodeEntity or @RelationshipEntity"); + if (check) throw new IllegalArgumentException("The entity " + persistentEntity.getEntityName() + " has to be either annotated with @NodeEntity or @RelationshipEntity"); + return null; } public boolean isNodeEntity(Class targetType) { @@ -255,9 +259,9 @@ public class EntityStateHandler { public final boolean equals(Object first, Object second) { if (second == first) return true; if (second == null) return false; - final PropertyContainer firstState = getPersistentState(first); + final PropertyContainer firstState = getPersistentState(first,false); if (firstState == null) return false; - final PropertyContainer secondState = getPersistentState(second); + final PropertyContainer secondState = getPersistentState(second,false); if (secondState == null) return false; return firstState.equals(secondState); } diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/path/ConvertingEntityPath.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/path/ConvertingEntityPath.java index 6fe771d84..02cb817b2 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/path/ConvertingEntityPath.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/path/ConvertingEntityPath.java @@ -122,6 +122,16 @@ public class ConvertingEntityPath implements EntityPath { return delegate.relationships(); } + @Override + public Iterable reverseRelationships() { + return delegate.reverseRelationships(); + } + + @Override + public Iterable reverseNodes() { + return delegate.reverseNodes(); + } + @Override public Iterable nodes() { return delegate.nodes(); diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/path/NodePath.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/path/NodePath.java index fbda30c78..a06eccb9d 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/path/NodePath.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/path/NodePath.java @@ -58,11 +58,21 @@ public class NodePath implements Path { return Collections.emptyList(); } + @Override + public Iterable reverseRelationships() { + return Collections.emptyList(); + } + @Override public Iterable nodes() { return asList(node); } + @Override + public Iterable reverseNodes() { + return asList(node); + } + @Override public int length() { return 0; diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/path/RelationshipPath.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/path/RelationshipPath.java index 69ff08660..3340e9147 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/path/RelationshipPath.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/path/RelationshipPath.java @@ -57,11 +57,21 @@ public class RelationshipPath implements Path { return asList(relationship); } + @Override + public Iterable reverseRelationships() { + return relationships(); + } + @Override public Iterable nodes() { return asList(startNode(),endNode()); } + @Override + public Iterable reverseNodes() { + return asList(endNode(),startNode()); + } + @Override public int length() { return 1; diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/config/DataGraphNamespaceHandlerTest.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/config/DataGraphNamespaceHandlerTest.java index 387b1d8da..77a36c3d6 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/config/DataGraphNamespaceHandlerTest.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/config/DataGraphNamespaceHandlerTest.java @@ -22,6 +22,7 @@ import org.junit.Test; import org.neo4j.graphdb.GraphDatabaseService; import org.neo4j.kernel.AbstractGraphDatabase; import org.neo4j.kernel.EmbeddedGraphDatabase; +import org.neo4j.kernel.GraphDatabaseAPI; import org.neo4j.kernel.HighlyAvailableGraphDatabase; import org.neo4j.kernel.configuration.Config; import org.springframework.beans.factory.annotation.Autowired; @@ -82,9 +83,9 @@ public class DataGraphNamespaceHandlerTest { @Test public void injectionForExistingGraphDatabaseService() { final Config config = assertInjected("-external-embedded"); - final AbstractGraphDatabase gds = (AbstractGraphDatabase) config.graphDatabaseService; + final GraphDatabaseAPI gds = (GraphDatabaseAPI) config.graphDatabaseService; assertEquals(EmbeddedGraphDatabase.class, gds.getClass()); - final org.neo4j.kernel.configuration.Config neoConfig = gds.getConfig(); + final org.neo4j.kernel.configuration.Config neoConfig = gds.getKernelData().getConfig(); assertEquals("true", neoConfig.getParams().get("allow_store_upgrade")); } @Test @@ -92,7 +93,7 @@ public class DataGraphNamespaceHandlerTest { public void injectionForExistingHighlyAvailableGraphDatabaseService() { final Config config = assertInjected("-external-ha"); final AbstractGraphDatabase gds = (AbstractGraphDatabase) config.graphDatabaseService; - final org.neo4j.kernel.configuration.Config neoConfig = gds.getConfig(); + final org.neo4j.kernel.configuration.Config neoConfig = gds.getKernelData().getConfig(); assertEquals(HighlyAvailableGraphDatabase.class, gds.getClass()); assertEquals("1", neoConfig.getParams().get("ha.server_id")); } 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 bcffcfb23..29375ba75 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 @@ -18,6 +18,7 @@ package org.springframework.data.neo4j.model; import org.neo4j.graphdb.Direction; import org.neo4j.graphdb.DynamicRelationshipType; +import org.neo4j.graphdb.traversal.Evaluators; import org.neo4j.graphdb.traversal.TraversalDescription; import org.neo4j.kernel.Traversal; import org.neo4j.kernel.impl.traversal.TraversalDescriptionImpl; @@ -157,9 +158,8 @@ public class Group implements IGroup { @SuppressWarnings("deprecation") @Override public TraversalDescription build(Object start, Neo4jPersistentProperty property, String... params) { - return new TraversalDescriptionImpl().relationships(DynamicRelationshipType.withName(params[0])).filter( - Traversal.returnAllButStartNode()); - + //return new TraversalDescriptionImpl().relationships(DynamicRelationshipType.withName(params[0])).filter(Traversal.returnAllButStartNode()); + return new TraversalDescriptionImpl().relationships(DynamicRelationshipType.withName(params[0])).evaluator(Evaluators.excludeStartPosition()); } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/CypherDslRepositoryTest.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/CypherDslRepositoryTest.java index 117ec59c4..2bf1a67d9 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/CypherDslRepositoryTest.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/CypherDslRepositoryTest.java @@ -21,7 +21,7 @@ import org.junit.runner.RunWith; import static org.neo4j.cypherdsl.CypherQuery.*; import static org.neo4j.cypherdsl.querydsl.CypherQueryDSL.*; -import org.neo4j.cypherdsl.Execute; +import org.neo4j.cypherdsl.grammar.Execute; import org.neo4j.cypherdsl.querydsl.CypherQueryDSL; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; @@ -59,9 +59,9 @@ public class CypherDslRepositoryTest { @Autowired Neo4jOperations template; private TestTeam team; private Map peopleParams; - private Execute query = start(node("n", "people")).returns(identifier("n")); - private Execute query2 = CypherQueryDSL.start(CypherQueryDSL.node(QPerson.person, "people")). - where(QPerson.person.name.eq("Michael")). + private Execute query = start(nodeByParameter("n", "people")).returns(identifier("n")); + private Execute query2 = CypherQueryDSL.start(CypherQueryDSL.nodeByparameter(identifier(QPerson.person), "people")). + where(toBooleanExpression(QPerson.person.name.eq("Michael"))). returns(identifier(QPerson.person)); @Before diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/support/EntityNeo4jTemplateTest.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/support/EntityNeo4jTemplateTest.java index 23ff992bf..515e60378 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/support/EntityNeo4jTemplateTest.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/support/EntityNeo4jTemplateTest.java @@ -22,6 +22,7 @@ import org.junit.runner.RunWith; import org.mockito.Mockito; import org.neo4j.graphdb.*; import org.neo4j.graphdb.index.Index; +import org.neo4j.graphdb.traversal.Evaluators; import org.neo4j.graphdb.traversal.TraversalDescription; import org.neo4j.helpers.collection.IteratorUtil; import org.neo4j.helpers.collection.MapUtil; @@ -361,7 +362,8 @@ public class EntityNeo4jTemplateTest extends EntityTestBase { @Test @Transactional public void testTraverse() throws Exception { - final TraversalDescription traversalDescription = neo4jOperations.traversalDescription().relationships(DynamicRelationshipType.withName("knows"), Direction.OUTGOING).filter(Traversal.returnAllButStartNode()); +// final TraversalDescription traversalDescription = neo4jOperations.traversalDescription().relationships(DynamicRelationshipType.withName("knows"), Direction.OUTGOING).filter(Traversal.returnAllButStartNode()); + final TraversalDescription traversalDescription = neo4jOperations.traversalDescription().relationships(DynamicRelationshipType.withName("knows"), Direction.OUTGOING).evaluator(Evaluators.excludeStartPosition()); final Person knows = neo4jOperations.traverse(testTeam.michael, traversalDescription).to(Person.class).single(); assertEquals(testTeam.david.getName(), knows.getName()); } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/template/FullNeo4jTemplateTest.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/template/FullNeo4jTemplateTest.java index 700b80e75..f3d5cf19e 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/template/FullNeo4jTemplateTest.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/template/FullNeo4jTemplateTest.java @@ -25,6 +25,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.neo4j.graphdb.*; import org.neo4j.graphdb.index.Index; +import org.neo4j.graphdb.traversal.Evaluators; import org.neo4j.graphdb.traversal.TraversalDescription; import org.neo4j.kernel.Traversal; import org.springframework.beans.factory.annotation.Autowired; @@ -280,7 +281,8 @@ public class FullNeo4jTemplateTest { @SuppressWarnings("deprecation") @Test public void testTraverse() throws Exception { - final TraversalDescription description = Traversal.description().relationships(KNOWS).prune(Traversal.pruneAfterDepth(1)).filter(Traversal.returnAllButStartNode()); + //final TraversalDescription description = Traversal.description().relationships(KNOWS).prune(Traversal.pruneAfterDepth(1)).filter(Traversal.returnAllButStartNode()); + final TraversalDescription description = Traversal.description().relationships(KNOWS).evaluator(Evaluators.toDepth(1)).evaluator(Evaluators.excludeStartPosition()); assertSingleResult("node1", neo4jTemplate.traverse(referenceNode, description).to(String.class, new PathNodeNameMapper())); } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/template/Neo4jTemplateApiTest.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/template/Neo4jTemplateApiTest.java index 4a49c723a..d99e332da 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/template/Neo4jTemplateApiTest.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/template/Neo4jTemplateApiTest.java @@ -20,6 +20,7 @@ import org.apache.lucene.index.Term; import org.apache.lucene.search.TermQuery; import org.junit.*; import org.neo4j.graphdb.*; +import org.neo4j.graphdb.traversal.Evaluators; import org.neo4j.kernel.GraphDatabaseAPI; import org.neo4j.graphdb.index.Index; import org.neo4j.graphdb.traversal.TraversalDescription; @@ -300,7 +301,8 @@ public class Neo4jTemplateApiTest { @SuppressWarnings("deprecation") @Test public void testTraverse() throws Exception { - final TraversalDescription description = Traversal.description().relationships(KNOWS).prune(Traversal.pruneAfterDepth(1)).filter(Traversal.returnAllButStartNode()); + //final TraversalDescription description = Traversal.description().relationships(KNOWS).prune(Traversal.pruneAfterDepth(1)).filter(Traversal.returnAllButStartNode()); + final TraversalDescription description = Traversal.description().relationships(KNOWS).evaluator(Evaluators.toDepth(1)).evaluator(Evaluators.excludeStartPosition()); assertSingleResult("node1",template.traverse(referenceNode, description).to(String.class,new PathNodeNameMapper())); } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/template/NeoTraversalTest.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/template/NeoTraversalTest.java index 777bc2d3f..78dddafc6 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/template/NeoTraversalTest.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/template/NeoTraversalTest.java @@ -20,6 +20,7 @@ import org.junit.Test; import org.neo4j.graphdb.Node; import org.neo4j.graphdb.Path; import org.neo4j.graphdb.RelationshipType; +import org.neo4j.graphdb.traversal.Evaluators; import org.neo4j.graphdb.traversal.TraversalDescription; import org.neo4j.kernel.Traversal; import org.springframework.data.neo4j.conversion.Handler; @@ -32,7 +33,7 @@ import java.util.Set; import static java.util.Arrays.asList; import static org.junit.Assert.assertEquals; import static org.neo4j.helpers.collection.MapUtil.map; -import static org.neo4j.kernel.Traversal.returnAllButStartNode; +// TODO import static org.neo4j.kernel.Traversal.returnAllButStartNode; import static org.springframework.data.neo4j.template.NeoTraversalTest.Type.HAS; public class NeoTraversalTest extends NeoApiTest { @@ -51,7 +52,9 @@ public class NeoTraversalTest extends NeoApiTest { }); final Set resultSet = new HashSet(); - @SuppressWarnings("deprecation") final TraversalDescription description = Traversal.description().relationships(HAS).filter(returnAllButStartNode()).prune(Traversal.pruneAfterDepth(2)); +// @SuppressWarnings("deprecation") final TraversalDescription description = Traversal.description().relationships(HAS).filter(returnAllButStartNode()).prune(Traversal.pruneAfterDepth(2)); + final TraversalDescription description = Traversal.description().relationships(HAS).evaluator(Evaluators.excludeStartPosition()).evaluator(Evaluators.toDepth(2)); + final Result result = template.traverse(template.getReferenceNode(), description); result.handle(new Handler() { @Override diff --git a/src/docbkx/reference/cross-store.xml b/src/docbkx/reference/cross-store.xml index b94389069..f75133acc 100644 --- a/src/docbkx/reference/cross-store.xml +++ b/src/docbkx/reference/cross-store.xml @@ -134,11 +134,11 @@ public class UserAccount { xmlns:datagraph="http://www.springframework.org/schema/data/neo4j" xsi:schemaLocation=" http://www.springframework.org/schema/beans - http://www.springframework.org/schema/beans/spring-beans-3.0.xsd + http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context - http://www.springframework.org/schema/context/spring-context-3.0.xsd + http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/data/neo4j - http://www.springframework.org/schema/data/neo4j/spring-neo4j-2.0.xsd + http://www.springframework.org/schema/data/neo4j/spring-neo4j.xsd "> diff --git a/src/docbkx/reference/neo4j-server.xml b/src/docbkx/reference/neo4j-server.xml index e2a1047e1..0e79693c7 100644 --- a/src/docbkx/reference/neo4j-server.xml +++ b/src/docbkx/reference/neo4j-server.xml @@ -106,7 +106,7 @@ public void foo( @Context WorldRepository repo ) { org.springframework.data spring-data-neo4j-rest - 2.1.0.RC1 + 2.1.0.RC3 ]]> diff --git a/src/docbkx/reference/setup.xml b/src/docbkx/reference/setup.xml index 1a8cc056f..2236e4ff5 100644 --- a/src/docbkx/reference/setup.xml +++ b/src/docbkx/reference/setup.xml @@ -17,15 +17,15 @@
Dependencies for Spring Data Neo4j Simple Mapping - For the simple POJO mapping it is enough to add the org.springframework.data:spring-data-neo4j:2.1.0.RC1 dependency - to your project. If you want to use the Cypher query language please add org.neo4j:neo4j-cypher:1.7 + For the simple POJO mapping it is enough to add the org.springframework.data:spring-data-neo4j:2.1.0.RC3 dependency + to your project. Maven dependencies for Spring Data Neo4j org.springframework.data spring-data-neo4j -2.1.0.RC1 +2.1.0.RC3 ]]> @@ -43,8 +43,8 @@ @@ -128,7 +128,7 @@ repositories { org.springframework.data spring-data-neo4j-aspects - 2.1.0.RC1 + 2.1.0.RC3 @@ -136,11 +136,6 @@ repositories { aspectjrt 1.6.12 -[ - org.neo4j - neo4j-cypher - 1.7 -] ]]>
@@ -226,11 +221,11 @@ repositories { xmlns:neo4j="http://www.springframework.org/schema/data/neo4j" xsi:schemaLocation=" http://www.springframework.org/schema/beans - http://www.springframework.org/schema/beans/spring-beans-3.0.xsd + http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context - http://www.springframework.org/schema/context/spring-context-3.0.xsd + http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/data/neo4j - http://www.springframework.org/schema/data/neo4j/spring-neo4j-2.0.xsd"> + http://www.springframework.org/schema/data/neo4j/spring-neo4j.xsd"> diff --git a/src/docbkx/tutorial/neo4j-server.xml b/src/docbkx/tutorial/neo4j-server.xml index 6ba578648..66b4c8282 100644 --- a/src/docbkx/tutorial/neo4j-server.xml +++ b/src/docbkx/tutorial/neo4j-server.xml @@ -48,7 +48,7 @@ org.springframework.data spring-data-neo4j-rest - 2.1.0.RC1 + 2.1.0.RC3 ]]> diff --git a/src/docbkx/tutorial/neo4j.xml b/src/docbkx/tutorial/neo4j.xml index 2ca12800a..9755b0e36 100644 --- a/src/docbkx/tutorial/neo4j.xml +++ b/src/docbkx/tutorial/neo4j.xml @@ -40,7 +40,7 @@ org.neo4j neo4j - 1.7 + 1.8.M06
]]> diff --git a/src/docbkx/tutorial/spring-data-neo4j-aj.xml b/src/docbkx/tutorial/spring-data-neo4j-aj.xml index 383faebdc..ed838e215 100644 --- a/src/docbkx/tutorial/spring-data-neo4j-aj.xml +++ b/src/docbkx/tutorial/spring-data-neo4j-aj.xml @@ -26,7 +26,7 @@ org.springframework.data spring-data-neo4j-aspects - 2.1.0.RC1 + 2.1.0.RC3 @@ -87,7 +87,7 @@ + http://www.springframework.org/schema/data/neo4j/spring-neo4j.xsd"> ... ... diff --git a/src/docbkx/tutorial/spring-data-neo4j.xml b/src/docbkx/tutorial/spring-data-neo4j.xml index 4a2bbce8f..17b467d47 100644 --- a/src/docbkx/tutorial/spring-data-neo4j.xml +++ b/src/docbkx/tutorial/spring-data-neo4j.xml @@ -21,7 +21,7 @@ org.springframework.data spring-data-neo4j - 2.1.0.RC1 + 2.1.0.RC3 ]]> @@ -34,7 +34,7 @@ + http://www.springframework.org/schema/data/neo4j/spring-neo4j.xsd"> ... ...