-
Bug
-
Resolution: Done
-
Minor
-
8.0.0.Beta1
-
None
Hi,
suppose I have a @Stereotype with a @Transactional annotation:
@Named
@ViewScoped
@Transactional
@Stereotype
@Retention (RetentionPolicy.RUNTIME)
@Target (ElementType.TYPE)
public @interface Boundary
{ }
I annotate a CDI Bean with this stereotype
@Boundary
public class BusinessLogic {
public void doSomething()
}
If any exceptions are thrown when calling the business method, the user will get the (incorrect) info that the Class is missing a @Transactional annotation, because the Interceptor doesn't bother to look further into the Stereotype (see below).
What's worse, the interceptor is swallowing the real exeption in the process. We get the following Stacktrace:
java.lang.RuntimeException: ARJUNA016107: Expected an @Transactional annotation at class and/or method level
at com.arjuna.ats.jta.cdi.transactional.TransactionalInterceptorBase.getTransactional(TransactionalInterceptorBase.java:61)
at com.arjuna.ats.jta.cdi.transactional.TransactionalInterceptorBase.handleException(TransactionalInterceptorBase.java:96)
at com.arjuna.ats.jta.cdi.transactional.TransactionalInterceptorBase.invokeInOurTx(TransactionalInterceptorBase.java:72)
Which is pretty clear from the implementation of TransactionalInterceptorBase:
private Transactional getTransactional(InvocationContext ic) {
Transactional transactional = ic.getMethod().getAnnotation(Transactional.class);
if (transactional != null)
Class<?> targetClass = ic.getTarget().getClass();
transactional = targetClass.getAnnotation(Transactional.class); // needs to look further
if (transactional != null) { return transactional; }
throw new RuntimeException(jtaLogger.i18NLogger.get_expected_transactional_annotation()); // swallows the exception that occured at ic.proceed()
}
- is blocked by
-
WFLY-2803 Update Narayana to 5.0.0.Final
- Closed
- is cloned by
-
JBTM-2027 @Transactional not working correctly with @Stereotype wrt. Exception handling
- Closed
- is related to
-
JBTM-2927 @Transactional CDI annotation does not work in transitive way within @Stereotype
- Closed
- relates to
-
JBTM-2018 @Compensational not working correctly with @Stereotype wrt. Exception handling
- Closed