Skip to content

Commit

Permalink
Merge pull request #5 from cvictory/merge-3.x
Browse files Browse the repository at this point in the history
refactor online and offline
  • Loading branch information
chickenlj authored Oct 10, 2019
2 parents 7e0ef42 + 288aa4a commit c152c3c
Show file tree
Hide file tree
Showing 5 changed files with 129 additions and 64 deletions.
Original file line number Diff line number Diff line change
@@ -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;
}

}
10 changes: 1 addition & 9 deletions dubbo-common/src/main/java/org/apache/dubbo/common/URL.java
Original file line number Diff line number Diff line change
Expand Up @@ -1294,15 +1294,7 @@ public String getPathKey() {
}

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() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
})
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) {
Expand All @@ -47,13 +47,23 @@ public String execute(CommandContext commandContext, String[] args) {
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;
Expand All @@ -64,11 +74,6 @@ public String execute(CommandContext commandContext, String[] args) {
}
}
}

if (hasService) {
return "OK";
} else {
return "service not found";
}
return hasService;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
})
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) {
Expand All @@ -49,13 +49,23 @@ public String execute(CommandContext commandContext, String[] args) {
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;
Expand All @@ -66,12 +76,6 @@ public String execute(CommandContext commandContext, String[] args) {
}
}
}

if (hasService) {
return "OK";
} else {
return "service not found";
}

return hasService;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,23 +16,21 @@
*/
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;

/**
* 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 */
Expand All @@ -45,15 +43,15 @@ public ServiceMetadata(String serviceInterfaceName, String group, String version
this.defaultGroup = group;
this.group = group;
this.version = version;
this.serviceKey = serviceInterfaceName + ":" + version;
this.serviceKey = URL.buildKey(serviceInterfaceName, group, version);
this.serviceType = serviceType;
}

public ServiceMetadata() {
}

public String getServiceKey() {
return serviceInterfaceName + ":" + version;
return serviceKey;
}

public Map<String, Object> getAttachments() {
Expand All @@ -80,46 +78,18 @@ public Class<?> getServiceType() {
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;
}
Expand Down

0 comments on commit c152c3c

Please sign in to comment.