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

albumenj 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 7c72487c5b fix #9910, metadata-report support a separate configuration 
username and password (#9912)
7c72487c5b is described below

commit 7c72487c5bd986b290ff6c5bff05843b6f490674
Author: Wang Chengming <[email protected]>
AuthorDate: Thu Apr 14 11:37:56 2022 +0800

    fix #9910, metadata-report support a separate configuration username and 
password (#9912)
    
    Co-authored-by: 呈铭 <[email protected]>
---
 .../org/apache/dubbo/common/constants/CommonConstants.java |  2 ++
 .../java/org/apache/dubbo/config/MetadataReportConfig.java | 14 ++++++++------
 .../dubbo/metadata/report/MetadataReportInstanceTest.java  | 11 ++++++++---
 3 files changed, 18 insertions(+), 9 deletions(-)

diff --git 
a/dubbo-common/src/main/java/org/apache/dubbo/common/constants/CommonConstants.java
 
b/dubbo-common/src/main/java/org/apache/dubbo/common/constants/CommonConstants.java
index ffbd77ced9..6e60942c52 100644
--- 
a/dubbo-common/src/main/java/org/apache/dubbo/common/constants/CommonConstants.java
+++ 
b/dubbo-common/src/main/java/org/apache/dubbo/common/constants/CommonConstants.java
@@ -533,4 +533,6 @@ public interface CommonConstants {
     String CLEAR_FUTURE_AFTER_GET = "future.clear.once";
 
     String NATIVE_STUB = "nativestub";
+
+    String METADATA = "metadata";
 }
diff --git 
a/dubbo-common/src/main/java/org/apache/dubbo/config/MetadataReportConfig.java 
b/dubbo-common/src/main/java/org/apache/dubbo/config/MetadataReportConfig.java
index 2b63748f86..ac0506554e 100644
--- 
a/dubbo-common/src/main/java/org/apache/dubbo/config/MetadataReportConfig.java
+++ 
b/dubbo-common/src/main/java/org/apache/dubbo/config/MetadataReportConfig.java
@@ -27,6 +27,7 @@ import java.util.HashMap;
 import java.util.Map;
 
 import static 
org.apache.dubbo.common.constants.CommonConstants.CYCLE_REPORT_KEY;
+import static org.apache.dubbo.common.constants.CommonConstants.METADATA;
 import static org.apache.dubbo.common.constants.CommonConstants.PROTOCOL_KEY;
 import static 
org.apache.dubbo.common.constants.CommonConstants.REPORT_DEFINITION_KEY;
 import static 
org.apache.dubbo.common.constants.CommonConstants.REPORT_METADATA_KEY;
@@ -143,7 +144,7 @@ public class MetadataReportConfig extends AbstractConfig {
         if (isEmpty(address)) {
             throw new IllegalArgumentException("The address of metadata report 
is invalid.");
         }
-        Map<String, String> map = new HashMap<String, String>();
+        Map<String, String> map = new HashMap<>();
         URL url = URL.valueOf(address, getScopeModel());
         // Issue : https://github.com/apache/dubbo/issues/6491
         // Append the parameters from address
@@ -153,10 +154,10 @@ public class MetadataReportConfig extends AbstractConfig {
         // Normalize the parameters
         map.putAll(convert(map, null));
         // put the protocol of URL as the "metadata"
-        map.put("metadata", isEmpty(url.getProtocol()) ? map.get(PROTOCOL_KEY) 
: url.getProtocol());
-        return new ServiceConfigURL("metadata", url.getUsername(), 
url.getPassword(), url.getHost(),
-                url.getPort(), url.getPath(), 
map).setScopeModel(getScopeModel());
-
+        map.put(METADATA, isEmpty(url.getProtocol()) ? map.get(PROTOCOL_KEY) : 
url.getProtocol());
+        return new ServiceConfigURL(METADATA, 
StringUtils.isBlank(url.getUsername()) ? this.getUsername() : url.getUsername(),
+            StringUtils.isBlank(url.getPassword()) ? this.getPassword() : 
url.getPassword(), url.getHost(),
+            url.getPort(), url.getPath(), map).setScopeModel(getScopeModel());
     }
 
     public String getProtocol() {
@@ -191,7 +192,8 @@ public class MetadataReportConfig extends AbstractConfig {
                 updateParameters(params);
             } catch (Exception ignored) {
             }
-        }    }
+        }
+    }
 
     public Integer getPort() {
         return port;
diff --git 
a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/report/MetadataReportInstanceTest.java
 
b/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/report/MetadataReportInstanceTest.java
index ac329eec43..703b3d9955 100644
--- 
a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/report/MetadataReportInstanceTest.java
+++ 
b/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/report/MetadataReportInstanceTest.java
@@ -41,7 +41,7 @@ class MetadataReportInstanceTest {
     private MetadataReportConfig metadataReportConfig;
     private ConfigManager configManager;
 
-    private String registryId = "9103";
+    private final String registryId = "9103";
 
     @BeforeEach
     public void setUp() {
@@ -52,6 +52,9 @@ class MetadataReportInstanceTest {
 
         URL url = 
URL.valueOf("metadata://127.0.0.1:20880/TestService?version=1.0.0&metadata=JTest");
         metadataReportConfig = mock(MetadataReportConfig.class);
+        when(metadataReportConfig.getUsername()).thenReturn("username");
+        when(metadataReportConfig.getPassword()).thenReturn("password");
+
         
when(metadataReportConfig.getApplicationModel()).thenReturn(applicationModel);
         when(metadataReportConfig.toUrl()).thenReturn(url);
         
when(metadataReportConfig.getScopeModel()).thenReturn(applicationModel);
@@ -65,8 +68,7 @@ class MetadataReportInstanceTest {
 
     @Test
     public void test() {
-        
Assertions.assertNull(metadataReportInstance.getMetadataReport(registryId),
-            "the metadata report was not initialized.");
+        
Assertions.assertNull(metadataReportInstance.getMetadataReport(registryId), 
"the metadata report was not initialized.");
         assertThat(metadataReportInstance.getMetadataReports(true), 
Matchers.anEmptyMap());
 
         metadataReportInstance.init(Arrays.asList(metadataReportConfig));
@@ -79,6 +81,9 @@ class MetadataReportInstanceTest {
         Map<String, MetadataReport> metadataReports = 
metadataReportInstance.getMetadataReports(true);
         Assertions.assertEquals(metadataReports.size(), 1);
         Assertions.assertEquals(metadataReports.get(registryId), 
metadataReport);
+
+        Assertions.assertEquals(metadataReportConfig.getUsername(), 
"username");
+        Assertions.assertEquals(metadataReportConfig.getPassword(), 
"password");
     }
 
 }

Reply via email to