From 4bab5cc98489c600161d7066350cca0a84092a78 Mon Sep 17 00:00:00 2001 From: Werner Nickl Date: Thu, 22 Dec 2011 17:29:23 +0100 Subject: [PATCH 1/9] added a abstract class for the IndexingTypeRepresentationTypes --- ...actIndexingTypeRepresentationStrategy.java | 115 ++++++++++++++++++ ...ndexingNodeTypeRepresentationStrategy.java | 70 +---------- ...elationshipTypeRepresentationStrategy.java | 80 +----------- 3 files changed, 124 insertions(+), 141 deletions(-) create mode 100644 spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/typerepresentation/AbstractIndexingTypeRepresentationStrategy.java diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/typerepresentation/AbstractIndexingTypeRepresentationStrategy.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/typerepresentation/AbstractIndexingTypeRepresentationStrategy.java new file mode 100644 index 000000000..904fe0150 --- /dev/null +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/typerepresentation/AbstractIndexingTypeRepresentationStrategy.java @@ -0,0 +1,115 @@ +/** + * Copyright 2011 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.data.neo4j.support.typerepresentation; + +import java.lang.annotation.Annotation; + +import org.neo4j.graphdb.PropertyContainer; +import org.neo4j.graphdb.index.Index; +import org.neo4j.graphdb.index.IndexHits; +import org.neo4j.helpers.collection.ClosableIterable; +import org.springframework.data.neo4j.core.GraphDatabase; +import org.springframework.data.neo4j.core.TypeRepresentationStrategy; +import org.springframework.data.neo4j.support.index.ClosableIndexHits; +import org.springframework.data.neo4j.support.index.IndexProvider; +import org.springframework.data.neo4j.support.index.IndexType; + +public abstract class AbstractIndexingTypeRepresentationStrategy implements + TypeRepresentationStrategy { + + public static final String TYPE_PROPERTY_NAME = "__type__"; + public static final String INDEX_KEY = "className"; + protected String INDEX_NAME; + protected final GraphDatabase graphDb; + protected final EntityTypeCache typeCache; + protected final IndexProvider indexProvider; + private final Class clazz; + private final Class typeEntityClass; + + public AbstractIndexingTypeRepresentationStrategy(GraphDatabase graphDb, IndexProvider indexProvider, + final String indexName, final Class clazz, + final Class typeEntityClass) { + this.graphDb = graphDb; + this.indexProvider = indexProvider; + typeCache = new EntityTypeCache(); + INDEX_NAME = indexName; + this.clazz = clazz; + this.typeEntityClass = typeEntityClass; + } + + @SuppressWarnings("unchecked") + public Index getTypesIndex() { + return (Index) graphDb.createIndex(clazz, INDEX_NAME, IndexType.SIMPLE); + } + + @Override + public void postEntityCreation(S state, Class type) { + addToTypesIndex(state, type); + state.setProperty(TYPE_PROPERTY_NAME, type.getName()); + } + + @Override + public long count(Class entityClass) { + long count = 0; + final IndexHits hits = getTypesIndex().get(INDEX_KEY, entityClass.getName()); + while (hits.hasNext()) { + hits.next(); + count++; + } + return count; + } + + @Override + public void preEntityRemoval(S state) { + getTypesIndex().remove(state); + } + + @Override + public ClosableIterable findAll(Class clazz) { + return findAllRelBacked(clazz); + } + + @Override + public Class getJavaType(S propertyContainer) { + if (propertyContainer == null) + throw new IllegalArgumentException("Relationship or Node is null"); + String className = (String) propertyContainer.getProperty(TYPE_PROPERTY_NAME); + return typeCache.getClassForName(className); + } + + protected void addToTypesIndex(S relationshipOrNode, Class entityClass) { + Class type = entityClass; + while (type.getAnnotation(typeEntityClass) != null) { + String value = entityClass.getName(); + if (indexProvider != null) + value = indexProvider.createIndexValueForType(entityClass); + + getTypesIndex().add(relationshipOrNode, INDEX_KEY, value); + type = type.getSuperclass(); + } + } + + @SuppressWarnings("hiding") + private ClosableIterable findAllRelBacked(Class clazz) { + String value = clazz.getName(); + if (indexProvider != null) + value = indexProvider.createIndexValueForType(clazz); + + final IndexHits allEntitiesOfType = getTypesIndex().get(INDEX_KEY, value); + return new ClosableIndexHits(allEntitiesOfType); + } + +} diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/typerepresentation/IndexingNodeTypeRepresentationStrategy.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/typerepresentation/IndexingNodeTypeRepresentationStrategy.java index 5b52d36a4..207860b38 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/typerepresentation/IndexingNodeTypeRepresentationStrategy.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/typerepresentation/IndexingNodeTypeRepresentationStrategy.java @@ -17,89 +17,31 @@ package org.springframework.data.neo4j.support.typerepresentation; import org.neo4j.graphdb.Node; -import org.neo4j.graphdb.index.Index; -import org.neo4j.graphdb.index.IndexHits; -import org.neo4j.helpers.collection.ClosableIterable; import org.springframework.data.neo4j.annotation.NodeEntity; import org.springframework.data.neo4j.core.GraphDatabase; import org.springframework.data.neo4j.core.NodeTypeRepresentationStrategy; -import org.springframework.data.neo4j.support.index.ClosableIndexHits; import org.springframework.data.neo4j.support.index.IndexProvider; -import org.springframework.data.neo4j.support.index.IndexType; -public class IndexingNodeTypeRepresentationStrategy implements NodeTypeRepresentationStrategy { +public class IndexingNodeTypeRepresentationStrategy extends AbstractIndexingTypeRepresentationStrategy implements + NodeTypeRepresentationStrategy { public static final String INDEX_NAME = "__types__"; - public static final String TYPE_PROPERTY_NAME = "__type__"; - public static final String INDEX_KEY = "className"; - private final GraphDatabase graphDb; - private final EntityTypeCache typeCache; - - private final IndexProvider indexProvider; public IndexingNodeTypeRepresentationStrategy(GraphDatabase graphDb, IndexProvider indexProvider) { - this.graphDb = graphDb; - this.indexProvider = indexProvider; - typeCache = new EntityTypeCache(); - } - - private Index getNodeTypesIndex() { - return graphDb.createIndex(Node.class, INDEX_NAME, IndexType.SIMPLE); + super(graphDb, indexProvider, INDEX_NAME, Node.class, NodeEntity.class); } @Override - public void postEntityCreation(Node state, Class type) { - addToNodeTypesIndex(state, type); - state.setProperty(TYPE_PROPERTY_NAME, type.getName()); - } - - private void addToNodeTypesIndex(Node node, Class entityClass) { + protected void addToTypesIndex(Node node, Class entityClass) { Class klass = entityClass; - while (klass.getAnnotation(NodeEntity.class) != null) { String value = klass.getName(); if (indexProvider != null) value = indexProvider.createIndexValueForType(klass); - getNodeTypesIndex().add(node, INDEX_KEY, value); + getTypesIndex().add(node, INDEX_KEY, value); klass = klass.getSuperclass(); } } - @Override - public ClosableIterable findAll(Class clazz) { - return findAllNodeBacked(clazz); - } - - private ClosableIterable findAllNodeBacked(Class clazz) { - String value = clazz.getName(); - if (indexProvider != null) - value = indexProvider.createIndexValueForType(clazz); - - final IndexHits allEntitiesOfType = getNodeTypesIndex().get(INDEX_KEY, value); - return new ClosableIndexHits(allEntitiesOfType); - } - - @Override - public long count(Class entityClass) { - long count = 0; - for (Object o : getNodeTypesIndex().get(INDEX_KEY, entityClass.getName())) { - count += 1; - } - return count; - } - - @SuppressWarnings("unchecked") - @Override - public Class getJavaType(Node node) { - if (node == null) throw new IllegalArgumentException("Node is null"); - String className = (String) node.getProperty(TYPE_PROPERTY_NAME); - return typeCache.getClassForName(className); - } - - @Override - public void preEntityRemoval(Node state) { - getNodeTypesIndex().remove(state); - } - -} +} \ No newline at end of file diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/typerepresentation/IndexingRelationshipTypeRepresentationStrategy.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/typerepresentation/IndexingRelationshipTypeRepresentationStrategy.java index 179a99f44..c5e5dd519 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/typerepresentation/IndexingRelationshipTypeRepresentationStrategy.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/typerepresentation/IndexingRelationshipTypeRepresentationStrategy.java @@ -17,92 +17,18 @@ package org.springframework.data.neo4j.support.typerepresentation; import org.neo4j.graphdb.Relationship; -import org.neo4j.graphdb.index.Index; -import org.neo4j.graphdb.index.IndexHits; -import org.neo4j.helpers.collection.ClosableIterable; import org.springframework.data.neo4j.annotation.RelationshipEntity; import org.springframework.data.neo4j.core.GraphDatabase; import org.springframework.data.neo4j.core.RelationshipTypeRepresentationStrategy; -import org.springframework.data.neo4j.support.index.ClosableIndexHits; import org.springframework.data.neo4j.support.index.IndexProvider; -import org.springframework.data.neo4j.support.index.IndexType; -public class IndexingRelationshipTypeRepresentationStrategy implements RelationshipTypeRepresentationStrategy { +public class IndexingRelationshipTypeRepresentationStrategy extends + AbstractIndexingTypeRepresentationStrategy implements RelationshipTypeRepresentationStrategy { public static final String INDEX_NAME = "__rel_types__"; - public static final String TYPE_PROPERTY_NAME = "__type__"; - public static final String INDEX_KEY = "className"; - private final GraphDatabase graphDb; - private final EntityTypeCache typeCache; - - private final IndexProvider indexProvider; public IndexingRelationshipTypeRepresentationStrategy(GraphDatabase graphDb, IndexProvider indexProvider) { - this.graphDb = graphDb; - this.indexProvider = indexProvider; - typeCache = new EntityTypeCache(); - } - - private Index getRelTypesIndex() { - return graphDb.createIndex(Relationship.class,INDEX_NAME, IndexType.SIMPLE); - } - - @Override - public void postEntityCreation(Relationship state, Class type) { - addToTypesIndex(state, type); - state.setProperty(TYPE_PROPERTY_NAME, type.getName()); - } - - private void addToTypesIndex(Relationship node, Class entityClass) { - Class type = entityClass; - while (type.getAnnotation(RelationshipEntity.class) != null) { - String value = entityClass.getName(); - if (indexProvider != null) - value = indexProvider.createIndexValueForType(entityClass); - - getRelTypesIndex().add(node, INDEX_KEY, value); - type = type.getSuperclass(); - } - } - - @Override - public ClosableIterable findAll(Class clazz) { - return findAllRelBacked(clazz); - } - - private ClosableIterable findAllRelBacked(Class clazz) { - String value = clazz.getName(); - if (indexProvider != null) - value = indexProvider.createIndexValueForType(clazz); - - final IndexHits allEntitiesOfType = getRelTypesIndex().get(INDEX_KEY, value); - return new ClosableIndexHits(allEntitiesOfType); - } - - - @Override - public long count(Class entityClass) { - long count = 0; - final IndexHits hits = getRelTypesIndex().get(INDEX_KEY, entityClass.getName()); - while (hits.hasNext()) { - hits.next(); - count++; - } - return count; - } - - @Override - @SuppressWarnings("unchecked") - public Class getJavaType(Relationship relationship) { - if (relationship == null) throw new IllegalArgumentException("Relationship is null"); - String className = (String) relationship.getProperty(TYPE_PROPERTY_NAME); - return typeCache.getClassForName(className); - } - - - @Override - public void preEntityRemoval(Relationship state) { - getRelTypesIndex().remove(state); + super(graphDb, indexProvider, INDEX_NAME, Relationship.class, RelationshipEntity.class); } } From 074bcdb814cff8a3e8453977082c9121a5fde5ea Mon Sep 17 00:00:00 2001 From: Michael Hunger Date: Mon, 19 Dec 2011 11:49:08 +0100 Subject: [PATCH 2/9] DATAGRAPH-157 Check for non primitive id fields in simple mapping mode --- .../mapping/Neo4jPersistentEntityImpl.java | 7 ++++- .../mapping/Neo4jMappingContextTest.java | 7 +++++ .../springframework/data/neo4j/model/Car.java | 2 +- .../data/neo4j/model/PrimitiveIdEntity.java | 28 +++++++++++++++++++ 4 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 spring-data-neo4j/src/test/java/org/springframework/data/neo4j/model/PrimitiveIdEntity.java diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/mapping/Neo4jPersistentEntityImpl.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/mapping/Neo4jPersistentEntityImpl.java index 55cc6c3d1..c1358d205 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/mapping/Neo4jPersistentEntityImpl.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/mapping/Neo4jPersistentEntityImpl.java @@ -59,7 +59,12 @@ public class Neo4jPersistentEntityImpl extends BasicPersistentEntity Date: Mon, 19 Dec 2011 12:45:33 +0100 Subject: [PATCH 3/9] =?UTF-8?q?added=20test=20for=20relationship-repositor?= =?UTF-8?q?y=20findAll=E2=81=84=E2=81=84=E2=81=84=E2=81=84=E2=81=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/neo4j/support/EntityNeo4jTemplateTest.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) 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 505a2ca95..5ba29066b 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.mockito.Mockito; import org.neo4j.graphdb.*; import org.neo4j.graphdb.index.Index; import org.neo4j.graphdb.traversal.TraversalDescription; +import org.neo4j.helpers.collection.IteratorUtil; import org.neo4j.helpers.collection.MapUtil; import org.neo4j.kernel.Traversal; import org.springframework.beans.factory.annotation.Autowired; @@ -45,9 +46,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.support.TransactionCallbackWithoutResult; import org.springframework.transaction.support.TransactionTemplate; -import java.util.Arrays; -import java.util.Collection; -import java.util.Map; +import java.util.*; import static org.junit.Assert.*; import static org.neo4j.graphdb.Direction.OUTGOING; @@ -306,6 +305,10 @@ public class EntityNeo4jTemplateTest extends EntityTestBase { public void testCreateRelationshipBetweenNodes() throws Exception { final Friendship friendship = neo4jOperations.createRelationshipBetween(testTeam.david, testTeam.emil, Friendship.class, "knows", false); assertEquals(friendship.getId(),(Long)getNodeState(testTeam.david).getSingleRelationship(KNOWS, OUTGOING).getId()); + final List friendships = IteratorUtil.addToCollection(friendshipRepository.findAll(), new ArrayList()); + assertEquals(2,friendships.size()); + assertEquals(testTeam.friendShip,friendships.get(0)); + assertEquals(friendship,friendships.get(1)); } @Test @Transactional public void testCreateDuplicateRelationshipBetweenNodes() throws Exception { From 39d31d5864b3c1015d07cb222e13072fadadc5fc Mon Sep 17 00:00:00 2001 From: Michael Hunger Date: Wed, 21 Dec 2011 05:23:41 +0100 Subject: [PATCH 4/9] neo4j version update --- spring-data-neo4j-aspects/pom.xml | 4 +- .../support/query/GremlinQueryEngineTest.java | 2 +- spring-data-neo4j-cross-store/pom.xml | 4 +- ...taGraphNamespaceHandlerCrossStoreTest.java | 2 +- .../Neo4jGraphRecommendationTest-context.xml | 1 - spring-data-neo4j-examples/cineasts/pom.xml | 2 +- spring-data-neo4j-parent/pom.xml | 76 ++++++++++++++++-- spring-data-neo4j-rest/pom.xml | 6 +- .../neo4j/rest/support/LocalTestServer.java | 17 +--- spring-data-neo4j/pom.xml | 4 +- .../repository/NodeGraphRepositoryImpl.java | 5 ++ .../RelationshipOperationsRepository.java | 1 + .../mapping/SourceStateTransmitter.java | 8 +- .../neo4j/support/query/GremlinExecutor.java | 4 +- .../neo4j/transaction/SpringProvider.java | 4 +- .../config/DataGraphNamespaceHandlerTest.java | 2 +- .../data/neo4j/model/Person.java | 6 +- .../neo4j/repository/GraphRepositoryTest.java | 17 ++-- .../neo4j/repository/PersonRepository.java | 2 +- .../support/EntityNeo4jTemplateTest.java | 5 +- .../{ => programming-model}/attachdetach.png | Bin .../programming-model/repositories.xml | 2 +- 22 files changed, 116 insertions(+), 58 deletions(-) rename src/docbkx/reference/{ => programming-model}/attachdetach.png (100%) diff --git a/spring-data-neo4j-aspects/pom.xml b/spring-data-neo4j-aspects/pom.xml index 03a0cbfd3..f98d77fba 100644 --- a/spring-data-neo4j-aspects/pom.xml +++ b/spring-data-neo4j-aspects/pom.xml @@ -124,8 +124,8 @@ - com.tinkerpop - gremlin + com.tinkerpop.gremlin + gremlin-groovy true diff --git a/spring-data-neo4j-aspects/src/test/java/org/springframework/data/neo4j/aspects/support/query/GremlinQueryEngineTest.java b/spring-data-neo4j-aspects/src/test/java/org/springframework/data/neo4j/aspects/support/query/GremlinQueryEngineTest.java index c96a94db7..7b4a01a40 100644 --- a/spring-data-neo4j-aspects/src/test/java/org/springframework/data/neo4j/aspects/support/query/GremlinQueryEngineTest.java +++ b/spring-data-neo4j-aspects/src/test/java/org/springframework/data/neo4j/aspects/support/query/GremlinQueryEngineTest.java @@ -66,7 +66,7 @@ public class GremlinQueryEngineTest extends EntityTestBase { @Test @Transactional public void testQueryList() throws Exception { - final String queryString = "t = new Table(); [g.v(michael),g.v(david)].each{ n -> n.as('person.name').as('person.age').table(t,['person.name','person.age']){ it.age }{ it.name } >> -1}; t;" ; + final String queryString = "t = new Table(); [g.v(michael),g.v(david)].each{ n -> n.as('person.name').as('person.age').table(t,['person.name','person.age']){ it.age }{ it.name }.iterate()}; t;" ; final Collection result = IteratorUtil.asCollection(queryEngine.query(queryString, MapUtil.map("michael", getNodeId(michael), "david", getNodeId(testTeam.david)))); assertEquals(asList(testTeam.simpleRowFor(michael, "person"), testTeam.simpleRowFor(testTeam.david, "person")), result); diff --git a/spring-data-neo4j-cross-store/pom.xml b/spring-data-neo4j-cross-store/pom.xml index d7cfa22c8..78114b980 100644 --- a/spring-data-neo4j-cross-store/pom.xml +++ b/spring-data-neo4j-cross-store/pom.xml @@ -127,8 +127,8 @@ - com.tinkerpop - gremlin + com.tinkerpop.gremlin + gremlin-groovy true diff --git a/spring-data-neo4j-cross-store/src/test/java/org/springframework/data/neo4j/config/DataGraphNamespaceHandlerCrossStoreTest.java b/spring-data-neo4j-cross-store/src/test/java/org/springframework/data/neo4j/config/DataGraphNamespaceHandlerCrossStoreTest.java index deb57abfe..996d273e8 100644 --- a/spring-data-neo4j-cross-store/src/test/java/org/springframework/data/neo4j/config/DataGraphNamespaceHandlerCrossStoreTest.java +++ b/spring-data-neo4j-cross-store/src/test/java/org/springframework/data/neo4j/config/DataGraphNamespaceHandlerCrossStoreTest.java @@ -52,7 +52,7 @@ public class DataGraphNamespaceHandlerCrossStoreTest { Neo4jTemplate template = config.template; Assert.assertNotNull("template", template); EmbeddedGraphDatabase graphDatabaseService = (EmbeddedGraphDatabase) template.getGraphDatabaseService(); - Assert.assertEquals("store-dir", "target/config-test", graphDatabaseService.getStoreDir()); + Assert.assertTrue("store-dir", graphDatabaseService.getStoreDir().endsWith("target/config-test")); Assert.assertNotNull("graphDatabaseService", config.graphDatabaseService); Assert.assertNotNull("transactionManager", config.transactionManager); config.graphDatabaseService.shutdown(); diff --git a/spring-data-neo4j-cross-store/src/test/resources/org/springframework/data/neo4j/partial/Neo4jGraphRecommendationTest-context.xml b/spring-data-neo4j-cross-store/src/test/resources/org/springframework/data/neo4j/partial/Neo4jGraphRecommendationTest-context.xml index 1c99fb129..96beb27fc 100644 --- a/spring-data-neo4j-cross-store/src/test/resources/org/springframework/data/neo4j/partial/Neo4jGraphRecommendationTest-context.xml +++ b/spring-data-neo4j-cross-store/src/test/resources/org/springframework/data/neo4j/partial/Neo4jGraphRecommendationTest-context.xml @@ -55,7 +55,6 @@ - diff --git a/spring-data-neo4j-examples/cineasts/pom.xml b/spring-data-neo4j-examples/cineasts/pom.xml index 88011fa96..df85250e6 100644 --- a/spring-data-neo4j-examples/cineasts/pom.xml +++ b/spring-data-neo4j-examples/cineasts/pom.xml @@ -14,7 +14,7 @@ 3.0.6.RELEASE 1.6.1 UTF-8 - 1.5 + 1.6.M02 2.0.0.BUILD-SNAPSHOT 1.6.1 1.6.12 diff --git a/spring-data-neo4j-parent/pom.xml b/spring-data-neo4j-parent/pom.xml index 49f8376fa..6e40ca2d4 100644 --- a/spring-data-neo4j-parent/pom.xml +++ b/spring-data-neo4j-parent/pom.xml @@ -124,12 +124,13 @@ 1.8.4 1.6.1 3.0.6.RELEASE - 1.2.0.M2 - 1.5 + 1.2.0.RC1 + 1.6.M02 0.7-SNAPSHOT 1.6.12 - 1.0 - 1.3 + 1.1 + 1.4 + 1.4 @@ -334,6 +335,61 @@ + + com.tinkerpop.gremlin + gremlin-groovy + ${gremlin.version} + jar + + + org.neo4j + neo4j + + + org.neo4j + neo4j-ha + + + org.neo4j + neo4j-management + + + + com.tinkerpop.blueprints + blueprints-sail-graph + + + + org.codehaus.groovy.maven + gmaven-plugin + + + + jline + jline + + + + + com.tinkerpop.blueprints + blueprints-neo4j-graph + ${blueprints.version} + + + org.neo4j + neo4j + + + org.neo4j + neo4j-ha + + + org.neo4j + neo4j-management + + + + com.tinkerpop.blueprints blueprints-core @@ -348,8 +404,8 @@ - com.tinkerpop - gremlin + com.tinkerpop.gremlin + gremlin-groovy ${gremlin.version} true @@ -410,7 +466,7 @@ org.neo4j neo4j-cypher-dsl - ${neo4j.version} + 1.5 org.apache.maven.plugins maven-eclipse-plugin 2.8 - 1.5 org.eclipse.jdt.core.javanature @@ -310,47 +307,6 @@ - - diff --git a/spring-data-neo4j-examples/hello-worlds-aspects/pom.xml b/spring-data-neo4j-examples/hello-worlds-aspects/pom.xml index 15fad138c..5f2ab6a16 100644 --- a/spring-data-neo4j-examples/hello-worlds-aspects/pom.xml +++ b/spring-data-neo4j-examples/hello-worlds-aspects/pom.xml @@ -11,7 +11,7 @@ UTF-8 - 3.0.6.RELEASE + 3.0.7.RELEASE 1.6.12 1.6.1 UTF-8 diff --git a/spring-data-neo4j-examples/hello-worlds/pom.xml b/spring-data-neo4j-examples/hello-worlds/pom.xml index 2ad094ca4..e354db880 100644 --- a/spring-data-neo4j-examples/hello-worlds/pom.xml +++ b/spring-data-neo4j-examples/hello-worlds/pom.xml @@ -11,7 +11,7 @@ UTF-8 - 3.0.6.RELEASE + 3.0.7.RELEASE 1.6.12 1.6.1 UTF-8 diff --git a/spring-data-neo4j-examples/imdb/pom.xml b/spring-data-neo4j-examples/imdb/pom.xml index 23921ad8b..dafe10f03 100644 --- a/spring-data-neo4j-examples/imdb/pom.xml +++ b/spring-data-neo4j-examples/imdb/pom.xml @@ -7,7 +7,7 @@ 2.0.0-BUILD-SNAPSHOT imdb - 3.0.6.RELEASE + 3.0.7.RELEASE 1.6.12 1.6.1 UTF-8 diff --git a/spring-data-neo4j-examples/myrestaurants-social/pom.xml b/spring-data-neo4j-examples/myrestaurants-social/pom.xml index 76d53f957..652a00d8b 100644 --- a/spring-data-neo4j-examples/myrestaurants-social/pom.xml +++ b/spring-data-neo4j-examples/myrestaurants-social/pom.xml @@ -7,11 +7,11 @@ 2.0.0.BUILD-SNAPSHOT myrestaurants-social - 3.0.6.RELEASE + 3.0.7.RELEASE 2.0.0.BUILD-SNAPSHOT 1.6.12 1.6.1 - 1.5 + 1.6.M02 UTF-8 3.0.6.RELEASE From 1d45cddef3307a39523f1fc110ff2bde9bdea8f3 Mon Sep 17 00:00:00 2001 From: Michael Hunger Date: Fri, 23 Dec 2011 01:13:07 +0100 Subject: [PATCH 8/9] DATAGRAPH-162 handle potential cascaded persistent entity types of a Neo4jPersistentProperty correctly --- .../mapping/Neo4JPersistentPropertyImpl.java | 25 +++++++++++++++---- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/mapping/Neo4JPersistentPropertyImpl.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/mapping/Neo4JPersistentPropertyImpl.java index b09413e8a..e588933be 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/mapping/Neo4JPersistentPropertyImpl.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/mapping/Neo4JPersistentPropertyImpl.java @@ -34,6 +34,7 @@ import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.util.Collection; import java.util.IdentityHashMap; +import java.util.Iterator; import java.util.Map; /** @@ -260,14 +261,15 @@ class Neo4jPersistentPropertyImpl extends AbstractPersistentProperty type) { + return type.isAnnotationPresent(RelationshipEntity.class); } - private boolean hasNodeEntityType() { - return getType().isAnnotationPresent(NodeEntity.class); + + private boolean isNodeEntity(Class type) { + return type.isAnnotationPresent(NodeEntity.class); } public String getIndexKey() { @@ -300,4 +302,17 @@ class Neo4jPersistentPropertyImpl extends AbstractPersistentProperty> getPersistentEntityType() { + final Iterable> result = super.getPersistentEntityType(); + for (Iterator> it = result.iterator(); it.hasNext(); ) { + final TypeInformation typeInformation = it.next(); + final Class type = typeInformation.getType(); + if (isNodeEntity(type) || isRelationshipEntity(type)) continue; + System.out.println("removing "+getName()+" "+type+" "+typeInformation.getActualType().getType()); + it.remove(); + } + return result; + } } From c32f7c34addb32fafc5253558e3a47b8ec9bd1f3 Mon Sep 17 00:00:00 2001 From: Michael Hunger Date: Fri, 23 Dec 2011 01:19:55 +0100 Subject: [PATCH 9/9] DATAGRAPH-161 Upgrade to Spring 3.0.7.GA Neo4j 1.6.M02 Spring Data Commons 1.2.0.GA --- build/ivy/settings/ivy.xml | 6 ++--- .../hello-worlds-aspects/build.gradle | 6 ++--- .../hello-worlds-aspects/settings/ivy.xml | 8 +++---- .../hello-worlds/build.gradle | 7 ++---- .../hello-worlds/build.xml | 22 ++++--------------- .../hello-worlds/settings/ivy.xml | 6 ++--- src/docbkx/tutorial/neo4j.xml | 2 +- src/docbkx/tutorial/setup.xml | 2 +- 8 files changed, 20 insertions(+), 39 deletions(-) diff --git a/build/ivy/settings/ivy.xml b/build/ivy/settings/ivy.xml index 860761182..3e7f55830 100644 --- a/build/ivy/settings/ivy.xml +++ b/build/ivy/settings/ivy.xml @@ -6,9 +6,9 @@ - - - + + + diff --git a/spring-data-neo4j-examples/hello-worlds-aspects/build.gradle b/spring-data-neo4j-examples/hello-worlds-aspects/build.gradle index c4b693f2d..7ffdbf9b7 100644 --- a/spring-data-neo4j-examples/hello-worlds-aspects/build.gradle +++ b/spring-data-neo4j-examples/hello-worlds-aspects/build.gradle @@ -5,9 +5,9 @@ apply plugin: 'idea' apply plugin: 'eclipse' -springVersion = "3.0.5.RELEASE" -springDataNeo4jVersion = "1.1.0.RELEASE" -aspectjVersion = "1.6.11.RELEASE" +springVersion = "3.0.7.RELEASE" +springDataNeo4jVersion = "2.0.0.RELEASE" +aspectjVersion = "1.6.12" apply from:'https://github.com/SpringSource/spring-data-neo4j/raw/master/build/gradle/springdataneo4j.gradle' diff --git a/spring-data-neo4j-examples/hello-worlds-aspects/settings/ivy.xml b/spring-data-neo4j-examples/hello-worlds-aspects/settings/ivy.xml index 2564c1bf5..d1bd7bcfa 100644 --- a/spring-data-neo4j-examples/hello-worlds-aspects/settings/ivy.xml +++ b/spring-data-neo4j-examples/hello-worlds-aspects/settings/ivy.xml @@ -1,14 +1,14 @@ - + - - - + + + diff --git a/spring-data-neo4j-examples/hello-worlds/build.gradle b/spring-data-neo4j-examples/hello-worlds/build.gradle index c4b693f2d..7b2c1ccd5 100644 --- a/spring-data-neo4j-examples/hello-worlds/build.gradle +++ b/spring-data-neo4j-examples/hello-worlds/build.gradle @@ -5,11 +5,8 @@ apply plugin: 'idea' apply plugin: 'eclipse' -springVersion = "3.0.5.RELEASE" -springDataNeo4jVersion = "1.1.0.RELEASE" -aspectjVersion = "1.6.11.RELEASE" - -apply from:'https://github.com/SpringSource/spring-data-neo4j/raw/master/build/gradle/springdataneo4j.gradle' +springVersion = "3.0.7.RELEASE" +springDataNeo4jVersion = "2.0.0.RELEASE" configurations { runtime diff --git a/spring-data-neo4j-examples/hello-worlds/build.xml b/spring-data-neo4j-examples/hello-worlds/build.xml index 60a0d7f3d..c975fc6cf 100644 --- a/spring-data-neo4j-examples/hello-worlds/build.xml +++ b/spring-data-neo4j-examples/hello-worlds/build.xml @@ -7,8 +7,6 @@ - - @@ -29,14 +27,8 @@ - - - - - - - - + + @@ -44,14 +36,8 @@ - - - - - - - - + + diff --git a/spring-data-neo4j-examples/hello-worlds/settings/ivy.xml b/spring-data-neo4j-examples/hello-worlds/settings/ivy.xml index 2564c1bf5..58f5da722 100644 --- a/spring-data-neo4j-examples/hello-worlds/settings/ivy.xml +++ b/spring-data-neo4j-examples/hello-worlds/settings/ivy.xml @@ -1,14 +1,12 @@ - + - - - + diff --git a/src/docbkx/tutorial/neo4j.xml b/src/docbkx/tutorial/neo4j.xml index d4690abbd..5129504a8 100644 --- a/src/docbkx/tutorial/neo4j.xml +++ b/src/docbkx/tutorial/neo4j.xml @@ -40,7 +40,7 @@ org.neo4j neo4j - 1.5 + 1.6.M02 ]]> diff --git a/src/docbkx/tutorial/setup.xml b/src/docbkx/tutorial/setup.xml index 730265306..87d93cc1b 100644 --- a/src/docbkx/tutorial/setup.xml +++ b/src/docbkx/tutorial/setup.xml @@ -32,7 +32,7 @@ Project pom.xml - 3.0.6.RELEASE + 3.0.7.RELEASE