Consider target transaction manager for reactive transaction decision
Closes gh-23832
This commit is contained in:
@@ -28,6 +28,7 @@ import org.springframework.lang.Nullable;
|
||||
import org.springframework.transaction.PlatformTransactionManager;
|
||||
import org.springframework.transaction.TransactionDefinition;
|
||||
import org.springframework.transaction.TransactionException;
|
||||
import org.springframework.transaction.TransactionManager;
|
||||
import org.springframework.transaction.TransactionStatus;
|
||||
import org.springframework.util.SerializationTestUtils;
|
||||
|
||||
@@ -42,12 +43,13 @@ import static org.mockito.Mockito.verify;
|
||||
* Mock object based tests for TransactionInterceptor.
|
||||
*
|
||||
* @author Rod Johnson
|
||||
* @author Juergen Hoeller
|
||||
* @since 16.03.2003
|
||||
*/
|
||||
public class TransactionInterceptorTests extends AbstractTransactionAspectTests {
|
||||
|
||||
@Override
|
||||
protected Object advised(Object target, PlatformTransactionManager ptm, TransactionAttributeSource[] tas) throws Exception {
|
||||
protected Object advised(Object target, PlatformTransactionManager ptm, TransactionAttributeSource[] tas) {
|
||||
TransactionInterceptor ti = new TransactionInterceptor();
|
||||
ti.setTransactionManager(ptm);
|
||||
ti.setTransactionAttributeSources(tas);
|
||||
@@ -214,14 +216,14 @@ public class TransactionInterceptorTests extends AbstractTransactionAspectTests
|
||||
|
||||
DefaultTransactionAttribute attribute = new DefaultTransactionAttribute();
|
||||
attribute.setQualifier("fooTransactionManager");
|
||||
PlatformTransactionManager actual = ti.determineTransactionManager(attribute);
|
||||
TransactionManager actual = ti.determineTransactionManager(attribute);
|
||||
assertThat(actual).isSameAs(txManager);
|
||||
|
||||
// Call again, should be cached
|
||||
PlatformTransactionManager actual2 = ti.determineTransactionManager(attribute);
|
||||
TransactionManager actual2 = ti.determineTransactionManager(attribute);
|
||||
assertThat(actual2).isSameAs(txManager);
|
||||
verify(beanFactory, times(1)).containsBean("fooTransactionManager");
|
||||
verify(beanFactory, times(1)).getBean("fooTransactionManager", PlatformTransactionManager.class);
|
||||
verify(beanFactory, times(1)).getBean("fooTransactionManager", TransactionManager.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -233,13 +235,13 @@ public class TransactionInterceptorTests extends AbstractTransactionAspectTests
|
||||
PlatformTransactionManager txManager = associateTransactionManager(beanFactory, "fooTransactionManager");
|
||||
|
||||
DefaultTransactionAttribute attribute = new DefaultTransactionAttribute();
|
||||
PlatformTransactionManager actual = ti.determineTransactionManager(attribute);
|
||||
TransactionManager actual = ti.determineTransactionManager(attribute);
|
||||
assertThat(actual).isSameAs(txManager);
|
||||
|
||||
// Call again, should be cached
|
||||
PlatformTransactionManager actual2 = ti.determineTransactionManager(attribute);
|
||||
TransactionManager actual2 = ti.determineTransactionManager(attribute);
|
||||
assertThat(actual2).isSameAs(txManager);
|
||||
verify(beanFactory, times(1)).getBean("fooTransactionManager", PlatformTransactionManager.class);
|
||||
verify(beanFactory, times(1)).getBean("fooTransactionManager", TransactionManager.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -248,16 +250,16 @@ public class TransactionInterceptorTests extends AbstractTransactionAspectTests
|
||||
TransactionInterceptor ti = simpleTransactionInterceptor(beanFactory);
|
||||
|
||||
PlatformTransactionManager txManager = mock(PlatformTransactionManager.class);
|
||||
given(beanFactory.getBean(PlatformTransactionManager.class)).willReturn(txManager);
|
||||
given(beanFactory.getBean(TransactionManager.class)).willReturn(txManager);
|
||||
|
||||
DefaultTransactionAttribute attribute = new DefaultTransactionAttribute();
|
||||
PlatformTransactionManager actual = ti.determineTransactionManager(attribute);
|
||||
TransactionManager actual = ti.determineTransactionManager(attribute);
|
||||
assertThat(actual).isSameAs(txManager);
|
||||
|
||||
// Call again, should be cached
|
||||
PlatformTransactionManager actual2 = ti.determineTransactionManager(attribute);
|
||||
TransactionManager actual2 = ti.determineTransactionManager(attribute);
|
||||
assertThat(actual2).isSameAs(txManager);
|
||||
verify(beanFactory, times(1)).getBean(PlatformTransactionManager.class);
|
||||
verify(beanFactory, times(1)).getBean(TransactionManager.class);
|
||||
}
|
||||
|
||||
|
||||
@@ -299,7 +301,7 @@ public class TransactionInterceptorTests extends AbstractTransactionAspectTests
|
||||
private PlatformTransactionManager associateTransactionManager(BeanFactory beanFactory, String name) {
|
||||
PlatformTransactionManager transactionManager = mock(PlatformTransactionManager.class);
|
||||
given(beanFactory.containsBean(name)).willReturn(true);
|
||||
given(beanFactory.getBean(name, PlatformTransactionManager.class)).willReturn(transactionManager);
|
||||
given(beanFactory.getBean(name, TransactionManager.class)).willReturn(transactionManager);
|
||||
return transactionManager;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user