@ -17,6 +17,7 @@
@@ -17,6 +17,7 @@
package org.springframework.transaction.annotation ;
import java.util.Map ;
import javax.annotation.PostConstruct ;
import org.junit.Test ;
@ -43,52 +44,49 @@ import static org.junit.Assert.*;
@@ -43,52 +44,49 @@ import static org.junit.Assert.*;
*
* @author Chris Beams
* @author Stephane Nicoll
* @author Sam Brannen
* @since 3 . 1
* /
public class EnableTransactionManagementTests {
@Test
public void transactionProxyIsCreated ( ) {
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext ( ) ;
ctx . register ( EnableTxConfig . class , TxManagerConfig . class ) ;
ctx . refresh ( ) ;
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext ( EnableTxConfig . class , TxManagerConfig . class ) ;
TransactionalTestBean bean = ctx . getBean ( TransactionalTestBean . class ) ;
assertThat ( "testBean is not a proxy" , AopUtils . isAopProxy ( bean ) , is ( true ) ) ;
assertTrue ( "testBean is not a proxy" , AopUtils . isAopProxy ( bean ) ) ;
Map < ? , ? > services = ctx . getBeansWithAnnotation ( Service . class ) ;
assertThat ( "Stereotype annotation not visible" , services . containsKey ( "testBean" ) , is ( true ) ) ;
assertTrue ( "Stereotype annotation not visible" , services . containsKey ( "testBean" ) ) ;
ctx . close ( ) ;
}
@Test
public void transactionProxyIsCreatedWithEnableOnSuperclass ( ) {
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext ( ) ;
ctx . register ( InheritedEnableTxConfig . class , TxManagerConfig . class ) ;
ctx . refresh ( ) ;
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext ( InheritedEnableTxConfig . class , TxManagerConfig . class ) ;
TransactionalTestBean bean = ctx . getBean ( TransactionalTestBean . class ) ;
assertThat ( "testBean is not a proxy" , AopUtils . isAopProxy ( bean ) , is ( true ) ) ;
assertTrue ( "testBean is not a proxy" , AopUtils . isAopProxy ( bean ) ) ;
Map < ? , ? > services = ctx . getBeansWithAnnotation ( Service . class ) ;
assertThat ( "Stereotype annotation not visible" , services . containsKey ( "testBean" ) , is ( true ) ) ;
assertTrue ( "Stereotype annotation not visible" , services . containsKey ( "testBean" ) ) ;
ctx . close ( ) ;
}
@Test
public void txManagerIsResolvedOnInvocationOfTransactionalMethod ( ) {
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext ( ) ;
ctx . register ( EnableTxConfig . class , TxManagerConfig . class ) ;
ctx . refresh ( ) ;
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext ( EnableTxConfig . class , TxManagerConfig . class ) ;
TransactionalTestBean bean = ctx . getBean ( TransactionalTestBean . class ) ;
// invoke a transactional method, causing the PlatformTransactionManager bean to be resolved.
bean . findAllFoos ( ) ;
ctx . close ( ) ;
}
@Test
public void txManagerIsResolvedCorrectlyWhenMultipleManagersArePresent ( ) {
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext ( ) ;
ctx . register ( EnableTxConfig . class , MultiTxManagerConfig . class ) ;
ctx . refresh ( ) ;
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext ( EnableTxConfig . class , MultiTxManagerConfig . class ) ;
TransactionalTestBean bean = ctx . getBean ( TransactionalTestBean . class ) ;
// invoke a transactional method, causing the PlatformTransactionManager bean to be resolved.
bean . findAllFoos ( ) ;
ctx . close ( ) ;
}
/ * *
@ -103,33 +101,35 @@ public class EnableTransactionManagementTests {
@@ -103,33 +101,35 @@ public class EnableTransactionManagementTests {
"Do you actually have org.springframework.aspects on the classpath?" ) ;
}
catch ( Exception ex ) {
assertThat ( ex . getMessage ( ) . contains ( "AspectJTransactionManagementConfiguration" ) , is ( true ) ) ;
assertThat ( ex . getMessage ( ) , containsString ( "AspectJTransactionManagementConfiguration" ) ) ;
}
}
@Test
public void transactionalEventListenerRegisteredProperly ( ) {
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext ( ) ;
ctx . register ( EnableTxConfig . class ) ;
ctx . refresh ( ) ;
assertTrue ( ctx . containsBean ( TransactionManagementConfigUtils
. TRANSACTIONAL_EVENT_LISTENER_FACTORY_BEAN_NAME ) ) ;
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext ( EnableTxConfig . class ) ;
assertTrue ( ctx . containsBean ( TransactionManagementConfigUtils . TRANSACTIONAL_EVENT_LISTENER_FACTORY_BEAN_NAME ) ) ;
assertEquals ( 1 , ctx . getBeansOfType ( TransactionalEventListenerFactory . class ) . size ( ) ) ;
ctx . close ( ) ;
}
@Test
public void spr11915 ( ) {
AnnotationConfigApplicationContext ctx =
new AnnotationConfigApplicationContext ( Spr11915Config . class ) ;
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext ( Spr11915Config . class ) ;
TransactionalTestBean bean = ctx . getBean ( TransactionalTestBean . class ) ;
bean . saveQualifiedFoo ( ) ;
CallCountingTransactionManager txManager = ctx . getBean ( "qualifiedTransactionManager" , CallCountingTransactionManager . class ) ;
CallCountingTransactionManager txManager = ctx
. getBean ( "qualifiedTransactionManager" , CallCountingTransactionManager . class ) ;
bean . saveQualifiedFoo ( ) ;
assertThat ( txManager . begun , equalTo ( 1 ) ) ;
assertThat ( txManager . commits , equalTo ( 1 ) ) ;
assertThat ( txManager . rollbacks , equalTo ( 0 ) ) ;
bean . saveQualifiedFooWithAttributeAlias ( ) ;
assertThat ( txManager . begun , equalTo ( 2 ) ) ;
assertThat ( txManager . commits , equalTo ( 2 ) ) ;
assertThat ( txManager . rollbacks , equalTo ( 0 ) ) ;
ctx . close ( ) ;
}
@ -138,12 +138,10 @@ public class EnableTransactionManagementTests {
@@ -138,12 +138,10 @@ public class EnableTransactionManagementTests {
static class EnableTxConfig {
}
@Configuration
static class InheritedEnableTxConfig extends EnableTxConfig {
}
@Configuration
@EnableTransactionManagement ( mode = AdviceMode . ASPECTJ )
static class EnableAspectJTxConfig {
@ -168,7 +166,6 @@ public class EnableTransactionManagementTests {
@@ -168,7 +166,6 @@ public class EnableTransactionManagementTests {
}
}
@Configuration
static class TxManagerConfig {
@ -184,7 +181,6 @@ public class EnableTransactionManagementTests {
@@ -184,7 +181,6 @@ public class EnableTransactionManagementTests {
}
@Configuration
static class MultiTxManagerConfig extends TxManagerConfig implements TransactionManagementConfigurer {
@ -198,4 +194,5 @@ public class EnableTransactionManagementTests {
@@ -198,4 +194,5 @@ public class EnableTransactionManagementTests {
return txManager2 ( ) ;
}
}
}