You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by li...@apache.org on 2019/11/03 05:34:33 UTC
[dubbo] 01/12: refactor online and offline
This is an automated email from the ASF dual-hosted git repository.
liujun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/dubbo.git
commit 288aa4a417d25fbc936abb09ae17802bc75e9459
Author: cvictory <sh...@gmail.com>
AuthorDate: Thu Oct 10 15:10:48 2019 +0800
refactor online and offline
---
.../org/apache/dubbo/common/ServiceDescriptor.java | 94 ++++++++++++++++++++++
.../src/main/java/org/apache/dubbo/common/URL.java | 10 +--
.../org/apache/dubbo/qos/command/impl/Offline.java | 23 +++---
.../org/apache/dubbo/qos/command/impl/Online.java | 24 +++---
.../apache/dubbo/rpc/model/ServiceMetadata.java | 42 ++--------
5 files changed, 129 insertions(+), 64 deletions(-)
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/ServiceDescriptor.java b/dubbo-common/src/main/java/org/apache/dubbo/common/ServiceDescriptor.java
new file mode 100644
index 0000000..c072141
--- /dev/null
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/ServiceDescriptor.java
@@ -0,0 +1,94 @@
+package org.apache.dubbo.common;
+
+import org.apache.dubbo.common.utils.StringUtils;
+
+/**
+ * 2019-10-10
+ */
+public class ServiceDescriptor {
+ public static final char COLON_SEPERATOR = ':';
+
+ protected String serviceKey;
+ protected String serviceInterfaceName;
+ protected String version;
+ protected volatile String group;
+
+ public static String buildServiceKey(String path, String group, String version) {
+ StringBuilder buf = new StringBuilder();
+ if (group != null && group.length() > 0) {
+ buf.append(group).append("/");
+ }
+ buf.append(path);
+ if (version != null && version.length() > 0) {
+ buf.append(":").append(version);
+ }
+ return buf.toString();
+ }
+
+ /**
+ * Format : interface:version:group
+ *
+ * @return
+ */
+ public String getDisplayServiceKey() {
+ StringBuilder serviceNameBuilder = new StringBuilder();
+ serviceNameBuilder.append(serviceInterfaceName);
+ serviceNameBuilder.append(COLON_SEPERATOR).append(version);
+ serviceNameBuilder.append(COLON_SEPERATOR).append(group);
+ return serviceNameBuilder.toString();
+ }
+
+ public static ServiceDescriptor revertDisplayServiceKey(String displayKey) {
+ String[] eles = StringUtils.split(displayKey, COLON_SEPERATOR);
+ if (eles == null || eles.length < 1 || eles.length > 3) {
+ return new ServiceDescriptor();
+ }
+ ServiceDescriptor serviceDescriptor = new ServiceDescriptor();
+ serviceDescriptor.setServiceInterfaceName(eles[0]);
+ if (eles.length > 1) {
+ serviceDescriptor.setVersion(eles[1]);
+ }
+ if (eles.length == 3) {
+ serviceDescriptor.setGroup(eles[2]);
+ }
+
+ return serviceDescriptor;
+ }
+
+ public String getServiceKey() {
+ return serviceKey;
+ }
+
+ public void generateServiceKey() {
+ this.serviceKey = buildServiceKey(serviceInterfaceName, group, version);
+ }
+
+ public void setServiceKey(String serviceKey) {
+ this.serviceKey = serviceKey;
+ }
+
+ public String getServiceInterfaceName() {
+ return serviceInterfaceName;
+ }
+
+ public void setServiceInterfaceName(String serviceInterfaceName) {
+ this.serviceInterfaceName = serviceInterfaceName;
+ }
+
+ public String getVersion() {
+ return version;
+ }
+
+ public void setVersion(String version) {
+ this.version = version;
+ }
+
+ public String getGroup() {
+ return group;
+ }
+
+ public void setGroup(String group) {
+ this.group = group;
+ }
+
+}
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/URL.java b/dubbo-common/src/main/java/org/apache/dubbo/common/URL.java
index 8da1f53..6a34fdd 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/URL.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/URL.java
@@ -1294,15 +1294,7 @@ class URL implements Serializable {
}
public static String buildKey(String path, String group, String version) {
- StringBuilder buf = new StringBuilder();
- if (group != null && group.length() > 0) {
- buf.append(group).append("/");
- }
- buf.append(path);
- if (version != null && version.length() > 0) {
- buf.append(":").append(version);
- }
- return buf.toString();
+ return ServiceDescriptor.buildServiceKey(path, group, version);
}
public String toServiceStringWithoutResolving() {
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 79c41f3..c44cc41 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
@@ -38,7 +38,7 @@ import java.util.Set;
})
public class Offline implements BaseCommand {
private Logger logger = LoggerFactory.getLogger(Offline.class);
- private RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory.class).getAdaptiveExtension();
+ private static RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory.class).getAdaptiveExtension();
@Override
public String execute(CommandContext commandContext, String[] args) {
@@ -47,13 +47,23 @@ public class Offline implements BaseCommand {
if (args != null && args.length > 0) {
servicePattern = args[0];
}
- boolean hasService = false;
+ boolean hasService = offline(servicePattern);
+
+ if (hasService) {
+ return "OK";
+ } else {
+ return "service not found";
+ }
+ }
+ public static boolean offline(String servicePattern) {
+ boolean hasService = false;
Collection<ProviderModel> providerModelList = ApplicationModel.allProviderModels();
for (ProviderModel providerModel : providerModelList) {
if (providerModel.getServiceName().matches(servicePattern)) {
hasService = true;
- Set<ProviderInvokerWrapper> providerInvokerWrapperSet = ProviderConsumerRegTable.getProviderInvoker(providerModel.getServiceName());
+ Set<ProviderInvokerWrapper> providerInvokerWrapperSet = ProviderConsumerRegTable
+ .getProviderInvoker(providerModel.getServiceMetadata().getServiceKey());
for (ProviderInvokerWrapper providerInvokerWrapper : providerInvokerWrapperSet) {
if (!providerInvokerWrapper.isReg()) {
continue;
@@ -64,11 +74,6 @@ public class Offline implements BaseCommand {
}
}
}
-
- if (hasService) {
- return "OK";
- } else {
- return "service not found";
- }
+ return hasService;
}
}
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 30ba14b..c72098f 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
@@ -39,7 +39,7 @@ import java.util.Set;
})
public class Online implements BaseCommand {
private Logger logger = LoggerFactory.getLogger(Online.class);
- private RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory.class).getAdaptiveExtension();
+ private static RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory.class).getAdaptiveExtension();
@Override
public String execute(CommandContext commandContext, String[] args) {
@@ -49,13 +49,23 @@ public class Online implements BaseCommand {
servicePattern = args[0];
}
- boolean hasService = false;
+ boolean hasService = online(servicePattern);
+
+ if (hasService) {
+ return "OK";
+ } else {
+ return "service not found";
+ }
+
+ }
+ public static boolean online(String servicePattern){
+ boolean hasService = false;
Collection<ProviderModel> providerModelList = ApplicationModel.allProviderModels();
for (ProviderModel providerModel : providerModelList) {
if (providerModel.getServiceName().matches(servicePattern)) {
hasService = true;
- Set<ProviderInvokerWrapper> providerInvokerWrapperSet = ProviderConsumerRegTable.getProviderInvoker(providerModel.getServiceName());
+ Set<ProviderInvokerWrapper> providerInvokerWrapperSet = ProviderConsumerRegTable.getProviderInvoker(providerModel.getServiceMetadata().getServiceKey());
for (ProviderInvokerWrapper providerInvokerWrapper : providerInvokerWrapperSet) {
if (providerInvokerWrapper.isReg()) {
continue;
@@ -66,12 +76,6 @@ public class Online implements BaseCommand {
}
}
}
-
- if (hasService) {
- return "OK";
- } else {
- return "service not found";
- }
-
+ return hasService;
}
}
diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/model/ServiceMetadata.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/model/ServiceMetadata.java
index 5a09f45..0bf34d2 100644
--- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/model/ServiceMetadata.java
+++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/model/ServiceMetadata.java
@@ -16,6 +16,9 @@
*/
package org.apache.dubbo.rpc.model;
+import org.apache.dubbo.common.ServiceDescriptor;
+import org.apache.dubbo.common.URL;
+
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -23,16 +26,11 @@ import java.util.concurrent.ConcurrentHashMap;
* data related to service level such as name, version, classloader of business service,
* security info, etc. Also with a AttributeMap for extension.
*/
-public class ServiceMetadata {
+public class ServiceMetadata extends ServiceDescriptor {
- private String serviceKey;
- private String serviceInterfaceName;
private String defaultGroup;
- private String version;
private Class<?> serviceType;
- private volatile String group;
-
private Object target;
/* will be transferred to remote side */
@@ -45,7 +43,7 @@ public class ServiceMetadata {
this.defaultGroup = group;
this.group = group;
this.version = version;
- this.serviceKey = serviceInterfaceName + ":" + version;
+ this.serviceKey = URL.buildKey(serviceInterfaceName, group, version);
this.serviceType = serviceType;
}
@@ -53,7 +51,7 @@ public class ServiceMetadata {
}
public String getServiceKey() {
- return serviceInterfaceName + ":" + version;
+ return serviceKey;
}
public Map<String, Object> getAttachments() {
@@ -80,46 +78,18 @@ public class ServiceMetadata {
return serviceType;
}
- public String getServiceInterfaceName() {
- return serviceInterfaceName;
- }
-
public String getDefaultGroup() {
return defaultGroup;
}
- public String getVersion() {
- return version;
- }
-
- public String getGroup() {
- return group;
- }
-
- public void setGroup(String group) {
- this.group = group;
- }
-
- public void setServiceInterfaceName(String serviceInterfaceName) {
- this.serviceInterfaceName = serviceInterfaceName;
- }
-
public void setDefaultGroup(String defaultGroup) {
this.defaultGroup = defaultGroup;
}
- public void setVersion(String version) {
- this.version = version;
- }
-
public void setServiceType(Class<?> serviceType) {
this.serviceType = serviceType;
}
- public void setServiceKey(String serviceKey) {
- this.serviceKey = serviceKey;
- }
-
public Object getTarget() {
return target;
}