DATACMNS-794 - Repositories now exposes RepositoryInformation for repository interfaces.

This commit is contained in:
Oliver Gierke
2015-12-10 08:23:24 +01:00
parent 755a4cfaec
commit c60cd647cc
2 changed files with 37 additions and 3 deletions

View File

@@ -94,8 +94,8 @@ public class Repositories implements Iterable<Class<?>> {
RepositoryFactoryInformation repositoryFactoryInformation = beanFactory.getBean(name,
RepositoryFactoryInformation.class);
Class<?> domainType = ClassUtils.getUserClass(repositoryFactoryInformation.getRepositoryInformation()
.getDomainType());
Class<?> domainType = ClassUtils
.getUserClass(repositoryFactoryInformation.getRepositoryInformation().getDomainType());
RepositoryInformation information = repositoryFactoryInformation.getRepositoryInformation();
Set<Class<?>> alternativeDomainTypes = information.getAlternativeDomainTypes();
@@ -193,6 +193,28 @@ public class Repositories implements Iterable<Class<?>> {
return information == EMPTY_REPOSITORY_FACTORY_INFO ? null : information.getRepositoryInformation();
}
/**
* Returns the {@link RepositoryInformation} for the given repository interface.
*
* @param repositoryInterface must not be {@literal null}.
* @return the {@link RepositoryInformation} for the given repository interface or {@literal null} there's no
* repository instance registered for the given interface.
* @since 1.12
*/
public RepositoryInformation getRepositoryInformation(Class<?> repositoryInterface) {
for (RepositoryFactoryInformation<Object, Serializable> factoryInformation : repositoryFactoryInfos.values()) {
RepositoryInformation information = factoryInformation.getRepositoryInformation();
if (information.getRepositoryInterface().equals(repositoryInterface)) {
return information;
}
}
return null;
}
/**
* Returns the {@link PersistentEntity} for the given domain class. Might return {@literal null} in case the module
* storing the given domain class does not support the mapping subsystem.

View File

@@ -17,7 +17,7 @@ import org.springframework.data.repository.core.support.DefaultRepositoryMetadat
*/
package org.springframework.data.repository.support;
import static org.hamcrest.CoreMatchers.*;
import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*;
import java.io.Serializable;
@@ -139,6 +139,18 @@ public class RepositoriesUnitTests {
context.close();
}
/**
* @see DATACMNS-794
*/
@Test
public void exposesRepositoryFactoryInformationForRepository() {
RepositoryInformation information = new Repositories(context).getRepositoryInformation(PersonRepository.class);
assertThat(information, is(notNullValue()));
assertThat(information.getRepositoryInterface(), is(typeCompatibleWith(PersonRepository.class)));
}
class Person {}
class Address {}