DATACMNS-1745 - Refactor CustomAnnotationTransactionAttributeSource to use computeTransactionAttribute template method.
We now no longer duplicate Spring Framework code as AbstractFallbackTransactionAttributeSource exposes computeTransactionAttribute which we can use to override to determine TransactionAttribute from the repository interface. Renamed CustomAnnotationTransactionAttributeSource to RepositoryInformationPreferringAnnotationTransactionAttributeSource to reflect the nature of our customization.
This commit is contained in:
committed by
Oliver Drotbohm
parent
9c50f86061
commit
a76ed28fe7
@@ -18,21 +18,21 @@ package org.springframework.data.repository.core.support;
|
||||
import static org.assertj.core.api.Assertions.*;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.data.repository.core.support.TransactionalRepositoryProxyPostProcessor.CustomAnnotationTransactionAttributeSource;
|
||||
import org.springframework.data.repository.core.support.TransactionalRepositoryProxyPostProcessor.RepositoryInformationPreferringAnnotationTransactionAttributeSource;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.transaction.interceptor.TransactionAttribute;
|
||||
|
||||
/**
|
||||
* Unit tests for {@link CustomAnnotationTransactionAttributeSource}.
|
||||
* Unit tests for {@link RepositoryInformationPreferringAnnotationTransactionAttributeSource}.
|
||||
*
|
||||
* @author Oliver Gierke
|
||||
*/
|
||||
class CustomAnnotationTransactionAttributeSourceUnitTests {
|
||||
class RepositoryInformationPreferringAnnotationTransactionAttributeSourceUnitTests {
|
||||
|
||||
@Test
|
||||
void usesCustomTransactionConfigurationOnInterface() throws SecurityException, NoSuchMethodException {
|
||||
|
||||
CustomAnnotationTransactionAttributeSource source = new TransactionalRepositoryProxyPostProcessor.CustomAnnotationTransactionAttributeSource();
|
||||
RepositoryInformationPreferringAnnotationTransactionAttributeSource source = new RepositoryInformationPreferringAnnotationTransactionAttributeSource();
|
||||
|
||||
TransactionAttribute attribute = source.getTransactionAttribute(Bar.class.getMethod("bar", Object.class),
|
||||
FooImpl.class);
|
||||
@@ -31,7 +31,7 @@ import org.springframework.aop.framework.ProxyFactory;
|
||||
import org.springframework.beans.factory.ListableBeanFactory;
|
||||
import org.springframework.data.repository.Repository;
|
||||
import org.springframework.data.repository.core.RepositoryInformation;
|
||||
import org.springframework.data.repository.core.support.TransactionalRepositoryProxyPostProcessor.CustomAnnotationTransactionAttributeSource;
|
||||
import org.springframework.data.repository.core.support.TransactionalRepositoryProxyPostProcessor.RepositoryInformationPreferringAnnotationTransactionAttributeSource;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.transaction.interceptor.TransactionAttribute;
|
||||
import org.springframework.transaction.interceptor.TransactionAttributeSource;
|
||||
@@ -41,6 +41,7 @@ import org.springframework.transaction.interceptor.TransactionInterceptor;
|
||||
* Unit test for {@link TransactionalRepositoryProxyPostProcessor}.
|
||||
*
|
||||
* @author Oliver Gierke
|
||||
* @author Mark Paluch
|
||||
*/
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class TransactionRepositoryProxyPostProcessorUnitTests {
|
||||
@@ -86,7 +87,7 @@ class TransactionRepositoryProxyPostProcessorUnitTests {
|
||||
|
||||
Method method = SampleRepository.class.getMethod("methodWithJtaOneDotTwoAtTransactional");
|
||||
|
||||
TransactionAttributeSource attributeSource = new CustomAnnotationTransactionAttributeSource();
|
||||
TransactionAttributeSource attributeSource = new RepositoryInformationPreferringAnnotationTransactionAttributeSource();
|
||||
TransactionAttribute attribute = attributeSource.getTransactionAttribute(method, SampleRepository.class);
|
||||
|
||||
assertThat(attribute).isNotNull();
|
||||
@@ -99,8 +100,8 @@ class TransactionRepositoryProxyPostProcessorUnitTests {
|
||||
|
||||
when(repositoryInformation.getTargetClassMethod(repositorySaveMethod)).thenReturn(implementationClassMethod);
|
||||
|
||||
CustomAnnotationTransactionAttributeSource attributeSource = new CustomAnnotationTransactionAttributeSource();
|
||||
attributeSource.setRepositoryInformation(repositoryInformation);
|
||||
RepositoryInformationPreferringAnnotationTransactionAttributeSource attributeSource = new RepositoryInformationPreferringAnnotationTransactionAttributeSource(
|
||||
true, repositoryInformation);
|
||||
|
||||
TransactionAttribute attribute = attributeSource.getTransactionAttribute(repositorySaveMethod,
|
||||
SampleImplementation.class);
|
||||
|
||||
Reference in New Issue
Block a user