diff --git a/src/main/java/org/springframework/data/repository/init/ResourceReaderRepositoryPopulator.java b/src/main/java/org/springframework/data/repository/init/ResourceReaderRepositoryPopulator.java index 23c7a7afe..6a700f889 100644 --- a/src/main/java/org/springframework/data/repository/init/ResourceReaderRepositoryPopulator.java +++ b/src/main/java/org/springframework/data/repository/init/ResourceReaderRepositoryPopulator.java @@ -38,7 +38,6 @@ import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.core.CrudMethods; import org.springframework.data.repository.core.RepositoryInformation; import org.springframework.data.repository.core.RepositoryMetadata; -import org.springframework.data.repository.core.support.DefaultCrudMethods; import org.springframework.data.repository.reactive.ReactiveCrudRepository; import org.springframework.data.repository.support.Repositories; import org.springframework.data.repository.util.ReactiveWrapperConverters; @@ -127,7 +126,7 @@ public class ResourceReaderRepositoryPopulator implements RepositoryPopulator, A Assert.notNull(repositories, "Repositories must not be null!"); - RepositoryPersisterFactory persisterFactory = new RepositoryPersisterFactory(repositories); + AggregatePersisterFactory persisterFactory = new AggregatePersisterFactory(repositories); for (Resource resource : resources) { @@ -173,43 +172,45 @@ public class ResourceReaderRepositoryPopulator implements RepositoryPopulator, A * @param object must not be {@literal null}. * @param persisterFactory must not be {@literal null}. */ - private void persist(Object object, RepositoryPersisterFactory persisterFactory) { + private void persist(Object object, AggregatePersisterFactory persisterFactory) { - RepositoryPersister persister = persisterFactory.getPersisterFor(object.getClass()); + AggregatePersister persister = persisterFactory.getPersisterFor(object.getClass()); logger.debug(String.format("Persisting %s using repository %s", object, persister)); persister.save(object); } /** - * Factory to create {@link RepositoryPersister} instances. + * Factory to create {@link AggregatePersister} instances. */ - static class RepositoryPersisterFactory { + static class AggregatePersisterFactory { - private final Map, RepositoryPersister> persisters = new HashMap<>(); + private final Map, AggregatePersister> persisters = new HashMap<>(); private final Repositories repositories; - public RepositoryPersisterFactory(Repositories repositories) { + public AggregatePersisterFactory(Repositories repositories) { this.repositories = repositories; } /** - * Obtain a {@link RepositoryPersister}. + * Obtain a {@link AggregatePersister}. * * @param domainType * @return */ - public RepositoryPersister getPersisterFor(Class domainType) { + public AggregatePersister getPersisterFor(Class domainType) { return persisters.computeIfAbsent(domainType, this::createPersisterFor); } - private RepositoryPersister createPersisterFor(Class domainType) { + private AggregatePersister createPersisterFor(Class domainType) { RepositoryInformation repositoryInformation = repositories.getRequiredRepositoryInformation(domainType); Object repository = repositories.getRepositoryFor(domainType).orElseThrow( () -> new IllegalStateException(String.format("No repository found for domain type: %s", domainType))); if (repositoryInformation.isReactiveRepository()) { - return repository instanceof ReactiveCrudRepository ? new ReactiveCrudRepositoryPersister(repository) + + return repository instanceof ReactiveCrudRepository // + ? new ReactiveCrudRepositoryPersister(repository) // : new ReflectiveReactivePersister(repositoryInformation, repository); } @@ -224,7 +225,7 @@ public class ResourceReaderRepositoryPopulator implements RepositoryPopulator, A /** * Interface defining a save method to persist an object within a repository. */ - interface RepositoryPersister { + interface AggregatePersister { /** * Saves the {@code object} in an appropriate repository. @@ -235,9 +236,9 @@ public class ResourceReaderRepositoryPopulator implements RepositoryPopulator, A } /** - * Reflection variant of a {@link RepositoryPersister}. + * Reflection variant of a {@link AggregatePersister}. */ - private static class ReflectivePersister implements RepositoryPersister { + private static class ReflectivePersister implements AggregatePersister { private final CrudMethods methods; private final Object repository; @@ -291,9 +292,9 @@ public class ResourceReaderRepositoryPopulator implements RepositoryPopulator, A } /** - * {@link RepositoryPersister} to operate with {@link CrudRepository}. + * {@link AggregatePersister} to operate with {@link CrudRepository}. */ - private static class CrudRepositoryPersister implements RepositoryPersister { + private static class CrudRepositoryPersister implements AggregatePersister { private final CrudRepository repository; @@ -316,9 +317,9 @@ public class ResourceReaderRepositoryPopulator implements RepositoryPopulator, A } /** - * {@link RepositoryPersister} to operate with {@link ReactiveCrudRepository}. + * {@link AggregatePersister} to operate with {@link ReactiveCrudRepository}. */ - private static class ReactiveCrudRepositoryPersister implements RepositoryPersister { + private static class ReactiveCrudRepositoryPersister implements AggregatePersister { private final ReactiveCrudRepository repository; diff --git a/src/test/java/org/springframework/data/repository/init/RepositoryPersisterFactoryUnitTests.java b/src/test/java/org/springframework/data/repository/init/AggregatePersisterFactoryUnitTests.java similarity index 94% rename from src/test/java/org/springframework/data/repository/init/RepositoryPersisterFactoryUnitTests.java rename to src/test/java/org/springframework/data/repository/init/AggregatePersisterFactoryUnitTests.java index 6e45a15bd..334606f85 100644 --- a/src/test/java/org/springframework/data/repository/init/RepositoryPersisterFactoryUnitTests.java +++ b/src/test/java/org/springframework/data/repository/init/AggregatePersisterFactoryUnitTests.java @@ -16,6 +16,7 @@ package org.springframework.data.repository.init; import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; import java.util.Optional; @@ -29,7 +30,7 @@ import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.Repository; import org.springframework.data.repository.core.RepositoryInformation; -import org.springframework.data.repository.init.ResourceReaderRepositoryPopulator.RepositoryPersisterFactory; +import org.springframework.data.repository.init.ResourceReaderRepositoryPopulator.AggregatePersisterFactory; import org.springframework.data.repository.reactive.ReactiveCrudRepository; import org.springframework.data.repository.support.Repositories; @@ -37,15 +38,15 @@ import org.springframework.data.repository.support.Repositories; * @author Christoph Strobl */ @ExtendWith(MockitoExtension.class) -class RepositoryPersisterFactoryUnitTests { +class AggregatePersisterFactoryUnitTests { @Mock Repositories repositories; @Mock RepositoryInformation repoInfo; - RepositoryPersisterFactory factory; + AggregatePersisterFactory factory; @BeforeEach void beforeEach() { - factory = new RepositoryPersisterFactory(repositories); + factory = new AggregatePersisterFactory(repositories); } @Test // GH-2558 @@ -59,6 +60,7 @@ class RepositoryPersisterFactoryUnitTests { void usesCrudRepoPersisterForNonReactiveCrudRepo() { CrudRepository crudRepository = mock(CrudRepository.class); + when(repositories.getRequiredRepositoryInformation(any())).thenReturn(repoInfo); when(repoInfo.isReactiveRepository()).thenReturn(false); when(repositories.getRepositoryFor(Mockito.any())).thenReturn(Optional.of(crudRepository)); @@ -71,6 +73,7 @@ class RepositoryPersisterFactoryUnitTests { void usesReactiveCrudRepoPersisterForReactiveCrudRepo() { ReactiveCrudRepository crudRepository = mock(ReactiveCrudRepository.class); + when(repositories.getRequiredRepositoryInformation(any())).thenReturn(repoInfo); when(repoInfo.isReactiveRepository()).thenReturn(true); when(repositories.getRepositoryFor(Mockito.any())).thenReturn(Optional.of(crudRepository)); @@ -83,6 +86,7 @@ class RepositoryPersisterFactoryUnitTests { void usesReflectiveRepoPersisterForNonReactiveNonCrudRepo() { Repository repository = mock(Repository.class); + when(repositories.getRequiredRepositoryInformation(any())).thenReturn(repoInfo); when(repoInfo.isReactiveRepository()).thenReturn(false); when(repositories.getRepositoryFor(Mockito.any())).thenReturn(Optional.of(repository)); @@ -95,6 +99,7 @@ class RepositoryPersisterFactoryUnitTests { void usesReactiveReflectiveRepoPersisterForReactiveNonCrudRepo() { Repository repository = mock(Repository.class); + when(repositories.getRequiredRepositoryInformation(any())).thenReturn(repoInfo); when(repoInfo.isReactiveRepository()).thenReturn(true); when(repositories.getRepositoryFor(Mockito.any())).thenReturn(Optional.of(repository));