DATAGRAPH-505 - Improved detection of custom implementations for CDI repositories.

Adapted to API changes in CDI extension.

Related ticket: DATACMNS-565.
This commit is contained in:
Mark Paluch
2014-08-27 10:35:31 +02:00
committed by Oliver Gierke
parent 0bde5934c9
commit 7a2d299838
2 changed files with 19 additions and 19 deletions

View File

@@ -15,18 +15,19 @@
*/
package org.springframework.data.neo4j.repository.cdi;
import java.lang.annotation.Annotation;
import java.util.Set;
import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.BeanManager;
import org.springframework.data.neo4j.core.GraphDatabase;
import org.springframework.data.neo4j.repository.GraphRepositoryFactory;
import org.springframework.data.neo4j.support.Neo4jTemplate;
import org.springframework.data.neo4j.support.mapping.Neo4jMappingContext;
import org.springframework.data.repository.cdi.CdiRepositoryBean;
import org.springframework.util.Assert;
import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.BeanManager;
import java.lang.annotation.Annotation;
import java.util.Set;
import org.springframework.data.repository.config.CustomRepositoryImplementationDetector;
/**
* {@link org.springframework.data.repository.cdi.CdiRepositoryBean} to create Neo4j repository instances via CDI.
@@ -45,13 +46,13 @@ public class Neo4jCdiRepositoryBean<T> extends CdiRepositoryBean<T> {
* @param qualifiers must not be {@literal null}.
* @param repositoryType must not be {@literal null}.
* @param beanManager must not be {@literal null}.
* @param customImplementationBean the bean for the custom implementation of the
* {@link org.springframework.data.repository.Repository}, can be {@literal null}.
* @@param detector detector for the custom {@link org.springframework.data.repository.Repository} implementations
* {@link CustomRepositoryImplementationDetector}, can be {@literal null}.
*/
public Neo4jCdiRepositoryBean(Bean<GraphDatabase> graphDatabase,
Set<Annotation> qualifiers, Class<T> repositoryType, BeanManager beanManager, Bean<?> customImplementationBean) {
public Neo4jCdiRepositoryBean(Bean<GraphDatabase> graphDatabase, Set<Annotation> qualifiers, Class<T> repositoryType,
BeanManager beanManager, CustomRepositoryImplementationDetector detector) {
super(qualifiers, repositoryType, beanManager, customImplementationBean);
super(qualifiers, repositoryType, beanManager, detector);
this.graphDatabase = graphDatabase;
}

View File

@@ -61,12 +61,12 @@ public class Neo4jCdiRepositoryExtension extends CdiRepositoryExtensionSupport {
for (Type type : bean.getTypes()) {
if (type instanceof Class<?> && GraphDatabase.class.isAssignableFrom((Class<?>) type)) {
if (LOG.isDebugEnabled()) {
LOG.debug(String.format("Discovered %s with qualifiers %s.", GraphDatabase.class.getName(),
bean.getQualifiers()));
}
graphDatabases.put(new HashSet<Annotation>(bean.getQualifiers()), (Bean<GraphDatabase>) bean);
}
}
@@ -100,7 +100,8 @@ public class Neo4jCdiRepositoryExtension extends CdiRepositoryExtensionSupport {
* @param beanManager The BeanManager instance.
* @return The bean.
*/
private <T> CdiRepositoryBean<T> createRepositoryBean(Class<T> repositoryType, Set<Annotation> qualifiers, BeanManager beanManager) {
private <T> CdiRepositoryBean<T> createRepositoryBean(Class<T> repositoryType, Set<Annotation> qualifiers,
BeanManager beanManager) {
Bean<GraphDatabase> graphDatabase = this.graphDatabases.get(qualifiers);
@@ -109,9 +110,7 @@ public class Neo4jCdiRepositoryExtension extends CdiRepositoryExtensionSupport {
Neo4jMappingContext.class.getName(), qualifiers));
}
Bean<?> customImplementationBean = getCustomImplementationBean(repositoryType, beanManager, qualifiers);
return new Neo4jCdiRepositoryBean<T>(graphDatabase, qualifiers, repositoryType,
beanManager, customImplementationBean);
return new Neo4jCdiRepositoryBean<T>(graphDatabase, qualifiers, repositoryType, beanManager,
getCustomImplementationDetector());
}
}