From c46bcc0a9d8f09c7f81bd391f1d2c518c46a910d Mon Sep 17 00:00:00 2001 From: xstefank Date: Wed, 23 Sep 2020 14:39:07 +0200 Subject: [PATCH] JBTM-3360 ServerLRAFilter is relying on the wrong RESTEasy behavior --- .../internal/proxy/nonjaxrs/LRAParticipant.java | 1 + .../java/io/narayana/lra}/AnnotationResolver.java | 2 +- .../io/narayana/lra/filter/ServerLRAFilter.java | 15 ++++++++------- 3 files changed, 10 insertions(+), 8 deletions(-) rename rts/lra/{lra-proxy/api/src/main/java/io/narayana/lra/client/internal/proxy/nonjaxrs => lra-service-base/src/main/java/io/narayana/lra}/AnnotationResolver.java (98%) diff --git a/rts/lra/lra-proxy/api/src/main/java/io/narayana/lra/client/internal/proxy/nonjaxrs/LRAParticipant.java b/rts/lra/lra-proxy/api/src/main/java/io/narayana/lra/client/internal/proxy/nonjaxrs/LRAParticipant.java index d62aafbefd..1d323746b2 100644 --- a/rts/lra/lra-proxy/api/src/main/java/io/narayana/lra/client/internal/proxy/nonjaxrs/LRAParticipant.java +++ b/rts/lra/lra-proxy/api/src/main/java/io/narayana/lra/client/internal/proxy/nonjaxrs/LRAParticipant.java @@ -21,6 +21,7 @@ */ package io.narayana.lra.client.internal.proxy.nonjaxrs; +import io.narayana.lra.AnnotationResolver; import io.narayana.lra.logging.LRALogger; import org.eclipse.microprofile.lra.annotation.AfterLRA; import org.eclipse.microprofile.lra.annotation.Compensate; diff --git a/rts/lra/lra-proxy/api/src/main/java/io/narayana/lra/client/internal/proxy/nonjaxrs/AnnotationResolver.java b/rts/lra/lra-service-base/src/main/java/io/narayana/lra/AnnotationResolver.java similarity index 98% rename from rts/lra/lra-proxy/api/src/main/java/io/narayana/lra/client/internal/proxy/nonjaxrs/AnnotationResolver.java rename to rts/lra/lra-service-base/src/main/java/io/narayana/lra/AnnotationResolver.java index 10043f6523..78444005bb 100644 --- a/rts/lra/lra-proxy/api/src/main/java/io/narayana/lra/client/internal/proxy/nonjaxrs/AnnotationResolver.java +++ b/rts/lra/lra-service-base/src/main/java/io/narayana/lra/AnnotationResolver.java @@ -19,7 +19,7 @@ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ -package io.narayana.lra.client.internal.proxy.nonjaxrs; +package io.narayana.lra; import java.lang.annotation.Annotation; import java.lang.reflect.Method; diff --git a/rts/lra/narayana-lra/src/main/java/io/narayana/lra/filter/ServerLRAFilter.java b/rts/lra/narayana-lra/src/main/java/io/narayana/lra/filter/ServerLRAFilter.java index 72dcf7f433..d9f5d8513a 100644 --- a/rts/lra/narayana-lra/src/main/java/io/narayana/lra/filter/ServerLRAFilter.java +++ b/rts/lra/narayana-lra/src/main/java/io/narayana/lra/filter/ServerLRAFilter.java @@ -21,6 +21,7 @@ */ package io.narayana.lra.filter; +import io.narayana.lra.AnnotationResolver; import io.narayana.lra.Current; import io.narayana.lra.client.NarayanaLRAClient; import io.narayana.lra.client.internal.proxy.nonjaxrs.LRAParticipant; @@ -117,7 +118,7 @@ public void filter(ContainerRequestContext containerRequestContext) { Method method = resourceInfo.getResourceMethod(); MultivaluedMap headers = containerRequestContext.getHeaders(); LRA.Type type = null; - LRA transactional = method.getDeclaredAnnotation(LRA.class); + LRA transactional = AnnotationResolver.resolveAnnotation(LRA.class, method); URI lraId; URI newLRA = null; Long timeout = null; @@ -151,11 +152,11 @@ public void filter(ContainerRequestContext containerRequestContext) { } } - boolean endAnnotation = method.isAnnotationPresent(Complete.class) - || method.isAnnotationPresent(Compensate.class) - || method.isAnnotationPresent(Leave.class) - || method.isAnnotationPresent(Status.class) - || method.isAnnotationPresent(Forget.class); + boolean endAnnotation = AnnotationResolver.isAnnotationPresent(Complete.class, method) + || AnnotationResolver.isAnnotationPresent(Compensate.class, method) + || AnnotationResolver.isAnnotationPresent(Leave.class, method) + || AnnotationResolver.isAnnotationPresent(Status.class, method) + || AnnotationResolver.isAnnotationPresent(Forget.class, method); if (headers.containsKey(LRA_HTTP_CONTEXT_HEADER)) { try { @@ -168,7 +169,7 @@ public void filter(ContainerRequestContext containerRequestContext) { } } - if (method.isAnnotationPresent(Leave.class)) { + if (AnnotationResolver.isAnnotationPresent(Leave.class, method)) { // leave the LRA String compensatorId = getCompensatorId(incommingLRA, containerRequestContext.getUriInfo(), timeout);