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 <jiangni...@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 ningji...@apache.org.