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());
+    }
+
 }

Reply via email to