Resolve package cycle between repository and aot packages.

Closes #2707
This commit is contained in:
Mark Paluch
2022-10-11 11:44:45 +02:00
parent 0fe04e37f8
commit 103d41f7f4
15 changed files with 87 additions and 78 deletions

View File

@@ -19,7 +19,7 @@ import org.mockito.Mockito;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan.Filter;
import org.springframework.context.annotation.FilterType;
import org.springframework.data.aot.sample.ConfigWithTransactionManagerPresentAndAtComponentAnnotatedRepoisoty.MyComponentTxRepo;
import org.springframework.data.aot.sample.ConfigWithTransactionManagerPresentAndAtComponentAnnotatedRepository.MyComponentTxRepo;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.config.EnableRepositories;
import org.springframework.stereotype.Component;
@@ -29,9 +29,9 @@ import org.springframework.transaction.TransactionManager;
* @author Christoph Strobl
*/
@EnableRepositories(includeFilters = { @Filter(type = FilterType.ASSIGNABLE_TYPE, value = MyComponentTxRepo.class) },
basePackageClasses = ConfigWithTransactionManagerPresentAndAtComponentAnnotatedRepoisoty.class,
basePackageClasses = ConfigWithTransactionManagerPresentAndAtComponentAnnotatedRepository.class,
considerNestedRepositories = true)
public class ConfigWithTransactionManagerPresentAndAtComponentAnnotatedRepoisoty {
public class ConfigWithTransactionManagerPresentAndAtComponentAnnotatedRepository {
@Component
public interface MyComponentTxRepo extends CrudRepository<Person, String> {

View File

@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.data.aot;
package org.springframework.data.repository.aot;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.Mockito.*;
@@ -26,6 +26,7 @@ import org.assertj.core.api.AbstractAssert;
import org.springframework.aot.generate.GenerationContext;
import org.springframework.aot.test.generate.TestGenerationContext;
import org.springframework.beans.factory.aot.BeanRegistrationCode;
import org.springframework.data.aot.CodeContributionAssert;
import org.springframework.data.repository.core.RepositoryInformation;
import org.springframework.data.repository.core.support.RepositoryFragment;

View File

@@ -13,10 +13,10 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.data.aot;
package org.springframework.data.repository.aot;
import static org.assertj.core.api.Assertions.*;
import static org.springframework.data.aot.RepositoryRegistrationAotContributionAssert.*;
import static org.springframework.data.repository.aot.RepositoryRegistrationAotContributionAssert.*;
import java.io.Serializable;
@@ -36,7 +36,7 @@ import org.springframework.data.aot.sample.ConfigWithQueryMethods;
import org.springframework.data.aot.sample.ConfigWithQueryMethods.ProjectionInterface;
import org.springframework.data.aot.sample.ConfigWithSimpleCrudRepository;
import org.springframework.data.aot.sample.ConfigWithTransactionManagerPresent;
import org.springframework.data.aot.sample.ConfigWithTransactionManagerPresentAndAtComponentAnnotatedRepoisoty;
import org.springframework.data.aot.sample.ConfigWithTransactionManagerPresentAndAtComponentAnnotatedRepository;
import org.springframework.data.aot.sample.ReactiveConfig;
import org.springframework.data.domain.Page;
import org.springframework.data.repository.PagingAndSortingRepository;
@@ -103,31 +103,31 @@ public class RepositoryRegistrationAotProcessorIntegrationTests {
void simpleRepositoryWithTxManagerNoKotlinNoReactiveButComponent() {
RepositoryRegistrationAotContribution repositoryBeanContribution = computeAotConfiguration(
ConfigWithTransactionManagerPresentAndAtComponentAnnotatedRepoisoty.class)
.forRepository(ConfigWithTransactionManagerPresentAndAtComponentAnnotatedRepoisoty.MyComponentTxRepo.class);
ConfigWithTransactionManagerPresentAndAtComponentAnnotatedRepository.class).forRepository(
ConfigWithTransactionManagerPresentAndAtComponentAnnotatedRepository.MyComponentTxRepo.class);
assertThatContribution(repositoryBeanContribution) //
.targetRepositoryTypeIs(
ConfigWithTransactionManagerPresentAndAtComponentAnnotatedRepoisoty.MyComponentTxRepo.class) //
ConfigWithTransactionManagerPresentAndAtComponentAnnotatedRepository.MyComponentTxRepo.class) //
.hasNoFragments() //
.codeContributionSatisfies(contribution -> { //
contribution
.contributesReflectionFor(
ConfigWithTransactionManagerPresentAndAtComponentAnnotatedRepoisoty.MyComponentTxRepo.class) // repository
ConfigWithTransactionManagerPresentAndAtComponentAnnotatedRepository.MyComponentTxRepo.class) // repository
// interface
.contributesReflectionFor(PagingAndSortingRepository.class) // base repository
.contributesReflectionFor(
ConfigWithTransactionManagerPresentAndAtComponentAnnotatedRepoisoty.Person.class) // domain type
ConfigWithTransactionManagerPresentAndAtComponentAnnotatedRepository.Person.class) // domain type
// proxies
.contributesJdkProxy(
ConfigWithTransactionManagerPresentAndAtComponentAnnotatedRepoisoty.MyComponentTxRepo.class,
ConfigWithTransactionManagerPresentAndAtComponentAnnotatedRepository.MyComponentTxRepo.class,
SpringProxy.class, Advised.class, DecoratingProxy.class)
.contributesJdkProxy(
ConfigWithTransactionManagerPresentAndAtComponentAnnotatedRepoisoty.MyComponentTxRepo.class,
ConfigWithTransactionManagerPresentAndAtComponentAnnotatedRepository.MyComponentTxRepo.class,
Repository.class, TransactionalProxy.class, Advised.class, DecoratingProxy.class)
.contributesJdkProxy(
ConfigWithTransactionManagerPresentAndAtComponentAnnotatedRepoisoty.MyComponentTxRepo.class,
ConfigWithTransactionManagerPresentAndAtComponentAnnotatedRepository.MyComponentTxRepo.class,
Repository.class, TransactionalProxy.class, Advised.class, DecoratingProxy.class, Serializable.class);
});
}
@@ -157,10 +157,10 @@ public class RepositoryRegistrationAotProcessorIntegrationTests {
.contributesJdkProxy(ConfigWithFragments.RepositoryWithFragments.class, SpringProxy.class, Advised.class,
DecoratingProxy.class)
.doesNotContributeJdkProxy(
ConfigWithTransactionManagerPresentAndAtComponentAnnotatedRepoisoty.MyComponentTxRepo.class,
ConfigWithTransactionManagerPresentAndAtComponentAnnotatedRepository.MyComponentTxRepo.class,
Repository.class, TransactionalProxy.class, Advised.class, DecoratingProxy.class)
.doesNotContributeJdkProxy(
ConfigWithTransactionManagerPresentAndAtComponentAnnotatedRepoisoty.MyComponentTxRepo.class,
ConfigWithTransactionManagerPresentAndAtComponentAnnotatedRepository.MyComponentTxRepo.class,
Repository.class, TransactionalProxy.class, Advised.class, DecoratingProxy.class, Serializable.class);
});
}