diff --git a/pom.xml b/pom.xml index afeba53..a2823af 100644 --- a/pom.xml +++ b/pom.xml @@ -72,9 +72,26 @@ com.inteligr8.alfresco aspectj-platform-module - 1.0.0 + 1.0.1 amp - provided + + + + + org.aspectj + aspectjweaver + ${aspectj.version} + test + + + + + jakarta.transaction + jakarta.transaction-api + + + org.springframework + spring-tx diff --git a/src/main/java/com/inteligr8/alfresco/annotations/TransactionalWrapper.java b/src/main/java/com/inteligr8/alfresco/annotations/TransactionalWrapper.java index c662e1f..41f0397 100644 --- a/src/main/java/com/inteligr8/alfresco/annotations/TransactionalWrapper.java +++ b/src/main/java/com/inteligr8/alfresco/annotations/TransactionalWrapper.java @@ -19,9 +19,18 @@ public class TransactionalWrapper { this.jtxl = txl; } - public TransactionalWrapper(Method method) { - this.stxl = method.getAnnotation(Transactional.class); - this.jtxl = method.getAnnotation(javax.transaction.Transactional.class); + public static TransactionalWrapper wrap(Method method) { + Transactional stxl = method.getAnnotation(Transactional.class); + javax.transaction.Transactional jtxl = method.getAnnotation(javax.transaction.Transactional.class); + if (stxl == null && jtxl == null) { + return null; + } else if (stxl != null) { + return new TransactionalWrapper(stxl); + } else if (jtxl != null) { + return new TransactionalWrapper(jtxl); + } else { + throw new IllegalStateException("This should never happen"); + } } public boolean isReadOnly() { diff --git a/src/main/java/com/inteligr8/alfresco/annotations/aspect/RetryingTransactionAspect.java b/src/main/java/com/inteligr8/alfresco/annotations/aspect/RetryingTransactionAspect.java index dd6528c..2e83d92 100644 --- a/src/main/java/com/inteligr8/alfresco/annotations/aspect/RetryingTransactionAspect.java +++ b/src/main/java/com/inteligr8/alfresco/annotations/aspect/RetryingTransactionAspect.java @@ -46,20 +46,24 @@ public class RetryingTransactionAspect { @Autowired private TransactionService txService; - @Pointcut("@annotation(org.springframework.transaction.annotation.Transactional || javax.transaction.Transactional) && execution(* *(..))") + @Pointcut("@annotation(org.springframework.transaction.annotation.Transactional) && execution(* *(..))") public void isTransactionalAnnotated() { } + @Pointcut("@annotation(javax.transaction.Transactional) && execution(* *(..))") + public void isJtaTransactionalAnnotated() { + } + @Pointcut("@annotation(com.inteligr8.alfresco.annotations.TransactionalRetryable) && execution(* *(..))") public void isTransactionalRetryableAnnotated() { } - @Around("isTransactionalAnnotated() || isTransactionalRetryableAnnotated()") + @Around("isTransactionalAnnotated() || isJtaTransactionalAnnotated() || isTransactionalRetryableAnnotated()") public Object retryingTransactional(ProceedingJoinPoint joinPoint) throws Throwable { this.logger.trace("retryingTransactional({})", joinPoint); Method method = this.getMethod(joinPoint); - TransactionalWrapper txl = new TransactionalWrapper(method); + TransactionalWrapper txl = TransactionalWrapper.wrap(method); TransactionalRetryable txtry = method.getAnnotation(TransactionalRetryable.class); if (this.doCreateNewTxContext(txl) || this.isReadStateChange(txl)) {