You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by GitBox <gi...@apache.org> on 2018/08/27 01:03:09 UTC

[GitHub] WillemJiang closed pull request #272: [SCB-865] Refactoring the Omega Interceptors

WillemJiang closed pull request #272: [SCB-865] Refactoring the Omega Interceptors
URL: https://github.com/apache/incubator-servicecomb-saga/pull/272
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/EventAwareInterceptor.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/EventAwareInterceptor.java
index 285d5498..b542222c 100644
--- a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/EventAwareInterceptor.java
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/EventAwareInterceptor.java
@@ -18,23 +18,9 @@
 package org.apache.servicecomb.saga.omega.transaction;
 
 public interface EventAwareInterceptor {
-  EventAwareInterceptor NO_OP_INTERCEPTOR = new EventAwareInterceptor() {
-    @Override
-    public AlphaResponse preIntercept(String parentTxId, String compensationMethod, int timeout, String retriesMethod,
-        int retries, Object... message) {
-      return new AlphaResponse(false);
-    }
 
-    @Override
-    public void postIntercept(String parentTxId, String compensationMethod) {
-    }
-
-    @Override
-    public void onError(String parentTxId, String compensationMethod, Throwable throwable) {
-    }
-  };
-
-  AlphaResponse preIntercept(String parentTxId, String compensationMethod, int timeout, String retriesMethod,
+  AlphaResponse preIntercept(String parentTxId, String compensationMethod, int timeout,
+      String retriesMethod,
       int retries, Object... message);
 
   void postIntercept(String parentTxId, String compensationMethod);
diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/NoOpEventAwareInterceptor.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/NoOpEventAwareInterceptor.java
new file mode 100644
index 00000000..46d6a30d
--- /dev/null
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/NoOpEventAwareInterceptor.java
@@ -0,0 +1,23 @@
+package org.apache.servicecomb.saga.omega.transaction;
+
+public class NoOpEventAwareInterceptor implements EventAwareInterceptor {
+
+  public static final NoOpEventAwareInterceptor INSTANCE = new NoOpEventAwareInterceptor();
+
+  @Override
+  public AlphaResponse preIntercept(String parentTxId, String compensationMethod, int timeout,
+      String retriesMethod,
+      int retries, Object... message) {
+    return new AlphaResponse(false);
+  }
+
+  @Override
+  public void postIntercept(String parentTxId, String compensationMethod) {
+    // NoOp
+  }
+
+  @Override
+  public void onError(String parentTxId, String compensationMethod, Throwable throwable) {
+    // NoOp
+  }
+}
diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/SagaStartAnnotationProcessor.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/SagaStartAnnotationProcessor.java
index b264096d..b0b2de4b 100644
--- a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/SagaStartAnnotationProcessor.java
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/SagaStartAnnotationProcessor.java
@@ -18,10 +18,9 @@
 package org.apache.servicecomb.saga.omega.transaction;
 
 import javax.transaction.TransactionalException;
-
 import org.apache.servicecomb.saga.omega.context.OmegaContext;
 
-class SagaStartAnnotationProcessor implements EventAwareInterceptor {
+class SagaStartAnnotationProcessor {
 
   private final OmegaContext omegaContext;
   private final MessageSender sender;
@@ -31,27 +30,27 @@
     this.sender = sender;
   }
 
-  @Override
-  public AlphaResponse preIntercept(String parentTxId, String compensationMethod, int timeout, String retriesMethod,
-      int retries, Object... message) {
+  AlphaResponse preIntercept(int timeout) {
     try {
-      return sender.send(new SagaStartedEvent(omegaContext.globalTxId(), omegaContext.localTxId(), timeout));
+      return sender
+          .send(new SagaStartedEvent(omegaContext.globalTxId(), omegaContext.localTxId(), timeout));
     } catch (OmegaException e) {
       throw new TransactionalException(e.getMessage(), e.getCause());
     }
   }
 
-  @Override
-  public void postIntercept(String parentTxId, String compensationMethod) {
-    AlphaResponse response = sender.send(new SagaEndedEvent(omegaContext.globalTxId(), omegaContext.localTxId()));
+  void postIntercept(String parentTxId) {
+    AlphaResponse response = sender
+        .send(new SagaEndedEvent(omegaContext.globalTxId(), omegaContext.localTxId()));
     if (response.aborted()) {
       throw new OmegaException("transaction " + parentTxId + " is aborted");
     }
   }
 
-  @Override
-  public void onError(String parentTxId, String compensationMethod, Throwable throwable) {
+  void onError(String compensationMethod, Throwable throwable) {
     String globalTxId = omegaContext.globalTxId();
-    sender.send(new TxAbortedEvent(globalTxId, omegaContext.localTxId(), null, compensationMethod, throwable));
+    sender.send(
+        new TxAbortedEvent(globalTxId, omegaContext.localTxId(), null, compensationMethod,
+            throwable));
   }
 }
diff --git a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/SagaStartAspect.java b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/SagaStartAspect.java
index e2cd7170..0dc3279e 100644
--- a/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/SagaStartAspect.java
+++ b/omega/omega-transaction/src/main/java/org/apache/servicecomb/saga/omega/transaction/SagaStartAspect.java
@@ -19,7 +19,6 @@
 
 import java.lang.invoke.MethodHandles;
 import java.lang.reflect.Method;
-
 import org.apache.servicecomb.saga.omega.context.OmegaContext;
 import org.apache.servicecomb.saga.omega.context.annotations.SagaStart;
 import org.aspectj.lang.ProceedingJoinPoint;
@@ -47,20 +46,20 @@ Object advise(ProceedingJoinPoint joinPoint, SagaStart sagaStart) throws Throwab
     initializeOmegaContext();
     Method method = ((MethodSignature) joinPoint.getSignature()).getMethod();
 
-    sagaStartAnnotationProcessor.preIntercept(context.globalTxId(), method.toString(), sagaStart.timeout(), "", 0);
+    sagaStartAnnotationProcessor.preIntercept(sagaStart.timeout());
     LOG.debug("Initialized context {} before execution of method {}", context, method.toString());
 
     try {
       Object result = joinPoint.proceed();
 
-      sagaStartAnnotationProcessor.postIntercept(context.globalTxId(), method.toString());
+      sagaStartAnnotationProcessor.postIntercept(context.globalTxId());
       LOG.debug("Transaction with context {} has finished.", context);
 
       return result;
     } catch (Throwable throwable) {
       // We don't need to handle the OmegaException here
       if (!(throwable instanceof OmegaException)) {
-        sagaStartAnnotationProcessor.onError(context.globalTxId(), method.toString(), throwable);
+        sagaStartAnnotationProcessor.onError(method.toString(), throwable);
         LOG.error("Transaction {} failed.", context.globalTxId());
       }
       throw throwable;
diff --git a/omega/omega-transaction/src/test/java/org/apache/servicecomb/saga/omega/transaction/SagaStartAnnotationProcessorTest.java b/omega/omega-transaction/src/test/java/org/apache/servicecomb/saga/omega/transaction/SagaStartAnnotationProcessorTest.java
index 39fcf5f9..6d50e6f8 100644
--- a/omega/omega-transaction/src/test/java/org/apache/servicecomb/saga/omega/transaction/SagaStartAnnotationProcessorTest.java
+++ b/omega/omega-transaction/src/test/java/org/apache/servicecomb/saga/omega/transaction/SagaStartAnnotationProcessorTest.java
@@ -29,9 +29,7 @@
 import java.util.ArrayList;
 import java.util.List;
 import java.util.UUID;
-
 import javax.transaction.TransactionalException;
-
 import org.apache.servicecomb.saga.common.EventType;
 import org.apache.servicecomb.saga.omega.context.IdGenerator;
 import org.apache.servicecomb.saga.omega.context.OmegaContext;
@@ -75,9 +73,11 @@ public AlphaResponse send(TxEvent event) {
   @SuppressWarnings("unchecked")
   private final IdGenerator<String> generator = mock(IdGenerator.class);
   private final OmegaContext context = new OmegaContext(generator);
-  private final OmegaException exception = new OmegaException("exception", new RuntimeException("runtime exception"));
+  private final OmegaException exception = new OmegaException("exception",
+      new RuntimeException("runtime exception"));
 
-  private final SagaStartAnnotationProcessor sagaStartAnnotationProcessor = new SagaStartAnnotationProcessor(context,
+  private final SagaStartAnnotationProcessor sagaStartAnnotationProcessor = new SagaStartAnnotationProcessor(
+      context,
       sender);
 
   @Before
@@ -88,7 +88,7 @@ public void setUp() throws Exception {
 
   @Test
   public void sendsSagaStartedEvent() {
-    sagaStartAnnotationProcessor.preIntercept(null, null, 0, null, 0);
+    sagaStartAnnotationProcessor.preIntercept(0);
 
     TxEvent event = messages.get(0);
 
@@ -102,7 +102,7 @@ public void sendsSagaStartedEvent() {
 
   @Test
   public void sendsSagaEndedEvent() {
-    sagaStartAnnotationProcessor.postIntercept(null, null);
+    sagaStartAnnotationProcessor.postIntercept(null);
 
     TxEvent event = messages.get(0);
 
@@ -117,12 +117,13 @@ public void sendsSagaEndedEvent() {
   @Test
   public void transformInterceptedException() {
     MessageSender sender = mock(MessageSender.class);
-    SagaStartAnnotationProcessor sagaStartAnnotationProcessor = new SagaStartAnnotationProcessor(context, sender);
+    SagaStartAnnotationProcessor sagaStartAnnotationProcessor = new SagaStartAnnotationProcessor(
+        context, sender);
 
     doThrow(exception).when(sender).send(any(TxEvent.class));
 
     try {
-      sagaStartAnnotationProcessor.preIntercept(null, null, 0, null, 0);
+      sagaStartAnnotationProcessor.preIntercept(0);
       expectFailing(TransactionalException.class);
     } catch (TransactionalException e) {
       assertThat(e.getMessage(), is("exception"));


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services