You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by vi...@apache.org on 2018/11/20 02:00:50 UTC

[incubator-dubbo] branch dev-metadata updated: modify consumer metadatareport: param type from string to map

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

victory pushed a commit to branch dev-metadata
in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git


The following commit(s) were added to refs/heads/dev-metadata by this push:
     new 0aebefe  modify consumer metadatareport: param type from string to map
0aebefe is described below

commit 0aebefec3d4653c5144e4e68e77049d7b1198b1d
Author: cvictory <sh...@gmail.com>
AuthorDate: Tue Nov 20 10:00:11 2018 +0800

    modify consumer metadatareport: param type from string to map
---
 .../metadata/integration/MetadataReportService.java  |  2 +-
 .../apache/dubbo/metadata/store/MetadataReport.java  |  4 +++-
 .../metadata/support/AbstractMetadataReport.java     | 19 +++++++++++--------
 .../support/AbstractMetadataReportFactoryTest.java   |  4 ++--
 .../metadata/support/AbstractMetadataReportTest.java | 20 ++++++++++++++------
 .../store/redis/RedisMetadataReportTest.java         |  8 ++++++--
 .../store/zookeeper/ZookeeperMetadataReportTest.java |  9 ++++++---
 7 files changed, 43 insertions(+), 23 deletions(-)

diff --git a/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/integration/MetadataReportService.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/integration/MetadataReportService.java
index 10c0942..3ff7b2d 100644
--- a/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/integration/MetadataReportService.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/integration/MetadataReportService.java
@@ -97,7 +97,7 @@ public class MetadataReportService {
         consumerURL = consumerURL.removeParameters(Constants.PID_KEY, Constants.TIMESTAMP_KEY, Constants.BIND_IP_KEY, Constants.BIND_PORT_KEY, Constants.TIMESTAMP_KEY);
         metadataReport.storeConsumerMetadata(new ConsumerMetadataIdentifier(consumerURL.getServiceInterface(),
                 consumerURL.getParameter(Constants.VERSION_KEY), consumerURL.getParameter(Constants.GROUP_KEY),
-                consumerURL.getParameter(Constants.APPLICATION_KEY)), consumerURL.toParameterString());
+                consumerURL.getParameter(Constants.APPLICATION_KEY)), consumerURL.getParameters());
     }
 
 }
diff --git a/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/store/MetadataReport.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/store/MetadataReport.java
index fa60496..8857e4b 100644
--- a/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/store/MetadataReport.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/store/MetadataReport.java
@@ -21,6 +21,8 @@ import org.apache.dubbo.metadata.definition.model.FullServiceDefinition;
 import org.apache.dubbo.metadata.identifier.ConsumerMetadataIdentifier;
 import org.apache.dubbo.metadata.identifier.ProviderMetadataIdentifier;
 
+import java.util.Map;
+
 /**
  */
 public interface MetadataReport {
@@ -30,6 +32,6 @@ public interface MetadataReport {
 
     void storeProviderMetadata(ProviderMetadataIdentifier providerMetadataIdentifier, FullServiceDefinition serviceDefinition);
 
-    void storeConsumerMetadata(ConsumerMetadataIdentifier consumerMetadataIdentifier, String serviceParameterString);
+    void storeConsumerMetadata(ConsumerMetadataIdentifier consumerMetadataIdentifier, Map<String,String> serviceParameterMap);
 
 }
diff --git a/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/support/AbstractMetadataReport.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/support/AbstractMetadataReport.java
index d664dd5..044a6da 100644
--- a/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/support/AbstractMetadataReport.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/support/AbstractMetadataReport.java
@@ -248,20 +248,23 @@ public abstract class AbstractMetadataReport implements MetadataReport {
         }
     }
 
