minor repository refactoring

This commit is contained in:
Michael Hunger
2011-08-10 15:57:34 +02:00
parent cd26261b91
commit 2bc607b060
3 changed files with 17 additions and 13 deletions

View File

@@ -28,4 +28,5 @@ public interface GraphEntityInformation<S extends PropertyContainer, T extends G
boolean isNodeEntity();
boolean isPartialEntity();
boolean isRelationshipEntity();
}

View File

@@ -23,6 +23,7 @@ package org.springframework.data.neo4j.repository;
import org.neo4j.graphdb.PropertyContainer;
import org.springframework.data.neo4j.annotation.NodeEntity;
import org.springframework.data.neo4j.annotation.RelationshipEntity;
import org.springframework.data.neo4j.core.GraphBacked;
import org.springframework.data.neo4j.core.NodeBacked;
import org.springframework.data.neo4j.core.RelationshipBacked;
@@ -31,26 +32,31 @@ import org.springframework.data.repository.core.support.AbstractEntityInformatio
public class GraphMetamodelEntityInformation<S extends PropertyContainer, T extends GraphBacked<S>> extends AbstractEntityInformation<T,Long> implements GraphEntityInformation<S,T> {
private final boolean isNodeEntity;
private final boolean isPartialEntity;
private GraphDatabaseContext graphDatabaseContext;
private final RelationshipEntity relationshipEntity;
private final NodeEntity nodeEntity;
public GraphMetamodelEntityInformation(Class domainClass, GraphDatabaseContext graphDatabaseContext) {
super(domainClass);
this.graphDatabaseContext = graphDatabaseContext;
NodeEntity nodeEntity = getJavaType().getAnnotation(NodeEntity.class);
isNodeEntity = nodeEntity!=null;
isPartialEntity = isNodeEntity && nodeEntity.partial();
nodeEntity = getJavaType().getAnnotation(NodeEntity.class);
relationshipEntity = getJavaType().getAnnotation(RelationshipEntity.class);
}
@Override
public boolean isNodeEntity() {
return isNodeEntity;
return nodeEntity!=null;
}
@Override
public boolean isPartialEntity() {
return isPartialEntity;
return nodeEntity!=null && nodeEntity.partial();
}
@Override
public boolean isRelationshipEntity() {
return relationshipEntity!=null;
}
@Override

View File

@@ -92,12 +92,9 @@ public class GraphRepositoryFactory extends RepositoryFactorySupport {
@Override
protected Class<?> getRepositoryBaseClass(RepositoryMetadata repositoryMetadata) {
Class<?> domainClass = repositoryMetadata.getDomainClass();
if (findAnnotation(domainClass, NodeEntity.class) !=null) {
return NodeGraphRepository.class;
}
if (findAnnotation(domainClass, RelationshipEntity.class) !=null) {
return RelationshipGraphRepository.class;
}
final GraphEntityInformation entityInformation = (GraphEntityInformation) getEntityInformation(domainClass);
if (entityInformation.isNodeEntity()) return NodeGraphRepository.class;
if (entityInformation.isRelationshipEntity()) return RelationshipGraphRepository.class;
throw new IllegalArgumentException("Invalid Domain Class "+ domainClass+" neither Node- nor RelationshipEntity");
}