Browse Source

Polishing.

Defer message creation. Add test.

See #3091
3.2.x
Mark Paluch 2 years ago
parent
commit
fd1ab30a60
No known key found for this signature in database
GPG Key ID: 55BC6374BAA9D973
  1. 5
      src/main/java/org/springframework/data/repository/core/support/AbstractRepositoryMetadata.java
  2. 17
      src/test/java/org/springframework/data/repository/support/RepositoriesUnitTests.java

5
src/main/java/org/springframework/data/repository/core/support/AbstractRepositoryMetadata.java

@ -41,7 +41,7 @@ import org.springframework.util.Assert;
* @author Thomas Darimont * @author Thomas Darimont
* @author Jens Schauder * @author Jens Schauder
* @author Mark Paluch * @author Mark Paluch
* @author Konstntin Ignatyev * @author Konstantin Ignatyev
*/ */
public abstract class AbstractRepositoryMetadata implements RepositoryMetadata { public abstract class AbstractRepositoryMetadata implements RepositoryMetadata {
@ -57,7 +57,8 @@ public abstract class AbstractRepositoryMetadata implements RepositoryMetadata {
public AbstractRepositoryMetadata(Class<?> repositoryInterface) { public AbstractRepositoryMetadata(Class<?> repositoryInterface) {
Assert.notNull(repositoryInterface, "Given type must not be null"); 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.repositoryInterface = repositoryInterface;
this.typeInformation = TypeInformation.of(repositoryInterface); this.typeInformation = TypeInformation.of(repositoryInterface);

17
src/test/java/org/springframework/data/repository/support/RepositoriesUnitTests.java

@ -57,6 +57,7 @@ import org.springframework.util.ClassUtils;
* @author Thomas Darimont * @author Thomas Darimont
* @author Jan Zeppenfeld * @author Jan Zeppenfeld
* @author Alessandro Nistico * @author Alessandro Nistico
* @author Mark Paluch
*/ */
@ExtendWith(MockitoExtension.class) @ExtendWith(MockitoExtension.class)
@MockitoSettings(strictness = Strictness.LENIENT) @MockitoSettings(strictness = Strictness.LENIENT)
@ -92,9 +93,17 @@ class RepositoriesUnitTests {
assertThat(repositories.hasRepositoryFor(Address.class)).isTrue(); assertThat(repositories.hasRepositoryFor(Address.class)).isTrue();
} }
@Test // GH-3091
void reportsOffendingTypeName() {
assertThatIllegalArgumentException().isThrownBy(() -> new CustomRepositoryMetadata(String.class))
.withMessageContaining("java.lang.String");
}
@Test @Test
void doesNotFindInformationForNonManagedDomainClass() { void doesNotFindInformationForNonManagedDomainClass() {
var repositories = new Repositories(context); var repositories = new Repositories(context);
assertThat(repositories.hasRepositoryFor(String.class)).isFalse(); assertThat(repositories.hasRepositoryFor(String.class)).isFalse();
assertThat(repositories.getRepositoryFor(String.class)).isNotPresent(); assertThat(repositories.getRepositoryFor(String.class)).isNotPresent();
} }
@ -221,13 +230,13 @@ class RepositoriesUnitTests {
assertRepositoryAvailableFor(repositories, Child.class, ChildRepository.class); assertRepositoryAvailableFor(repositories, Child.class, ChildRepository.class);
} }
private void assertRepositoryAvailableFor(Repositories repositories, Class<?> domainTypem, private void assertRepositoryAvailableFor(Repositories repositories, Class<?> domainType,
Class<?> repositoryInterface) { Class<?> repositoryInterface) {
assertThat(repositories.hasRepositoryFor(domainTypem)).isTrue(); assertThat(repositories.hasRepositoryFor(domainType)).isTrue();
assertThat(repositories.getRepositoryFor(domainTypem)) assertThat(repositories.getRepositoryFor(domainType))
.hasValueSatisfying(it -> assertThat(it).isInstanceOf(repositoryInterface)); .hasValueSatisfying(it -> assertThat(it).isInstanceOf(repositoryInterface));
assertThat(repositories.getRepositoryInformationFor(domainTypem)) assertThat(repositories.getRepositoryInformationFor(domainType))
.hasValueSatisfying(it -> assertThat(it.getRepositoryInterface()).isEqualTo(repositoryInterface)); .hasValueSatisfying(it -> assertThat(it.getRepositoryInterface()).isEqualTo(repositoryInterface));
} }

Loading…
Cancel
Save