@ -23,12 +23,10 @@ import java.lang.annotation.Retention;
@@ -23,12 +23,10 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy ;
import java.lang.annotation.Target ;
import java.lang.reflect.Method ;
import javax.ejb.TransactionAttributeType ;
import static org.junit.Assert.* ;
import org.junit.Test ;
import org.springframework.aop.framework.Advised ;
import org.springframework.aop.framework.ProxyFactory ;
import org.springframework.core.annotation.AnnotationUtils ;
@ -40,6 +38,8 @@ import org.springframework.transaction.interceptor.TransactionAttribute;
@@ -40,6 +38,8 @@ import org.springframework.transaction.interceptor.TransactionAttribute;
import org.springframework.transaction.interceptor.TransactionInterceptor ;
import org.springframework.util.SerializationTestUtils ;
import static org.junit.Assert.* ;
/ * *
* @author Colin Sampaleanu
* @author Juergen Hoeller
@ -257,7 +257,7 @@ public class AnnotationTransactionAttributeSourceTests {
@@ -257,7 +257,7 @@ public class AnnotationTransactionAttributeSourceTests {
@Test
public void customClassAttributeWithReadOnlyOverrideOnInterface ( ) throws Exception {
Method method = TestBean 9 . class . getMethod ( "getAge" , ( Class [ ] ) null ) ;
Method method = TestInterface 9 . class . getMethod ( "getAge" , ( Class [ ] ) null ) ;
Transactional annotation = AnnotationUtils . findAnnotation ( method , Transactional . class ) ;
assertNull ( "AnnotationUtils.findAnnotation should not find @Transactional for TestBean9.getAge()" , annotation ) ;
@ -265,45 +265,37 @@ public class AnnotationTransactionAttributeSourceTests {
@@ -265,45 +265,37 @@ public class AnnotationTransactionAttributeSourceTests {
assertNotNull ( "AnnotationUtils.findAnnotation failed to find @Transactional for TestBean9" , annotation ) ;
AnnotationTransactionAttributeSource atas = new AnnotationTransactionAttributeSource ( ) ;
TransactionAttribute txAttribute = atas . getTransactionAttribute ( method , TestBean9 . class ) ;
// SpringTransactionAnnotationParser currently uses
// AnnotatedElementUtils.getAnnotationAttributes() which does not support
// meta-annotations on interfaces.
assertNull ( "Retrieved TransactionAttribute for TestBean9" , txAttribute ) ;
TransactionAttribute actual = atas . getTransactionAttribute ( method , TestBean9 . class ) ;
assertNotNull ( "Retrieved TransactionAttribute for TestBean9" , actual ) ;
// RuleBasedTransactionAttribute rbta = new RuleBasedTransactionAttribute();
// rbta.getRollbackRules().add(new RollbackRuleAttribute(Exception.class));
// rbta.getRollbackRules().add(new NoRollbackRuleAttribute(IOException.class));
// assertEquals(rbta.getRollbackRules(), ((RuleBasedTransactionAttribute)
// txAttribute).getRollbackRules());
//
// assertTrue(txAttribute.isReadOnly());
RuleBasedTransactionAttribute rbta = new RuleBasedTransactionAttribute ( ) ;
rbta . getRollbackRules ( ) . add ( new RollbackRuleAttribute ( Exception . class ) ) ;
rbta . getRollbackRules ( ) . add ( new NoRollbackRuleAttribute ( IOException . class ) ) ;
assertEquals ( rbta . getRollbackRules ( ) , ( ( RuleBasedTransactionAttribute ) actual ) . getRollbackRules ( ) ) ;
assertTrue ( actual . isReadOnly ( ) ) ;
}
@Test
public void customMethodAttributeWithReadOnlyOverrideOnInterface ( ) throws Exception {
Method method = TestBean 10 . class . getMethod ( "getAge" , ( Class [ ] ) null ) ;
Method method = TestInterface 10 . class . getMethod ( "getAge" , ( Class [ ] ) null ) ;
Transactional annotation = AnnotationUtils . findAnnotation ( method , Transactional . class ) ;
assertNotNull ( "AnnotationUtils.findAnnotation failed to find @Transactional for TestBean10.getAge()" ,
annotation ) ;
annotation ) ;
annotation = AnnotationUtils . findAnnotation ( TestBean10 . class , Transactional . class ) ;
assertNull ( "AnnotationUtils.findAnnotation should not find @Transactional for TestBean10" , annotation ) ;
AnnotationTransactionAttributeSource atas = new AnnotationTransactionAttributeSource ( ) ;
TransactionAttribute txAttribute = atas . getTransactionAttribute ( method , TestBean10 . class ) ;
// SpringTransactionAnnotationParser currently uses
// AnnotatedElementUtils.getAnnotationAttributes() which does not support
// meta-annotations on interfaces.
assertNull ( "Retrieved TransactionAttribute for TestBean10" , txAttribute ) ;
// RuleBasedTransactionAttribute rbta = new RuleBasedTransactionAttribute();
// rbta.getRollbackRules().add(new RollbackRuleAttribute(Exception.class));
// rbta.getRollbackRules().add(new NoRollbackRuleAttribute(IOException.class));
// assertEquals(rbta.getRollbackRules(), ((RuleBasedTransactionAttribute)
// txAttribute).getRollbackRules());
//
// assertTrue(txAttribute.isReadOnly());
TransactionAttribute actual = atas . getTransactionAttribute ( method , TestBean10 . class ) ;
assertNotNull ( "Retrieved TransactionAttribute for TestBean10" , actual ) ;
RuleBasedTransactionAttribute rbta = new RuleBasedTransactionAttribute ( ) ;
rbta . getRollbackRules ( ) . add ( new RollbackRuleAttribute ( Exception . class ) ) ;
rbta . getRollbackRules ( ) . add ( new NoRollbackRuleAttribute ( IOException . class ) ) ;
assertEquals ( rbta . getRollbackRules ( ) , ( ( RuleBasedTransactionAttribute ) actual ) . getRollbackRules ( ) ) ;
assertTrue ( actual . isReadOnly ( ) ) ;
}
@Test