From 47ec83c707b21196339a8e950d30f37fb123ea7d Mon Sep 17 00:00:00 2001 From: Michael Hunger Date: Fri, 25 Oct 2013 09:17:41 +0200 Subject: [PATCH] DATAGRAPH-384 Upgrade to Neo4j 2.0.0-M06 - fixing tests --- pom.xml | 8 ++++---- spring-data-neo4j-rest/pom.xml | 2 +- .../data/neo4j/rest/SpringRestGraphDatabase.java | 6 +----- .../neo4j/repository/query/QueryTemplates.java | 6 +++--- .../LabelBasedStrategyCypherHelper.java | 12 ++++++------ .../data/neo4j/repository/DerivedFinderTests.java | 1 - ...ypherQueryBuilderForIndexBasedTRSUnitTests.java | 12 ++++++------ ...ypherQueryBuilderForLabelBasedTRSUnitTests.java | 14 +++++++------- ...DerivedFinderMethodForIndexedBasedTRSTests.java | 2 +- .../DerivedFinderMethodForLabelBasedTRSTests.java | 4 ++-- 10 files changed, 31 insertions(+), 36 deletions(-) diff --git a/pom.xml b/pom.xml index 92002f0b6..73810e139 100644 --- a/pom.xml +++ b/pom.xml @@ -38,14 +38,14 @@ 1.7 1.7 - 2.0.0-M05 + 2.0.0-M06 - 0.12-neo4j-2.0.0-SNAPSHOT - 0.7-neo4j-2.0.0-SNAPSHOT + 0.12-neo4j-2.0.0-M06 + 0.7.1-neo4j-2.0.0-M06 1.2 1.5 1.5 - 1.9 + 2.0.0-M06 diff --git a/spring-data-neo4j-rest/pom.xml b/spring-data-neo4j-rest/pom.xml index f779c9b9e..62985989b 100644 --- a/spring-data-neo4j-rest/pom.xml +++ b/spring-data-neo4j-rest/pom.xml @@ -19,7 +19,7 @@ 1.0.0.GA 1.9 - 2.0-SNAPSHOT + 2.0.0-M06 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 3f419425d..32a83e15a 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 @@ -27,6 +27,7 @@ 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.neo4j.rest.graphdb.traversal.RestTraversalDescription; import org.neo4j.rest.graphdb.util.Config; import org.springframework.core.convert.ConversionService; import org.springframework.data.neo4j.annotation.QueryType; @@ -108,11 +109,6 @@ public class SpringRestGraphDatabase extends org.neo4j.rest.graphdb.RestGraphDat return super.getRestAPI().createIndex(type, indexName, indexType.getConfig()); } - @Override - public TraversalDescription traversalDescription() { - return super.getRestAPI().createTraversalDescription(); - } - @SuppressWarnings("unchecked") @Override public QueryEngine queryEngineFor(QueryType type, final ResultConverter resultConverter) { diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/QueryTemplates.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/QueryTemplates.java index d4f3e09c5..aa0b0e4bc 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/QueryTemplates.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/repository/query/QueryTemplates.java @@ -42,11 +42,11 @@ public abstract class QueryTemplates { private static final String DIRECTION_INCOMING = "<-[:`%s`]-"; private static final String DIRECTION_OUTGOING = "-[:`%s`]->"; private static final String DIRECTION_BOTH = "-[:`%s`]-"; - static final String MATCH_CLAUSE = "`%s`%s`%s`"; - static final String MATCH_CLAUSE2 = "%s%s`%s`"; + static final String MATCH_CLAUSE = "(`%s`)%s(`%s`)"; + static final String MATCH_CLAUSE2 = "%s%s(`%s`)"; static final String DEFAULT_INDEXBASED_START_CLAUSE = "`%s`=node:__types__(className=\"%s\")"; - static final String DEFAULT_LABELBASED_MATCH_START_CLAUSE = "`%s`:`%s`"; + static final String DEFAULT_LABELBASED_MATCH_START_CLAUSE = "(`%s`:`%s`)"; public static final String START_NODE_LOOKUP = "`%s`=node({%d})"; static final String SKIP_LIMIT = " SKIP %d LIMIT %d"; diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/typerepresentation/LabelBasedStrategyCypherHelper.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/typerepresentation/LabelBasedStrategyCypherHelper.java index 5535ee511..d9dde4c7c 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/typerepresentation/LabelBasedStrategyCypherHelper.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/typerepresentation/LabelBasedStrategyCypherHelper.java @@ -21,12 +21,12 @@ import java.util.Map; */ public class LabelBasedStrategyCypherHelper { - static final String CYPHER_ADD_LABEL_TO_NODE = "match n where id(n)={nodeId} set n:`%s`"; - static final String CYPHER_ADD_LABELS_TO_NODE = "match n where id(n)={nodeId} set n%s"; - static final String CYPHER_COUNT_LABELS_ON_NODE = "match n where id(n)={nodeId} and n:`%s` return count(*) "; - static final String CYPHER_RETURN_NODES_WITH_LABEL = "match n:`%s` return n"; - static final String CYPHER_RETURN_COUNT_OF_NODES_WITH_LABEL = "match n:`%s` return count(*)"; - static final String CYPHER_RETURN_LABELS_FOR_NODE = "match n where id(n)={nodeId} return labels(n) as labels"; + static final String CYPHER_ADD_LABEL_TO_NODE = "match (n) where id(n)={nodeId} set n:`%s`"; + static final String CYPHER_ADD_LABELS_TO_NODE = "match (n) where id(n)={nodeId} set n%s"; + static final String CYPHER_COUNT_LABELS_ON_NODE = "match (n) where id(n)={nodeId} and n:`%s` return count(*) "; + static final String CYPHER_RETURN_NODES_WITH_LABEL = "match (n:`%s`) return n"; + static final String CYPHER_RETURN_COUNT_OF_NODES_WITH_LABEL = "match (n:`%s`) return count(*)"; + static final String CYPHER_RETURN_LABELS_FOR_NODE = "match (n) where id(n)={nodeId} return labels(n) as labels"; private QueryEngine queryEngine; diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/DerivedFinderTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/DerivedFinderTests.java index 98061b054..74c636204 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/DerivedFinderTests.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/DerivedFinderTests.java @@ -283,7 +283,6 @@ public class DerivedFinderTests { assertThat(single(recipes).id, is(equalTo(focaccia.id))); } - @Ignore @Test public void shouldFindUsingMultipleEntities() throws Exception { Set recipes = recipeRepository.findByIngredientAndCookBook(pear, baking101); diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/query/CypherQueryBuilderForIndexBasedTRSUnitTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/query/CypherQueryBuilderForIndexBasedTRSUnitTests.java index 636199c6b..746668a0f 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/query/CypherQueryBuilderForIndexBasedTRSUnitTests.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/query/CypherQueryBuilderForIndexBasedTRSUnitTests.java @@ -74,14 +74,14 @@ public class CypherQueryBuilderForIndexBasedTRSUnitTests extends AbstractCypherQ @Override @Test public void createsQueryForPropertyOnRelationShipReference() { - this.trsSpecificExpectedQuery = "START `person_group`=node:`Group`(`name`={0}) MATCH `person`<-[:`members`]-`person_group` RETURN `person`"; + this.trsSpecificExpectedQuery = "START `person_group`=node:`Group`(`name`={0}) MATCH (`person`)<-[:`members`]-(`person_group`) RETURN `person`"; super.createsQueryForPropertyOnRelationShipReference(); } @Override @Test public void createsQueryForMultipleStartClauses() { - this.trsSpecificExpectedQuery = "START `person`=node:`Person`(`name`={0}), `person_group`=node:`Group`(`name`={1}) MATCH `person`<-[:`members`]-`person_group` RETURN `person`"; + this.trsSpecificExpectedQuery = "START `person`=node:`Person`(`name`={0}), `person_group`=node:`Group`(`name`={1}) MATCH (`person`)<-[:`members`]-(`person_group`) RETURN `person`"; super.createsQueryForMultipleStartClauses(); } @@ -95,7 +95,7 @@ public class CypherQueryBuilderForIndexBasedTRSUnitTests extends AbstractCypherQ @Override @Test public void createsSimpleTraversalClauseCorrectly() { - this.trsSpecificExpectedQuery = "START `person_group`=node({0}) MATCH `person`<-[:`members`]-`person_group` WHERE `person`.__type__ IN ['Person'] RETURN `person`"; + this.trsSpecificExpectedQuery = "START `person_group`=node({0}) MATCH (`person`)<-[:`members`]-(`person_group`) WHERE `person`.__type__ IN ['Person'] RETURN `person`"; super.createsSimpleTraversalClauseCorrectly(); } @@ -104,7 +104,7 @@ public class CypherQueryBuilderForIndexBasedTRSUnitTests extends AbstractCypherQ public void buildsComplexQueryCorrectly() { this.trsSpecificExpectedQuery = "START `person`=node:`Person`(`name`={0}), `person_group`=node:`Group`(`name`={1}) " + - "MATCH `person`<-[:`members`]-`person_group`, `person`<-[:`members`]-`person_group`-[:`members`]->`person_group_members` " + + "MATCH (`person`)<-[:`members`]-(`person_group`), (`person`)<-[:`members`]-(`person_group`)-[:`members`]->(`person_group_members`) " + "WHERE `person`.`age` > {2} AND `person_group_members`.`age` = {3} " + "RETURN `person`"; super.buildsComplexQueryCorrectly(); @@ -114,14 +114,14 @@ public class CypherQueryBuilderForIndexBasedTRSUnitTests extends AbstractCypherQ @Override @Test public void shouldFindByNodeEntity() throws Exception { - this.trsSpecificExpectedQuery = "START `person_pet`=node({0}) MATCH `person`-[:`owns`]->`person_pet` WHERE `person`.__type__ IN ['Person'] RETURN `person`"; + this.trsSpecificExpectedQuery = "START `person_pet`=node({0}) MATCH (`person`)-[:`owns`]->(`person_pet`) WHERE `person`.__type__ IN ['Person'] RETURN `person`"; super.shouldFindByNodeEntity(); } @Override @Test public void shouldFindByNodeEntityForIncomingRelationship() { - this.trsSpecificExpectedQuery = "START `person_group`=node({0}) MATCH `person`<-[:`members`]-`person_group` WHERE `person`.__type__ IN ['Person'] RETURN `person`"; + this.trsSpecificExpectedQuery = "START `person_group`=node({0}) MATCH (`person`)<-[:`members`]-(`person_group`) WHERE `person`.__type__ IN ['Person'] RETURN `person`"; super.shouldFindByNodeEntityForIncomingRelationship(); } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/query/CypherQueryBuilderForLabelBasedTRSUnitTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/query/CypherQueryBuilderForLabelBasedTRSUnitTests.java index cfbec05c6..54741d41f 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/query/CypherQueryBuilderForLabelBasedTRSUnitTests.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/query/CypherQueryBuilderForLabelBasedTRSUnitTests.java @@ -32,7 +32,7 @@ import static org.junit.Assert.assertThat; */ public class CypherQueryBuilderForLabelBasedTRSUnitTests extends AbstractCypherQueryBuilderTestBase { - private final static String DEFAULT_MATCH_STARTING_CLAUSE = " MATCH `person`:`" + CLASS_NAME + "`"; + private final static String DEFAULT_MATCH_STARTING_CLAUSE = " MATCH (`person`:`" + CLASS_NAME + "`)"; @Before public void setUp() { @@ -74,7 +74,7 @@ public class CypherQueryBuilderForLabelBasedTRSUnitTests extends AbstractCypherQ @Override @Test public void createsQueryForPropertyOnRelationShipReference() { - this.trsSpecificExpectedQuery = "START `person_group`=node:`Group`(`name`={0}) MATCH `person`<-[:`members`]-`person_group` RETURN `person`"; + this.trsSpecificExpectedQuery = "START `person_group`=node:`Group`(`name`={0}) MATCH (`person`)<-[:`members`]-(`person_group`) RETURN `person`"; super.createsQueryForPropertyOnRelationShipReference(); } @@ -86,7 +86,7 @@ public class CypherQueryBuilderForLabelBasedTRSUnitTests extends AbstractCypherQ "`name`={0}), " + "`person_group`=node:" + "`Group`(`name`={1}) " + - "MATCH `person`<-[:`members`]-`person_group` " + + "MATCH (`person`)<-[:`members`]-(`person_group`) " + "RETURN `person`"; super.createsQueryForMultipleStartClauses(); } @@ -101,7 +101,7 @@ public class CypherQueryBuilderForLabelBasedTRSUnitTests extends AbstractCypherQ @Override @Test public void createsSimpleTraversalClauseCorrectly() { - this.trsSpecificExpectedQuery = "START `person_group`=node({0}) MATCH `person`<-[:`members`]-`person_group` WHERE `person`:`Person` RETURN `person`"; + this.trsSpecificExpectedQuery = "START `person_group`=node({0}) MATCH (`person`)<-[:`members`]-(`person_group`) WHERE `person`:`Person` RETURN `person`"; super.createsSimpleTraversalClauseCorrectly(); } @@ -110,7 +110,7 @@ public class CypherQueryBuilderForLabelBasedTRSUnitTests extends AbstractCypherQ public void buildsComplexQueryCorrectly() { this.trsSpecificExpectedQuery = "START `person`=node:`Person`(`name`={0}), `person_group`=node:`Group`(`name`={1}) " + - "MATCH `person`<-[:`members`]-`person_group`, `person`<-[:`members`]-`person_group`-[:`members`]->`person_group_members` " + + "MATCH (`person`)<-[:`members`]-(`person_group`), (`person`)<-[:`members`]-(`person_group`)-[:`members`]->(`person_group_members`) " + "WHERE `person`.`age` > {2} AND `person_group_members`.`age` = {3} " + "RETURN `person`"; super.buildsComplexQueryCorrectly(); @@ -120,14 +120,14 @@ public class CypherQueryBuilderForLabelBasedTRSUnitTests extends AbstractCypherQ @Override @Test public void shouldFindByNodeEntity() throws Exception { - this.trsSpecificExpectedQuery = "START `person_pet`=node({0}) MATCH `person`-[:`owns`]->`person_pet` WHERE `person`:`Person` RETURN `person`"; + this.trsSpecificExpectedQuery = "START `person_pet`=node({0}) MATCH (`person`)-[:`owns`]->(`person_pet`) WHERE `person`:`Person` RETURN `person`"; super.shouldFindByNodeEntity(); } @Override @Test public void shouldFindByNodeEntityForIncomingRelationship() { - this.trsSpecificExpectedQuery = "START `person_group`=node({0}) MATCH `person`<-[:`members`]-`person_group` WHERE `person`:`Person` RETURN `person`"; + this.trsSpecificExpectedQuery = "START `person_group`=node({0}) MATCH (`person`)<-[:`members`]-(`person_group`) WHERE `person`:`Person` RETURN `person`"; super.shouldFindByNodeEntityForIncomingRelationship(); } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/query/DerivedFinderMethodForIndexedBasedTRSTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/query/DerivedFinderMethodForIndexedBasedTRSTests.java index a45046f9b..c3b1786ca 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/query/DerivedFinderMethodForIndexedBasedTRSTests.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/query/DerivedFinderMethodForIndexedBasedTRSTests.java @@ -66,7 +66,7 @@ public class DerivedFinderMethodForIndexedBasedTRSTests extends AbstractDerivedF // findByOwnerId this.trsSpecificExpectedQuery = "START `thing_owner`=node({0}) " + - "MATCH `thing`-[:`owner`]->`thing_owner` " + + "MATCH (`thing`)-[:`owner`]->(`thing_owner`) " + "WHERE `thing`.__type__ IN ['org.springframework.data.neo4j.repository.query.AbstractDerivedFinderMethodTestBase$Thing'] "; super.testQueryWithEntityGraphId(); } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/query/DerivedFinderMethodForLabelBasedTRSTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/query/DerivedFinderMethodForLabelBasedTRSTests.java index beed28399..1a05bbe8d 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/query/DerivedFinderMethodForLabelBasedTRSTests.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/repository/query/DerivedFinderMethodForLabelBasedTRSTests.java @@ -44,7 +44,7 @@ import static org.hamcrest.Matchers.instanceOf; @TestExecutionListeners({CleanContextCacheTestExecutionListener.class, DependencyInjectionTestExecutionListener.class, TransactionalTestExecutionListener.class}) public class DerivedFinderMethodForLabelBasedTRSTests extends AbstractDerivedFinderMethodTestBase { - private static final String DEFAULT_MATCH_CLAUSE = "MATCH `thing`:`org.springframework.data.neo4j.repository.query.AbstractDerivedFinderMethodTestBase$Thing`"; + private static final String DEFAULT_MATCH_CLAUSE = "MATCH (`thing`:`org.springframework.data.neo4j.repository.query.AbstractDerivedFinderMethodTestBase$Thing`)"; @Autowired NodeTypeRepresentationStrategy strategy; @@ -61,7 +61,7 @@ public class DerivedFinderMethodForLabelBasedTRSTests extends AbstractDerivedFin @Override public void testQueryWithEntityGraphId() throws Exception { // findByOwnerId - this.trsSpecificExpectedQuery = "START `thing_owner`=node({0}) MATCH `thing`-[:`owner`]->`thing_owner` WHERE `thing`:`org.springframework.data.neo4j.repository.query.AbstractDerivedFinderMethodTestBase$Thing` "; + this.trsSpecificExpectedQuery = "START `thing_owner`=node({0}) MATCH (`thing`)-[:`owner`]->(`thing_owner`) WHERE `thing`:`org.springframework.data.neo4j.repository.query.AbstractDerivedFinderMethodTestBase$Thing` "; super.testQueryWithEntityGraphId(); }