This is an automated email from the ASF dual-hosted git repository.
liujun pushed a commit to branch 3.0
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/3.0 by this push:
new 2d5884bff2 [3.0] Fix InstanceAddressURL unable to get scopeModel when
creating invoker (#10177)
2d5884bff2 is described below
commit 2d5884bff2917b5f42901f3c86ff0d434d2429f3
Author: Albumen Kevin <[email protected]>
AuthorDate: Mon Jun 20 10:29:08 2022 +0800
[3.0] Fix InstanceAddressURL unable to get scopeModel when creating invoker
(#10177)
---
.../apache/dubbo/registry/client/InstanceAddressURL.java | 9 +++++++++
.../dubbo/registry/client/InstanceAddressURLTest.java | 13 +++++++++++++
2 files changed, 22 insertions(+)
diff --git
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/InstanceAddressURL.java
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/InstanceAddressURL.java
index 94a9fb2847..757f33345e 100644
---
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/InstanceAddressURL.java
+++
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/InstanceAddressURL.java
@@ -25,10 +25,12 @@ import org.apache.dubbo.metadata.MetadataInfo;
import org.apache.dubbo.rpc.RpcContext;
import org.apache.dubbo.rpc.model.ApplicationModel;
import org.apache.dubbo.rpc.model.FrameworkModel;
+import org.apache.dubbo.rpc.model.ScopeModel;
import org.apache.dubbo.rpc.model.ServiceModel;
import java.util.HashMap;
import java.util.Map;
+import java.util.Optional;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
@@ -538,6 +540,13 @@ public class InstanceAddressURL extends URL {
return instance.getApplicationModel();
}
+ @Override
+ public ScopeModel getScopeModel() {
+ return
Optional.ofNullable(RpcContext.getServiceContext().getConsumerUrl())
+ .map(URL::getScopeModel)
+ .orElse(super.getScopeModel());
+ }
+
@Override
public ServiceModel getServiceModel() {
return
RpcContext.getServiceContext().getConsumerUrl().getServiceModel();
diff --git
a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/InstanceAddressURLTest.java
b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/InstanceAddressURLTest.java
index 4ba3d64834..15442b29fd 100644
---
a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/InstanceAddressURLTest.java
+++
b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/InstanceAddressURLTest.java
@@ -22,9 +22,12 @@ import org.apache.dubbo.metadata.MetadataInfo;
import org.apache.dubbo.registry.ProviderFirstParams;
import org.apache.dubbo.rpc.RpcServiceContext;
import org.apache.dubbo.rpc.model.ApplicationModel;
+import org.apache.dubbo.rpc.model.ModuleModel;
+import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
+import org.mockito.Mockito;
import java.util.Arrays;
import java.util.Collections;
@@ -165,4 +168,14 @@ public class InstanceAddressURLTest {
assertEquals("newValue",
instanceURL.getServiceParameters(url.getProtocolServiceKey()).get("newKey"));
}
+ @Test
+ public void test2() {
+ RpcServiceContext.getServiceContext().setConsumerUrl(null);
+ Assertions.assertNull(instanceURL.getScopeModel());
+
+ ModuleModel moduleModel = Mockito.mock(ModuleModel.class);
+
RpcServiceContext.getServiceContext().setConsumerUrl(URL.valueOf("").setScopeModel(moduleModel));
+ Assertions.assertEquals(moduleModel, instanceURL.getScopeModel());
+ }
+
}