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;
}