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)) {