From c5c38c6664d65a76d4a1c3880c73383b06f5a89b Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Mon, 8 Feb 2010 18:32:38 +0000 Subject: [PATCH] non-matching @Transactional qualifier value will lead to IllegalStateException (SPR-6810) --- .../interceptor/TransactionAspectSupport.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/org.springframework.transaction/src/main/java/org/springframework/transaction/interceptor/TransactionAspectSupport.java b/org.springframework.transaction/src/main/java/org/springframework/transaction/interceptor/TransactionAspectSupport.java index 5c1d2dd675..02bd94b64d 100644 --- a/org.springframework.transaction/src/main/java/org/springframework/transaction/interceptor/TransactionAspectSupport.java +++ b/org.springframework.transaction/src/main/java/org/springframework/transaction/interceptor/TransactionAspectSupport.java @@ -247,7 +247,6 @@ public abstract class TransactionAspectSupport implements BeanFactoryAware, Init if (this.transactionManager != null || this.beanFactory == null) { return this.transactionManager; } - PlatformTransactionManager chosen = null; String qualifier = txAttr.getQualifier(); if (StringUtils.hasLength(qualifier)) { if (!(this.beanFactory instanceof ConfigurableListableBeanFactory)) { @@ -257,6 +256,7 @@ public abstract class TransactionAspectSupport implements BeanFactoryAware, Init ConfigurableListableBeanFactory bf = (ConfigurableListableBeanFactory) this.beanFactory; Map tms = BeanFactoryUtils.beansOfTypeIncludingAncestors(bf, PlatformTransactionManager.class); + PlatformTransactionManager chosen = null; for (String beanName : tms.keySet()) { if (bf.containsBeanDefinition(beanName)) { BeanDefinition bd = bf.getBeanDefinition(beanName); @@ -274,9 +274,13 @@ public abstract class TransactionAspectSupport implements BeanFactoryAware, Init } } } - } - if (chosen != null) { - return chosen; + if (chosen != null) { + return chosen; + } + else { + throw new IllegalStateException( + "No matching PlatformTransactionManager bean found for qualifier '" + qualifier + "'"); + } } else if (this.transactionManagerBeanName != null) { return this.beanFactory.getBean(this.transactionManagerBeanName, PlatformTransactionManager.class);