diff --git a/src/main/java/org/springframework/data/repository/support/Repositories.java b/src/main/java/org/springframework/data/repository/support/Repositories.java index d1d0437db..82529d796 100644 --- a/src/main/java/org/springframework/data/repository/support/Repositories.java +++ b/src/main/java/org/springframework/data/repository/support/Repositories.java @@ -163,6 +163,8 @@ public class Repositories implements Iterable> { RepositoryInformation information = getRepositoryInformationFor(domainClass); Object repository = getRepositoryFor(domainClass); + Assert.notNull(repository, String.format("No repository found for domain class: %s", domainClass)); + if (repository instanceof CrudRepository) { return new CrudRepositoryInvoker((CrudRepository) repository); } else { diff --git a/src/test/java/org/springframework/data/repository/support/RepositoriesUnitTests.java b/src/test/java/org/springframework/data/repository/support/RepositoriesUnitTests.java index fcb06bf77..ece9e8082 100644 --- a/src/test/java/org/springframework/data/repository/support/RepositoriesUnitTests.java +++ b/src/test/java/org/springframework/data/repository/support/RepositoriesUnitTests.java @@ -25,7 +25,9 @@ import java.util.Collections; import java.util.List; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import org.mockito.runners.MockitoJUnitRunner; import org.springframework.beans.factory.support.AbstractBeanDefinition; @@ -51,12 +53,15 @@ import org.springframework.data.repository.query.QueryMethod; * Unit tests for {@link Repositories}. * * @author Oliver Gierke + * @author Thomas Darimont */ @RunWith(MockitoJUnitRunner.class) public class RepositoriesUnitTests { ApplicationContext context; + @Rule public ExpectedException exception = ExpectedException.none(); + @Before public void setUp() { @@ -107,6 +112,19 @@ public class RepositoriesUnitTests { assertThat(repositories.getPersistentEntity(Address.class), is(notNullValue())); } + /** + * @see DATACMNS-374 + */ + @Test + public void shouldThrowMeaningfulExceptionWhenTheRepositoryForAGivenDomainClassCannotBeFound() { + + exception.expect(IllegalArgumentException.class); + exception.expectMessage(containsString("No repository found for domain class: ")); + + Repositories repositories = new Repositories(context); + repositories.getCrudInvoker(EntityWithoutRepository.class); + } + class Person { } @@ -115,6 +133,10 @@ public class RepositoriesUnitTests { } + class EntityWithoutRepository { + + } + interface PersonRepository extends CrudRepository { }