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 72f041244..3f419425d 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 @@ -33,8 +33,6 @@ import org.springframework.data.neo4j.annotation.QueryType; import org.springframework.data.neo4j.conversion.DefaultConverter; import org.springframework.data.neo4j.conversion.ResultConverter; import org.springframework.data.neo4j.core.GraphDatabase; -import org.springframework.data.neo4j.core.GraphDatabaseGlobalOperations; -import org.springframework.data.neo4j.support.DelegatingGraphDatabaseGlobalOperations; import org.springframework.data.neo4j.support.index.NoSuchIndexException; import org.springframework.data.neo4j.support.query.ConversionServiceQueryResultConverter; import org.springframework.data.neo4j.support.query.QueryEngine; @@ -48,7 +46,6 @@ public class SpringRestGraphDatabase extends org.neo4j.rest.graphdb.RestGraphDat } private ConversionService conversionService; private ResultConverter resultConverter; - private GraphDatabaseGlobalOperations globalOperations; public SpringRestGraphDatabase( RestAPI api){ super(api); @@ -62,14 +59,6 @@ public class SpringRestGraphDatabase extends org.neo4j.rest.graphdb.RestGraphDat this(new RestAPIFacade( uri, user, password )); } - @Override - public GraphDatabaseGlobalOperations getGlobalGraphOperations() { - if (this.globalOperations == null) { - this.globalOperations = new DelegatingGraphDatabaseGlobalOperations(this); - } - return globalOperations; - } - @Override public Node createNode(Map props) { return super.getRestAPI().createNode(props); diff --git a/spring-data-neo4j-rest/src/test/resources/RestTests-context.xml b/spring-data-neo4j-rest/src/test/resources/RestTests-context.xml index 6f3d2dd97..b943b99e0 100644 --- a/spring-data-neo4j-rest/src/test/resources/RestTests-context.xml +++ b/spring-data-neo4j-rest/src/test/resources/RestTests-context.xml @@ -6,4 +6,5 @@ + diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/core/GraphDatabase.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/core/GraphDatabase.java index fae280af2..92c30350b 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/core/GraphDatabase.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/core/GraphDatabase.java @@ -30,13 +30,6 @@ import java.util.Map; public interface GraphDatabase { - - /** - * @return an object which is able to provide global graph - * type operations - */ - GraphDatabaseGlobalOperations getGlobalGraphOperations(); - /** * @return the reference node of the underlying graph database */ diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/fieldaccess/RelationshipHelper.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/fieldaccess/RelationshipHelper.java index 16dca68f4..7aea4c4d6 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/fieldaccess/RelationshipHelper.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/fieldaccess/RelationshipHelper.java @@ -15,13 +15,11 @@ */ package org.springframework.data.neo4j.fieldaccess; -import org.neo4j.graphdb.Direction; -import org.neo4j.graphdb.Node; -import org.neo4j.graphdb.Relationship; -import org.neo4j.graphdb.RelationshipType; +import org.neo4j.graphdb.*; import org.springframework.dao.InvalidDataAccessApiUsageException; import org.springframework.data.neo4j.mapping.MappingPolicy; import org.springframework.data.neo4j.support.Neo4jTemplate; +import org.springframework.data.neo4j.support.typerepresentation.LabelBasedNodeTypeRepresentationStrategy; import org.springframework.util.Assert; import java.util.HashSet; @@ -75,8 +73,13 @@ public class RelationshipHelper { for ( Relationship relationship : node.getRelationships( type, direction ) ) { if ( !targetNodes.remove( relationship.getOtherNode( node ) ) ) { if ( targetType != null ) { - Object actualTargetType = relationship.getOtherNode( node ).getProperty( "__type__" ); - + Object actualTargetType = tryDetermineTypeAssumingIndexBasedStrategy(relationship, node); + if (actualTargetType == null) { + actualTargetType = tryDetermineTypeAssumingLabelBasedStrategy(relationship, node); + } + if (actualTargetType == null) { + throw new RuntimeException("Neither a property or Label could be found to work out what the type of the node is at the other end of the relationship "); + } try { if (! targetType.isAssignableFrom(Class.forName((String) actualTargetType))) { continue; @@ -91,6 +94,28 @@ public class RelationshipHelper { } } + private Object tryDetermineTypeAssumingLabelBasedStrategy(Relationship relationship,Node node) { + + ResourceIterable