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.