From a07079f17d5b07a24622bff467d1d49f29f3f325 Mon Sep 17 00:00:00 2001 From: "Brian M. Long" Date: Thu, 14 Nov 2024 11:16:28 -0500 Subject: [PATCH] fix RetryingTransactionAspect --- .../AbstractRetryingTransactionAspect.java | 29 ++++++++++--------- core/src/main/resources/META-INF/aop.xml | 2 -- .../aspect/RetryingTransactionAspect.java | 17 +++++++++++ jakarta/src/main/resources/META-INF/aop.xml | 5 ++++ .../aspect/RetryingTransactionAspect.java | 17 +++++++++++ javax/src/main/resources/META-INF/aop.xml | 5 ++++ 6 files changed, 60 insertions(+), 15 deletions(-) create mode 100644 jakarta/src/main/resources/META-INF/aop.xml create mode 100644 javax/src/main/resources/META-INF/aop.xml diff --git a/core/src/main/java/com/inteligr8/alfresco/annotations/aspect/AbstractRetryingTransactionAspect.java b/core/src/main/java/com/inteligr8/alfresco/annotations/aspect/AbstractRetryingTransactionAspect.java index f4d9859..73ab85c 100644 --- a/core/src/main/java/com/inteligr8/alfresco/annotations/aspect/AbstractRetryingTransactionAspect.java +++ b/core/src/main/java/com/inteligr8/alfresco/annotations/aspect/AbstractRetryingTransactionAspect.java @@ -9,9 +9,6 @@ import org.alfresco.repo.transaction.RetryingTransactionHelper; import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.service.transaction.TransactionService; import org.aspectj.lang.ProceedingJoinPoint; -import org.aspectj.lang.annotation.Around; -import org.aspectj.lang.annotation.DeclarePrecedence; -import org.aspectj.lang.annotation.Pointcut; import org.aspectj.lang.reflect.MethodSignature; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -41,7 +38,6 @@ import com.inteligr8.alfresco.annotations.util.TransactionalAnnotationAdapter; * @see org.springframework.transaction.annotation.Transactional * @see com.inteligr8.alfresco.annotations.TransactionalRetryable */ -@DeclarePrecedence("com.inteligr8.alfresco.annotations.aspect.AuthorizedAspect, com.inteligr8.alfresco.annotations.aspect.RetryingTransactionAspect") public abstract class AbstractRetryingTransactionAspect { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @@ -54,17 +50,24 @@ public abstract class AbstractRetryingTransactionAspect { public abstract String getJtaInterfaceName(); - @Pointcut("@annotation(org.springframework.transaction.annotation.Transactional) && execution(* *(..))") - public void isTransactionalAnnotated() { - } + /** + * A @Pointcunt annotation is not recognized in super classes. + */ + //@Pointcut("@annotation(org.springframework.transaction.annotation.Transactional) && execution(* *(..))") + public abstract void isTransactionalAnnotated(); public abstract void isJtaTransactionalAnnotated(); - - @Pointcut("@annotation(com.inteligr8.alfresco.annotations.TransactionalRetryable) && execution(* *(..))") - public void isTransactionalRetryableAnnotated() { - } - - @Around("isTransactionalAnnotated() || isJtaTransactionalAnnotated() || isTransactionalRetryableAnnotated()") + + /** + * A @Pointcunt annotation is not recognized in super classes. + */ + //@Pointcut("@annotation(com.inteligr8.alfresco.annotations.TransactionalRetryable) && execution(* *(..))") + public abstract void isTransactionalRetryableAnnotated(); + + /** + * An @Around annotation is not recognized in super classes. + */ + //@Around("isTransactionalAnnotated() || isJtaTransactionalAnnotated() || isTransactionalRetryableAnnotated()") public Object retryingTransactional(ProceedingJoinPoint joinPoint) throws Throwable { this.logger.trace("retryingTransactional({})", joinPoint); diff --git a/core/src/main/resources/META-INF/aop.xml b/core/src/main/resources/META-INF/aop.xml index 0e07e13..71b86ab 100644 --- a/core/src/main/resources/META-INF/aop.xml +++ b/core/src/main/resources/META-INF/aop.xml @@ -13,7 +13,5 @@ - - \ No newline at end of file diff --git a/jakarta/src/main/java/com/inteligr8/alfresco/annotations/aspect/RetryingTransactionAspect.java b/jakarta/src/main/java/com/inteligr8/alfresco/annotations/aspect/RetryingTransactionAspect.java index 19a8d61..6faf278 100644 --- a/jakarta/src/main/java/com/inteligr8/alfresco/annotations/aspect/RetryingTransactionAspect.java +++ b/jakarta/src/main/java/com/inteligr8/alfresco/annotations/aspect/RetryingTransactionAspect.java @@ -1,6 +1,9 @@ package com.inteligr8.alfresco.annotations.aspect; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.DeclarePrecedence; import org.aspectj.lang.annotation.Pointcut; import jakarta.transaction.Transactional; @@ -9,6 +12,7 @@ import jakarta.transaction.Transactional; * @see jakarta.transaction.Transactional */ @Aspect +@DeclarePrecedence("com.inteligr8.alfresco.annotations.aspect.AuthorizedAspect, com.inteligr8.alfresco.annotations.aspect.RetryingTransactionAspect") public class RetryingTransactionAspect extends AbstractRetryingTransactionAspect { @Override @@ -16,8 +20,21 @@ public class RetryingTransactionAspect extends AbstractRetryingTransactionAspect return Transactional.class.getName(); } + @Pointcut("@annotation(org.springframework.transaction.annotation.Transactional) && execution(* *(..))") + public void isTransactionalAnnotated() { + } + @Pointcut("@annotation(jakarta.transaction.Transactional) && execution(* *(..))") public void isJtaTransactionalAnnotated() { } + + @Pointcut("@annotation(com.inteligr8.alfresco.annotations.TransactionalRetryable) && execution(* *(..))") + public void isTransactionalRetryableAnnotated() { + } + + @Around("isTransactionalAnnotated() || isJtaTransactionalAnnotated() || isTransactionalRetryableAnnotated()") + public Object retryingTransactional(ProceedingJoinPoint joinPoint) throws Throwable { + return super.retryingTransactional(joinPoint); + } } diff --git a/jakarta/src/main/resources/META-INF/aop.xml b/jakarta/src/main/resources/META-INF/aop.xml new file mode 100644 index 0000000..a6e955a --- /dev/null +++ b/jakarta/src/main/resources/META-INF/aop.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/javax/src/main/java/com/inteligr8/alfresco/annotations/aspect/RetryingTransactionAspect.java b/javax/src/main/java/com/inteligr8/alfresco/annotations/aspect/RetryingTransactionAspect.java index 2d655d1..5bcbb83 100644 --- a/javax/src/main/java/com/inteligr8/alfresco/annotations/aspect/RetryingTransactionAspect.java +++ b/javax/src/main/java/com/inteligr8/alfresco/annotations/aspect/RetryingTransactionAspect.java @@ -1,12 +1,16 @@ package com.inteligr8.alfresco.annotations.aspect; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.DeclarePrecedence; import org.aspectj.lang.annotation.Pointcut; /** * @see javax.transaction.Transactional */ @Aspect +@DeclarePrecedence("com.inteligr8.alfresco.annotations.aspect.AuthorizedAspect, com.inteligr8.alfresco.annotations.aspect.RetryingTransactionAspect") public class RetryingTransactionAspect extends AbstractRetryingTransactionAspect { @Override @@ -14,8 +18,21 @@ public class RetryingTransactionAspect extends AbstractRetryingTransactionAspect return javax.transaction.Transactional.class.getName(); } + @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() || isJtaTransactionalAnnotated() || isTransactionalRetryableAnnotated()") + public Object retryingTransactional(ProceedingJoinPoint joinPoint) throws Throwable { + return super.retryingTransactional(joinPoint); + } } diff --git a/javax/src/main/resources/META-INF/aop.xml b/javax/src/main/resources/META-INF/aop.xml new file mode 100644 index 0000000..a6e955a --- /dev/null +++ b/javax/src/main/resources/META-INF/aop.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file