You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by ni...@apache.org on 2018/06/01 03:34:59 UTC

[incubator-servicecomb-saga] 01/01: SCB-584 Fixed the Dubbo*Filter test errors by injecting the OmegaContext seperatly.

This is an automated email from the ASF dual-hosted git repository.

ningjiang pushed a commit to branch SCB-584
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-saga.git

commit 2af3411c7dc44977ad7352a1b716ce6344b6b265
Author: Willem Jiang <ji...@huawei.com>
AuthorDate: Fri Jun 1 11:33:46 2018 +0800

    SCB-584 Fixed the Dubbo*Filter test errors by injecting the OmegaContext seperatly.
---
 .../transport/dubbo/SagaDubboConsumerFilter.java   | 12 ++++++++---
 .../transport/dubbo/SagaDubboProviderFilter.java   | 13 ++++++++++--
 .../src/test/java/SagaDubboConsumerFilterTest.java | 22 ++++++--------------
 .../src/test/java/SagaDubboProviderFilterTest.java | 24 +++++++---------------
 4 files changed, 33 insertions(+), 38 deletions(-)

diff --git a/omega/omega-transport/omega-transport-dubbo/src/main/java/org/apache/servicecomb/saga/omega/transport/dubbo/SagaDubboConsumerFilter.java b/omega/omega-transport/omega-transport-dubbo/src/main/java/org/apache/servicecomb/saga/omega/transport/dubbo/SagaDubboConsumerFilter.java
index 35f02a2..afb83d1 100644
--- a/omega/omega-transport/omega-transport-dubbo/src/main/java/org/apache/servicecomb/saga/omega/transport/dubbo/SagaDubboConsumerFilter.java
+++ b/omega/omega-transport/omega-transport-dubbo/src/main/java/org/apache/servicecomb/saga/omega/transport/dubbo/SagaDubboConsumerFilter.java
@@ -31,6 +31,7 @@ import java.lang.invoke.MethodHandles;
 import org.apache.servicecomb.saga.omega.context.OmegaContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import static org.apache.servicecomb.saga.omega.context.OmegaContext.GLOBAL_TX_ID_KEY;
 import static org.apache.servicecomb.saga.omega.context.OmegaContext.LOCAL_TX_ID_KEY;