-    public void storeConsumerMetadata(ConsumerMetadataIdentifier consumerMetadataIdentifier, String serviceParameterString) {
+    public void storeConsumerMetadata(ConsumerMetadataIdentifier consumerMetadataIdentifier, Map<String,String> serviceParameterMap) {
         try {
             if (logger.isInfoEnabled()) {
-                logger.info("store consumer metadata. Identifier : " + consumerMetadataIdentifier + "; definition: " + serviceParameterString);
+                logger.info("store consumer metadata. Identifier : " + consumerMetadataIdentifier + "; definition: " + serviceParameterMap);
             }
-            allMetadataReports.put(consumerMetadataIdentifier, serviceParameterString);
+            allMetadataReports.put(consumerMetadataIdentifier, serviceParameterMap);
             failedReports.remove(consumerMetadataIdentifier);
-            doStoreConsumerMetadata(consumerMetadataIdentifier, serviceParameterString);
-            saveProperties(consumerMetadataIdentifier, serviceParameterString, true);
+
+            Gson gson = new Gson();
+            String data = gson.toJson(serviceParameterMap);
+            doStoreConsumerMetadata(consumerMetadataIdentifier, data);
+            saveProperties(consumerMetadataIdentifier, data, true);
         } catch (Exception e) {
             // retry again. If failed again, throw exception.
-            failedReports.put(consumerMetadataIdentifier, serviceParameterString);
+            failedReports.put(consumerMetadataIdentifier, serviceParameterMap);
             metadataReportRetry.startRetryTask();
-            logger.error("Failed to put consumer metadata " + consumerMetadataIdentifier + ";  " + serviceParameterString + ", cause: " + e.getMessage(), e);
+            logger.error("Failed to put consumer metadata " + consumerMetadataIdentifier + ";  " + serviceParameterMap + ", cause: " + e.getMessage(), e);
         }
     }
 
@@ -289,7 +292,7 @@ public abstract class AbstractMetadataReport implements MetadataReport {
             if (item.getKey() instanceof ProviderMetadataIdentifier) {
                 this.storeProviderMetadata((ProviderMetadataIdentifier) item.getKey(), (FullServiceDefinition) item.getValue());
             } else if (item.getKey() instanceof ConsumerMetadataIdentifier) {
-                this.storeConsumerMetadata((ConsumerMetadataIdentifier) item.getKey(), (String) item.getValue());
+                this.storeConsumerMetadata((ConsumerMetadataIdentifier) item.getKey(), (Map) item.getValue());
             }
 
         }
diff --git a/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/support/AbstractMetadataReportFactoryTest.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/support/AbstractMetadataReportFactoryTest.java
index beb7594..59dd44c 100644
--- a/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/support/AbstractMetadataReportFactoryTest.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/support/AbstractMetadataReportFactoryTest.java
@@ -29,8 +29,8 @@ public class AbstractMetadataReportFactoryTest {
                 }
 
                 @Override
-                public void storeConsumerMetadata(ConsumerMetadataIdentifier consumerMetadataIdentifier, String serviceParameterString) {
-                    store.put(consumerMetadataIdentifier.getIdentifierKey(), serviceParameterString);
+                public void storeConsumerMetadata(ConsumerMetadataIdentifier consumerMetadataIdentifier, Map serviceParameterMap) {
+                    store.put(consumerMetadataIdentifier.getIdentifierKey(), JSON.toJSONString(serviceParameterMap));
                 }
 
                 Map<String, String> store = new ConcurrentHashMap<>();
diff --git a/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/support/AbstractMetadataReportTest.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/support/AbstractMetadataReportTest.java
index 4433618..50fa719 100644
--- a/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/support/AbstractMetadataReportTest.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/support/AbstractMetadataReportTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.dubbo.metadata.support;
 
+import com.alibaba.fastjson.JSON;
 import com.google.gson.Gson;
 import org.apache.dubbo.common.URL;
 import org.apache.dubbo.common.utils.NetUtils;
@@ -149,13 +150,14 @@ public class AbstractMetadataReportTest {
         return providerMetadataIdentifier;
     }
 
-    private ConsumerMetadataIdentifier storeConsumer(AbstractMetadataReport abstractMetadataReport, String interfaceName, String version, String group, String application, String storeValue) throws ClassNotFoundException {
+    private ConsumerMetadataIdentifier storeConsumer(AbstractMetadataReport abstractMetadataReport, String interfaceName, String version, String group, String application, Map<String, String> tmp) throws ClassNotFoundException {
         URL url = URL.valueOf("xxx://" + NetUtils.getLocalAddress().getHostName() + ":4444/" + interfaceName + "?version=" + version + "&application="
                 + application + (group == null ? "" : "&group=" + group) + "&testPKey=9090");
 
+        tmp.putAll(url.getParameters());
         ConsumerMetadataIdentifier consumerMetadataIdentifier = new ConsumerMetadataIdentifier(interfaceName, version, group, application);
 
-        abstractMetadataReport.storeConsumerMetadata(consumerMetadataIdentifier, storeValue + "&" + url.toParameterString());
+        abstractMetadataReport.storeConsumerMetadata(consumerMetadataIdentifier, tmp);
 
         return consumerMetadataIdentifier;
     }
@@ -178,10 +180,14 @@ public class AbstractMetadataReportTest {
         Assert.assertTrue(((FullServiceDefinition) abstractMetadataReport.allMetadataReports.get(providerMetadataIdentifier2)).getParameters().containsKey("testPKey"));
         Assert.assertEquals(((FullServiceDefinition) abstractMetadataReport.allMetadataReports.get(providerMetadataIdentifier2)).getParameters().get("version"), version + "_2");
 
-        ConsumerMetadataIdentifier consumerMetadataIdentifier = storeConsumer(abstractMetadataReport, interfaceName, version + "_3", group + "_3", application, "testKey=value");
+        Map<String, String> tmpMap = new HashMap<>();
+        tmpMap.put("testKey", "value");
+        ConsumerMetadataIdentifier consumerMetadataIdentifier = storeConsumer(abstractMetadataReport, interfaceName, version + "_3", group + "_3", application, tmpMap);
         Assert.assertEquals(abstractMetadataReport.allMetadataReports.size(), 3);
-        Assert.assertTrue(((String) abstractMetadataReport.allMetadataReports.get(consumerMetadataIdentifier)).contains("testPKey=9090"));
-        Assert.assertTrue(((String) abstractMetadataReport.allMetadataReports.get(consumerMetadataIdentifier)).contains("testKey=value"));
+
+        Map tmpMapResult = (Map) abstractMetadataReport.allMetadataReports.get(consumerMetadataIdentifier);
+        Assert.assertEquals(tmpMapResult.get("testPKey"), "9090");
+        Assert.assertEquals(tmpMapResult.get("testKey"), "value");
         Assert.assertTrue(abstractMetadataReport.store.size() == 3);
 
         abstractMetadataReport.store.clear();
@@ -203,7 +209,9 @@ public class AbstractMetadataReportTest {
         checkParam(data.getParameters(), application, version + "_2");
 
         String v3 = abstractMetadataReport.store.get(consumerMetadataIdentifier.getIdentifierKey());
-        checkParam(queryUrlToMap(v3), application, version + "_3");
+        gson = new Gson();
+        Map v3Map = gson.fromJson(v3, Map.class);
+        checkParam(v3Map, application, version + "_3");
     }
 
     @Test
diff --git a/dubbo-metadata-report/dubbo-metadata-report-redis/src/test/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReportTest.java b/dubbo-metadata-report/dubbo-metadata-report-redis/src/test/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReportTest.java
index 7b756f3..2c3b336 100644
--- a/dubbo-metadata-report/dubbo-metadata-report-redis/src/test/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReportTest.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-redis/src/test/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReportTest.java
@@ -16,6 +16,8 @@ import redis.clients.jedis.Jedis;
 import redis.embedded.RedisServer;
 
 import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
 
 import static org.apache.dubbo.metadata.store.MetadataReport.META_DATA_SOTRE_TAG;
 
@@ -78,7 +80,7 @@ public class RedisMetadataReportTest {
         try {
             jedis = redisMetadataReport.pool.getResource();
             String value = jedis.get(consumerMetadataIdentifier.getIdentifierKey() + META_DATA_SOTRE_TAG);
-            Assert.assertEquals(value, "paramConsumerTest=redisCm");
+            Assert.assertEquals(value, "{\"paramConsumerTest\":\"redisCm\"}");
         } catch (Throwable e) {
             throw new RpcException("Failed to put to redis . cause: " + e.getMessage(), e);
         } finally {
@@ -109,7 +111,9 @@ public class RedisMetadataReportTest {
         ConsumerMetadataIdentifier consumerMetadataIdentifier = new ConsumerMetadataIdentifier(interfaceName, version, group, application);
         Class interfaceClass = Class.forName(interfaceName);
 
-        redisMetadataReport.storeConsumerMetadata(consumerMetadataIdentifier, "paramConsumerTest=redisCm");
+        Map<String, String> tmp = new HashMap<>();
+        tmp.put("paramConsumerTest", "redisCm");
+        redisMetadataReport.storeConsumerMetadata(consumerMetadataIdentifier, tmp);
 
         return consumerMetadataIdentifier;
     }
diff --git a/dubbo-metadata-report/dubbo-metadata-report-zookeeper/src/test/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReportTest.java b/dubbo-metadata-report/dubbo-metadata-report-zookeeper/src/test/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReportTest.java
index 7c5e173..db54870 100644
--- a/dubbo-metadata-report/dubbo-metadata-report-zookeeper/src/test/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReportTest.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-zookeeper/src/test/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReportTest.java
@@ -15,7 +15,8 @@ import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 
-import java.util.List;
+import java.util.HashMap;
+import java.util.Map;
 
 /**
  * 2018/10/9
@@ -91,7 +92,7 @@ public class ZookeeperMetadataReportTest {
         consumerMetadataIdentifier = storeConsumer(zookeeperMetadataReport, interfaceName, version, group, application);
         fileContent = zookeeperMetadataReport.zkClient.getContent(zookeeperMetadataReport.getNodePath(consumerMetadataIdentifier));
         Assert.assertNotNull(fileContent);
-        Assert.assertEquals(fileContent, "paramConsumerTest=zkCm");
+        Assert.assertEquals(fileContent, "{\"paramConsumerTest\":\"zkCm\"}");
     }
 
 
@@ -115,7 +116,9 @@ public class ZookeeperMetadataReportTest {
         ConsumerMetadataIdentifier consumerMetadataIdentifier = new ConsumerMetadataIdentifier(interfaceName, version, group, application);
         Class interfaceClass = Class.forName(interfaceName);
 
-        zookeeperMetadataReport.storeConsumerMetadata(consumerMetadataIdentifier, "paramConsumerTest=zkCm");
+        Map<String, String> tmp = new HashMap<>();
+        tmp.put("paramConsumerTest", "zkCm");
+        zookeeperMetadataReport.storeConsumerMetadata(consumerMetadataIdentifier, tmp);
 
         return consumerMetadataIdentifier;
     }