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; @@ -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 { @@ -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);

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

@ -57,6 +57,7 @@ import org.springframework.util.ClassUtils; @@ -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 { @@ -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 { @@ -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));
}

Loading…
Cancel
Save