This is an automated email from the ASF dual-hosted git repository.
iluo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git
The following commit(s) were added to refs/heads/master by this push:
new ccce69e Issue2583 (#2614)
ccce69e is described below
commit ccce69e75fd34a48f02899cb5a61c07742c17c43
Author: Ian Luo <[email protected]>
AuthorDate: Tue Oct 9 16:37:28 2018 +0800
Issue2583 (#2614)
* update README
* #2583: ApplicationModel serviceName is not unique
---
.../dubbo/config/model/ApplicationModel.java | 39 +++++++++++-----------
.../org/apache/dubbo/qos/command/impl/Offline.java | 4 +--
.../org/apache/dubbo/qos/command/impl/Online.java | 4 +--
3 files changed, 24 insertions(+), 23 deletions(-)
diff --git
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/model/ApplicationModel.java
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/model/ApplicationModel.java
index d728fb4..36d4f03 100644
---
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/model/ApplicationModel.java
+++
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/model/ApplicationModel.java
@@ -21,13 +21,15 @@ import org.apache.dubbo.common.logger.LoggerFactory;
import org.apache.dubbo.common.utils.ConcurrentHashSet;
import org.apache.dubbo.rpc.Invoker;
-import java.util.ArrayList;
+import java.util.Collection;
import java.util.Collections;
-import java.util.List;
+import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
+import static java.util.stream.Collectors.toSet;
+
// TODO need to adjust project structure in order to fully utilize the methods
introduced here.
public class ApplicationModel {
@@ -36,42 +38,41 @@ public class ApplicationModel {
/**
* full qualified class name -> provided service
*/
- private static final ConcurrentMap<String, ProviderModel> providedServices
= new ConcurrentHashMap<String, ProviderModel>();
+ private static final ConcurrentMap<String, Set<ProviderModel>>
providedServices = new ConcurrentHashMap<>();
/**
* full qualified class name -> subscribe service
*/
- private static final ConcurrentMap<String, ConsumerModel> consumedServices
= new ConcurrentHashMap<String, ConsumerModel>();
+ private static final ConcurrentMap<String, Set<ConsumerModel>>
consumedServices = new ConcurrentHashMap<>();
- public static final ConcurrentMap<String, Set<Invoker>>
providedServicesInvoker = new ConcurrentHashMap<String, Set<Invoker>>();
+ private static final ConcurrentMap<String, Set<Invoker>>
providedServicesInvoker = new ConcurrentHashMap<>();
- public static List<ConsumerModel> allConsumerModels() {
- return new ArrayList<ConsumerModel>(consumedServices.values());
+ public static Collection<ConsumerModel> allConsumerModels() {
+ return
consumedServices.values().stream().flatMap(Collection::stream).collect(toSet());
}
- public static ProviderModel getProviderModel(String serviceName) {
- return providedServices.get(serviceName);
+ public static Collection<ProviderModel> allProviderModels() {
+ return
providedServices.values().stream().flatMap(Collection::stream).collect(toSet());
}
- public static ConsumerModel getConsumerModel(String serviceName) {
- return consumedServices.get(serviceName);
+ public static Collection<ProviderModel> getProviderModel(String
serviceName) {
+ return providedServices.get(serviceName);
}
- public static List<ProviderModel> allProviderModels() {
- return new ArrayList<ProviderModel>(providedServices.values());
+ public static Collection<ConsumerModel> getConsumerModel(String
serviceName) {
+ return consumedServices.get(serviceName);
}
- public static boolean initConsumerModel(String serviceName, ConsumerModel
consumerModel) {
- if (consumedServices.putIfAbsent(serviceName, consumerModel) != null) {
+ public static void initConsumerModel(String serviceName, ConsumerModel
consumerModel) {
+ Set<ConsumerModel> consumerModels =
consumedServices.computeIfAbsent(serviceName, k -> new HashSet<>());
+ if (!consumerModels.add(consumerModel)) {
logger.warn("Already register the same consumer:" + serviceName);
- return false;
}
- return true;
}
public static void initProviderModel(String serviceName, ProviderModel
providerModel) {
- if (providedServices.put(serviceName, providerModel) != null) {
+ Set<ProviderModel> providerModels =
providedServices.computeIfAbsent(serviceName, k -> new HashSet<>());
+ if (!providerModels.add(providerModel)) {
logger.warn("already register the provider service: " +
serviceName);
- return;
}
}
diff --git
a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/Offline.java
b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/Offline.java
index 59ac30d..a886e7e 100644
---
a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/Offline.java
+++
b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/Offline.java
@@ -29,7 +29,7 @@ import org.apache.dubbo.registry.RegistryFactory;
import org.apache.dubbo.registry.support.ProviderConsumerRegTable;
import org.apache.dubbo.registry.support.ProviderInvokerWrapper;
-import java.util.List;
+import java.util.Collection;
import java.util.Set;
@Cmd(name = "offline", summary = "offline dubbo", example = {
@@ -49,7 +49,7 @@ public class Offline implements BaseCommand {
}
boolean hasService = false;
- List<ProviderModel> providerModelList =
ApplicationModel.allProviderModels();
+ Collection<ProviderModel> providerModelList =
ApplicationModel.allProviderModels();
for (ProviderModel providerModel : providerModelList) {
if (providerModel.getServiceName().matches(servicePattern)) {
hasService = true;
diff --git
a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/Online.java
b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/Online.java
index 20714d4..10cf453 100644
---
a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/Online.java
+++
b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/Online.java
@@ -29,7 +29,7 @@ import org.apache.dubbo.registry.RegistryFactory;
import org.apache.dubbo.registry.support.ProviderConsumerRegTable;
import org.apache.dubbo.registry.support.ProviderInvokerWrapper;
-import java.util.List;
+import java.util.Collection;
import java.util.Set;
@Cmd(name = "online", summary = "online dubbo", example = {
@@ -50,7 +50,7 @@ public class Online implements BaseCommand {
boolean hasService = false;
- List<ProviderModel> providerModelList =
ApplicationModel.allProviderModels();
+ Collection<ProviderModel> providerModelList =
ApplicationModel.allProviderModels();
for (ProviderModel providerModel : providerModelList) {
if (providerModel.getServiceName().matches(servicePattern)) {
hasService = true;