diff --git a/src/main/java/org/springframework/data/repository/core/support/AbstractRepositoryMetadata.java b/src/main/java/org/springframework/data/repository/core/support/AbstractRepositoryMetadata.java index 11c9131fe..f8353d3aa 100644 --- a/src/main/java/org/springframework/data/repository/core/support/AbstractRepositoryMetadata.java +++ b/src/main/java/org/springframework/data/repository/core/support/AbstractRepositoryMetadata.java @@ -41,7 +41,7 @@ import org.springframework.util.Assert; * @author Thomas Darimont * @author Jens Schauder * @author Mark Paluch - * @author Konstntin Ignatyev + * @author Konstantin Ignatyev */ public abstract class AbstractRepositoryMetadata implements RepositoryMetadata { @@ -57,7 +57,8 @@ public abstract class AbstractRepositoryMetadata implements RepositoryMetadata { public AbstractRepositoryMetadata(Class repositoryInterface) { Assert.notNull(repositoryInterface, "Given type must not be null"); - Assert.isTrue(repositoryInterface.isInterface(), "Given type ["+ repositoryInterface.getName()+"] must be an interface"); + Assert.isTrue(repositoryInterface.isInterface(), + () -> String.format("Given type %s must be an interface", repositoryInterface.getName())); this.repositoryInterface = repositoryInterface; this.typeInformation = TypeInformation.of(repositoryInterface); 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 88c11eb13..d065d6940 100755 --- a/src/test/java/org/springframework/data/repository/support/RepositoriesUnitTests.java +++ b/src/test/java/org/springframework/data/repository/support/RepositoriesUnitTests.java @@ -57,6 +57,7 @@ import org.springframework.util.ClassUtils; * @author Thomas Darimont * @author Jan Zeppenfeld * @author Alessandro Nistico + * @author Mark Paluch */ @ExtendWith(MockitoExtension.class) @MockitoSettings(strictness = Strictness.LENIENT) @@ -92,9 +93,17 @@ class RepositoriesUnitTests { assertThat(repositories.hasRepositoryFor(Address.class)).isTrue(); } + @Test // GH-3091 + void reportsOffendingTypeName() { + assertThatIllegalArgumentException().isThrownBy(() -> new CustomRepositoryMetadata(String.class)) + .withMessageContaining("java.lang.String"); + } + @Test void doesNotFindInformationForNonManagedDomainClass() { + var repositories = new Repositories(context); + assertThat(repositories.hasRepositoryFor(String.class)).isFalse(); assertThat(repositories.getRepositoryFor(String.class)).isNotPresent(); } @@ -221,13 +230,13 @@ class RepositoriesUnitTests { assertRepositoryAvailableFor(repositories, Child.class, ChildRepository.class); } - private void assertRepositoryAvailableFor(Repositories repositories, Class domainTypem, + private void assertRepositoryAvailableFor(Repositories repositories, Class domainType, Class repositoryInterface) { - assertThat(repositories.hasRepositoryFor(domainTypem)).isTrue(); - assertThat(repositories.getRepositoryFor(domainTypem)) + assertThat(repositories.hasRepositoryFor(domainType)).isTrue(); + assertThat(repositories.getRepositoryFor(domainType)) .hasValueSatisfying(it -> assertThat(it).isInstanceOf(repositoryInterface)); - assertThat(repositories.getRepositoryInformationFor(domainTypem)) + assertThat(repositories.getRepositoryInformationFor(domainType)) .hasValueSatisfying(it -> assertThat(it.getRepositoryInterface()).isEqualTo(repositoryInterface)); }