Skip to content

Commit 97cd768

Browse files
committed
Add unit test for the use case from
spring-projects#24291 : - base DAO class - concrete DAO classes, which declare different transaction managers and inherit transactional methods from the base DAO class
1 parent 06d92c1 commit 97cd768

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

spring-tx/src/test/java/org/springframework/transaction/annotation/AnnotationTransactionAttributeSourceTests.java

+48
Original file line numberDiff line numberDiff line change
@@ -384,6 +384,31 @@ public void transactionAttributeDeclaredOnGroovyClass() throws Exception {
384384
assertThat(atas.getTransactionAttribute(getMetaClassMethod, GroovyTestBean.class)).isNull();
385385
}
386386

387+
@Test
388+
public void inheritedTranactionalMethod() throws Exception {
389+
Method baseMethod = BaseDao.class.getMethod("baseMethod");
390+
391+
AnnotationTransactionAttributeSource atas = new AnnotationTransactionAttributeSource();
392+
393+
TransactionAttribute baseMethodDao1Attr = atas.getTransactionAttribute(baseMethod, Dao1.class);
394+
TransactionAttribute baseMethodDao2Attr = atas.getTransactionAttribute(baseMethod, Dao2.class);
395+
396+
assertThat(baseMethodDao1Attr.getQualifier()).isEqualTo("TxManager1");
397+
assertThat(baseMethodDao2Attr.getQualifier()).isEqualTo("TxManager2");
398+
399+
//////////////////////////////////////////////////////////////////////
400+
401+
Method specificMethodDao1 = Dao1.class.getMethod("specificMethod");
402+
Method specificMethodDao2 = Dao2.class.getMethod("specificMethod");
403+
TransactionAttribute specificMethodDao1Attr = atas.getTransactionAttribute(specificMethodDao1, Dao1.class);
404+
TransactionAttribute specificMethodDao2Attr = atas.getTransactionAttribute(specificMethodDao2, Dao2.class);
405+
406+
assertThat(specificMethodDao1Attr.getQualifier()).isEqualTo("TxManager1");
407+
assertThat(specificMethodDao2Attr.getQualifier()).isEqualTo("TxManager2");
408+
409+
assertThat(specificMethodDao1Attr.isReadOnly()).isEqualTo(false);
410+
assertThat(specificMethodDao2Attr.isReadOnly()).isEqualTo(true);
411+
}
387412

388413
interface ITestBean1 {
389414

@@ -949,4 +974,27 @@ public void setMetaClass(MetaClass metaClass) {
949974
}
950975
}
951976

977+
978+
@Transactional
979+
abstract static class BaseDao {
980+
981+
public void baseMethod() {
982+
}
983+
}
984+
985+
@Transactional("TxManager1")
986+
static class Dao1 extends BaseDao {
987+
988+
public void specificMethod() {
989+
}
990+
}
991+
992+
@Transactional("TxManager2")
993+
static class Dao2 extends BaseDao {
994+
995+
@Transactional(readOnly = true)
996+
public void specificMethod() {
997+
}
998+
}
999+
9521000
}

0 commit comments

Comments
 (0)