@@ -41,11 +42,16 @@ import static org.apache.servicecomb.saga.omega.context.OmegaContext.LOCAL_TX_ID
 @Activate(group = {Constants.CONSUMER})
 public class SagaDubboConsumerFilter implements Filter {
   private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+  
+  // As we use the spring to manage the omegaContext, the Autowired work out of box
+  @Autowired(required=false)
+  private OmegaContext omegaContext;
+
+  public void setOmegaContext(OmegaContext omegaContext) {
+    this.omegaContext = omegaContext;
+  }
 
   public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
-    // TODO not sure if it's a good way to look up OmegaContext during every invoke
-    OmegaContext omegaContext = (OmegaContext) (new SpringExtensionFactory())
-        .getExtension(OmegaContext.class, "omegaContext");
     if (omegaContext != null) {
       invocation.getAttachments().put(GLOBAL_TX_ID_KEY, omegaContext.globalTxId());
       invocation.getAttachments().put(LOCAL_TX_ID_KEY, omegaContext.localTxId());
diff --git a/omega/omega-transport/omega-transport-dubbo/src/main/java/org/apache/servicecomb/saga/omega/transport/dubbo/SagaDubboProviderFilter.java b/omega/omega-transport/omega-transport-dubbo/src/main/java/org/apache/servicecomb/saga/omega/transport/dubbo/SagaDubboProviderFilter.java
index acb0524..618b9b9 100644
--- a/omega/omega-transport/omega-transport-dubbo/src/main/java/org/apache/servicecomb/saga/omega/transport/dubbo/SagaDubboProviderFilter.java
+++ b/omega/omega-transport/omega-transport-dubbo/src/main/java/org/apache/servicecomb/saga/omega/transport/dubbo/SagaDubboProviderFilter.java
@@ -24,6 +24,7 @@ import com.alibaba.dubbo.rpc.*;
 import org.apache.servicecomb.saga.omega.context.OmegaContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import java.lang.invoke.MethodHandles;
 
@@ -38,10 +39,16 @@ public class SagaDubboProviderFilter implements Filter {
 
   private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
 
+  // As we use the spring to manage the omegaContext, the Autowired work out of box
+  @Autowired(required=false)
+  private OmegaContext omegaContext;
+
+  public void setOmegaContext(OmegaContext omegaContext) {
+    this.omegaContext = omegaContext;
+  }
+
   @Override
   public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
-    // TODO not sure if it's a good way to look up OmegaContext during every invoke
-    OmegaContext omegaContext = new SpringExtensionFactory().getExtension(OmegaContext.class, "omegaContext");
     if (omegaContext != null) {
       String globalTxId = invocation.getAttachment(GLOBAL_TX_ID_KEY);
       if (globalTxId == null) {
@@ -54,6 +61,8 @@ public class SagaDubboProviderFilter implements Filter {
       }
       invocation.getAttachments().put(GLOBAL_TX_ID_KEY, null);
       invocation.getAttachments().put(LOCAL_TX_ID_KEY, null);
+    } else {
+      LOG.debug("Cannot find omegaContext");
     }
 
     if (invoker != null) {
diff --git a/omega/omega-transport/omega-transport-dubbo/src/test/java/SagaDubboConsumerFilterTest.java b/omega/omega-transport/omega-transport-dubbo/src/test/java/SagaDubboConsumerFilterTest.java
index 779b732..3fcb1b1 100644
--- a/omega/omega-transport/omega-transport-dubbo/src/test/java/SagaDubboConsumerFilterTest.java
+++ b/omega/omega-transport/omega-transport-dubbo/src/test/java/SagaDubboConsumerFilterTest.java
@@ -15,18 +15,16 @@
  * limitations under the License.
  */
 
-import com.alibaba.dubbo.config.spring.extension.SpringExtensionFactory;
-import com.alibaba.dubbo.rpc.Invocation;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
 import org.apache.servicecomb.saga.omega.context.OmegaContext;
 import org.apache.servicecomb.saga.omega.transport.dubbo.SagaDubboConsumerFilter;
-import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
-import org.springframework.context.ApplicationContext;
 
-import java.util.HashMap;
-import java.util.Map;
-import java.util.UUID;
+import com.alibaba.dubbo.rpc.Invocation;
 
 import static org.hamcrest.core.Is.is;
 import static org.junit.Assert.assertThat;
@@ -40,20 +38,12 @@ public class SagaDubboConsumerFilterTest {
 
   private final OmegaContext omegaContext = new OmegaContext(() -> "ignored");
   private final Invocation invocation = mock(Invocation.class);
-  private final ApplicationContext applicationContext = mock(ApplicationContext.class);
   private final SagaDubboConsumerFilter filter = new SagaDubboConsumerFilter();
 
   @Before
   public void setUp() {
     omegaContext.clear();
-    when(applicationContext.containsBean("omegaContext")).thenReturn(true);
-    when(applicationContext.getBean("omegaContext")).thenReturn(omegaContext);
-    SpringExtensionFactory.addApplicationContext(applicationContext);
-  }
-
-  @After
-  public void setDown(){
-    SpringExtensionFactory.removeApplicationContext(applicationContext);
+    filter.setOmegaContext(omegaContext);
   }
 
   @Test
diff --git a/omega/omega-transport/omega-transport-dubbo/src/test/java/SagaDubboProviderFilterTest.java b/omega/omega-transport/omega-transport-dubbo/src/test/java/SagaDubboProviderFilterTest.java
index 1b95339..be00e69 100644
--- a/omega/omega-transport/omega-transport-dubbo/src/test/java/SagaDubboProviderFilterTest.java
+++ b/omega/omega-transport/omega-transport-dubbo/src/test/java/SagaDubboProviderFilterTest.java
@@ -15,16 +15,14 @@
  * limitations under the License.
  */
 
-import com.alibaba.dubbo.config.spring.extension.SpringExtensionFactory;
-import com.alibaba.dubbo.rpc.Invocation;
+import java.util.UUID;
+
 import org.apache.servicecomb.saga.omega.context.OmegaContext;
 import org.apache.servicecomb.saga.omega.transport.dubbo.SagaDubboProviderFilter;
-import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
-import org.springframework.context.ApplicationContext;
 
-import java.util.UUID;
+import com.alibaba.dubbo.rpc.Invocation;
 
 import static org.hamcrest.Matchers.is;
 import static org.hamcrest.Matchers.nullValue;
@@ -38,25 +36,17 @@ public class SagaDubboProviderFilterTest {
   private static final String localTxId = UUID.randomUUID().toString();
   private final OmegaContext omegaContext = new OmegaContext(() -> "ignored");
   private final Invocation invocation = mock(Invocation.class);
-  private final ApplicationContext applicationContext = mock(ApplicationContext.class);
-
+  
   private final SagaDubboProviderFilter filter = new SagaDubboProviderFilter();
 
   @Before
   public void setUp() {
     omegaContext.clear();
-    when(applicationContext.containsBean("omegaContext")).thenReturn(true);
-    when(applicationContext.getBean("omegaContext")).thenReturn(omegaContext);
-    SpringExtensionFactory.addApplicationContext(applicationContext);
-  }
-
-  @After
-  public void setDown(){
-    SpringExtensionFactory.removeApplicationContext(applicationContext);
+    filter.setOmegaContext(omegaContext);
   }
 
   @Test
-  public void setUpOmegaContextInTransactionRequest() throws Exception {
+  public void setUpOmegaContextInTransactionRequest() {
     when(invocation.getAttachment(OmegaContext.GLOBAL_TX_ID_KEY)).thenReturn(globalTxId);
     when(invocation.getAttachment(OmegaContext.LOCAL_TX_ID_KEY)).thenReturn(localTxId);
 
@@ -67,7 +57,7 @@ public class SagaDubboProviderFilterTest {
   }
 
   @Test
-  public void doNothingInNonTransactionRequest() throws Exception {
+  public void doNothingInNonTransactionRequest() {
     when(invocation.getAttachment(OmegaContext.GLOBAL_TX_ID_KEY)).thenReturn(null);
     when(invocation.getAttachment(OmegaContext.LOCAL_TX_ID_KEY)).thenReturn(null);
 

-- 
To stop receiving notification emails like this one, please contact
ningjiang@apache.org.