You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by hu...@apache.org on 2019/04/07 09:56:39 UTC
[incubator-dubbo] branch master updated: Polish code and fix some
documentation errors (#3818)
This is an automated email from the ASF dual-hosted git repository.
huxing 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 2be39f0 Polish code and fix some documentation errors (#3818)
2be39f0 is described below
commit 2be39f0484f95003130612fc08a6e11618975dfb
Author: Alex <ch...@163.com>
AuthorDate: Sun Apr 7 17:56:03 2019 +0800
Polish code and fix some documentation errors (#3818)
---
.../apache/dubbo/registry/nacos/NacosRegistry.java | 236 +++++++++------------
.../dubbo/registry/nacos/NacosRegistryFactory.java | 2 +-
2 files changed, 98 insertions(+), 140 deletions(-)
diff --git a/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosRegistry.java b/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosRegistry.java
index 31ca2a8..da00a9d 100644
--- a/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosRegistry.java
+++ b/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosRegistry.java
@@ -27,7 +27,6 @@ import org.apache.dubbo.registry.support.FailbackRegistry;
import com.alibaba.nacos.api.exception.NacosException;
import com.alibaba.nacos.api.naming.NamingService;
-import com.alibaba.nacos.api.naming.listener.Event;
import com.alibaba.nacos.api.naming.listener.EventListener;
import com.alibaba.nacos.api.naming.listener.NamingEvent;
import com.alibaba.nacos.api.naming.pojo.Instance;
@@ -39,7 +38,6 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
@@ -92,8 +90,7 @@ public class NacosRegistry extends FailbackRegistry {
/**
* The separator for service name
- *
- * @revert change a constant to be configurable, it's designed for Windows file name that is compatible with old
+ * Change a constant to be configurable, it's designed for Windows file name that is compatible with old
* Nacos binary release(< 0.6.1)
*/
private static final String SERVICE_NAME_SEPARATOR = System.getProperty("nacos.service.name.separator", ":");
@@ -122,7 +119,7 @@ public class NacosRegistry extends FailbackRegistry {
public NacosRegistry(URL url, NamingService namingService) {
super(url);
this.namingService = namingService;
- this.nacosListeners = new ConcurrentHashMap<String, EventListener>();
+ this.nacosListeners = new ConcurrentHashMap<>();
}
@Override
@@ -132,15 +129,12 @@ public class NacosRegistry extends FailbackRegistry {
@Override
public List<URL> lookup(final URL url) {
- final List<URL> urls = new LinkedList<URL>();
- execute(new NamingServiceCallback() {
- @Override
- public void callback(NamingService namingService) throws NacosException {
- List<String> serviceNames = getServiceNames(url, null);
- for (String serviceName : serviceNames) {
- List<Instance> instances = namingService.getAllInstances(serviceName);
- urls.addAll(buildURLs(url, instances));
- }
+ final List<URL> urls = new LinkedList<>();
+ execute(namingService -> {
+ List<String> serviceNames = getServiceNames(url, null);
+ for (String serviceName : serviceNames) {
+ List<Instance> instances = namingService.getAllInstances(serviceName);
+ urls.addAll(buildURLs(url, instances));
}
});
return urls;
@@ -150,21 +144,15 @@ public class NacosRegistry extends FailbackRegistry {
public void doRegister(URL url) {
final String serviceName = getServiceName(url);
final Instance instance = createInstance(url);
- execute(new NamingServiceCallback() {
- public void callback(NamingService namingService) throws NacosException {
- namingService.registerInstance(serviceName, instance);
- }
- });
+ execute(namingService -> namingService.registerInstance(serviceName, instance));
}
@Override
public void doUnregister(final URL url) {
- execute(new NamingServiceCallback() {
- public void callback(NamingService namingService) throws NacosException {
- String serviceName = getServiceName(url);
- Instance instance = createInstance(url);
- namingService.deregisterInstance(serviceName, instance.getIp(), instance.getPort());
- }
+ execute(namingService -> {
+ String serviceName = getServiceName(url);
+ Instance instance = createInstance(url);
+ namingService.deregisterInstance(serviceName, instance.getIp(), instance.getPort());
});
}
@@ -175,14 +163,11 @@ public class NacosRegistry extends FailbackRegistry {
}
private void doSubscribe(final URL url, final NotifyListener listener, final List<String> serviceNames) {
- execute(new NamingServiceCallback() {
- @Override
- public void callback(NamingService namingService) throws NacosException {
- for (String serviceName : serviceNames) {
- List<Instance> instances = namingService.getAllInstances(serviceName);
- notifySubscriber(url, listener, instances);
- subscribeEventListener(serviceName, url, listener);
- }
+ execute(namingService -> {
+ for (String serviceName : serviceNames) {
+ List<Instance> instances = namingService.getAllInstances(serviceName);
+ notifySubscriber(url, listener, instances);
+ subscribeEventListener(serviceName, url, listener);
}
});
}
@@ -223,26 +208,20 @@ public class NacosRegistry extends FailbackRegistry {
private void scheduleServiceNamesLookup(final URL url, final NotifyListener listener) {
if (scheduledExecutorService == null) {
scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
- scheduledExecutorService.scheduleAtFixedRate(new Runnable() {
- @Override
- public void run() {
- List<String> serviceNames = getAllServiceNames();
- filterData(serviceNames, new NacosDataFilter<String>() {
- @Override
- public boolean accept(String serviceName) {
- boolean accepted = false;
- for (String category : ALL_SUPPORTED_CATEGORIES) {
- String prefix = category + SERVICE_NAME_SEPARATOR;
- if (StringUtils.startsWith(serviceName, prefix)) {
- accepted = true;
- break;
- }
- }
- return accepted;
+ scheduledExecutorService.scheduleAtFixedRate(() -> {
+ List<String> serviceNames = getAllServiceNames();
+ filterData(serviceNames, serviceName -> {
+ boolean accepted = false;
+ for (String category : ALL_SUPPORTED_CATEGORIES) {
+ String prefix = category + SERVICE_NAME_SEPARATOR;
+ if (StringUtils.startsWith(serviceName, prefix)) {
+ accepted = true;
+ break;
}
- });
- doSubscribe(url, listener, serviceNames);
- }
+ }
+ return accepted;
+ });
+ doSubscribe(url, listener, serviceNames);
}, LOOKUP_INTERVAL, LOOKUP_INTERVAL, TimeUnit.SECONDS);
}
}
@@ -261,34 +240,31 @@ public class NacosRegistry extends FailbackRegistry {
private List<String> getAllServiceNames() {
- final List<String> serviceNames = new LinkedList<String>();
-
- execute(new NamingServiceCallback() {
- @Override
- public void callback(NamingService namingService) throws NacosException {
-
- int pageIndex = 1;
- ListView<String> listView = namingService.getServicesOfServer(pageIndex, PAGINATION_SIZE);
- // First page data
- List<String> firstPageData = listView.getData();
- // Append first page into list
- serviceNames.addAll(firstPageData);
- // the total count
- int count = listView.getCount();
- // the number of pages
- int pageNumbers = count / PAGINATION_SIZE;
- int remainder = count % PAGINATION_SIZE;
- // remain
- if (remainder > 0) {
- pageNumbers += 1;
- }
- // If more than 1 page
- while (pageIndex < pageNumbers) {
- listView = namingService.getServicesOfServer(++pageIndex, PAGINATION_SIZE);
- serviceNames.addAll(listView.getData());
- }
-
+ final List<String> serviceNames = new LinkedList<>();
+
+ execute(namingService -> {
+
+ int pageIndex = 1;
+ ListView<String> listView = namingService.getServicesOfServer(pageIndex, PAGINATION_SIZE);
+ // First page data
+ List<String> firstPageData = listView.getData();
+ // Append first page into list
+ serviceNames.addAll(firstPageData);
+ // the total count
+ int count = listView.getCount();
+ // the number of pages
+ int pageNumbers = count / PAGINATION_SIZE;
+ int remainder = count % PAGINATION_SIZE;
+ // remain
+ if (remainder > 0) {
+ pageNumbers += 1;
+ }
+ // If more than 1 page
+ while (pageIndex < pageNumbers) {
+ listView = namingService.getServicesOfServer(++pageIndex, PAGINATION_SIZE);
+ serviceNames.addAll(listView.getData());
}
+
});
return serviceNames;
@@ -304,61 +280,50 @@ public class NacosRegistry extends FailbackRegistry {
final String targetGroup = url.getParameter(GROUP_KEY);
- filterData(serviceNames, new NacosDataFilter<String>() {
- @Override
- public boolean accept(String serviceName) {
- // split service name to segments
- // (required) segments[0] = category
- // (required) segments[1] = serviceInterface
- // (required) segments[2] = version
- // (optional) segments[3] = group
- String[] segments = StringUtils.split(serviceName, SERVICE_NAME_SEPARATOR);
- int length = segments.length;
- if (length < 3) { // must present 3 segments or more
- return false;
- }
-
- String category = segments[CATEGORY_INDEX];
- if (!ArrayUtils.contains(categories, category)) { // no match category
- return false;
- }
-
- String serviceInterface = segments[SERVICE_INTERFACE_INDEX];
- if (!WILDCARD.equals(targetServiceInterface) &&
- !StringUtils.equals(targetServiceInterface, serviceInterface)) { // no match service interface
- return false;
- }
+ filterData(serviceNames, serviceName -> {
+ // split service name to segments
+ // (required) segments[0] = category
+ // (required) segments[1] = serviceInterface
+ // (required) segments[2] = version
+ // (optional) segments[3] = group
+ String[] segments = StringUtils.split(serviceName, SERVICE_NAME_SEPARATOR);
+ int length = segments.length;
+ if (length < 3) { // must present 3 segments or more
+ return false;
+ }
- String version = segments[SERVICE_VERSION_INDEX];
- if (!WILDCARD.equals(targetVersion) &&
- !StringUtils.equals(targetVersion, version)) { // no match service version
- return false;
- }
+ String category = segments[CATEGORY_INDEX];
+ if (!ArrayUtils.contains(categories, category)) { // no match category
+ return false;
+ }
- String group = length > 3 ? segments[SERVICE_GROUP_INDEX] : null;
- if (group != null && !WILDCARD.equals(targetGroup)
- && !StringUtils.equals(targetGroup, group)) { // no match service group
- return false;
- }
+ String serviceInterface = segments[SERVICE_INTERFACE_INDEX];
+ if (!WILDCARD.equals(targetServiceInterface) &&
+ !StringUtils.equals(targetServiceInterface, serviceInterface)) { // no match service interface
+ return false;
+ }
- return true;
+ String version = segments[SERVICE_VERSION_INDEX];
+ if (!WILDCARD.equals(targetVersion) &&
+ !StringUtils.equals(targetVersion, version)) { // no match service version
+ return false;
}
+
+ String group = length > 3 ? segments[SERVICE_GROUP_INDEX] : null;
+ // no match service group
+ return group == null || WILDCARD.equals(targetGroup)
+ || StringUtils.equals(targetGroup, group);
});
}
private <T> void filterData(Collection<T> collection, NacosDataFilter<T> filter) {
- Iterator<T> iterator = collection.iterator();
- while (iterator.hasNext()) {
- T data = iterator.next();
- if (!filter.accept(data)) { // remove if not accept
- iterator.remove();
- }
- }
+ // remove if not accept
+ collection.removeIf(data -> !filter.accept(data));
}
private List<String> doGetServiceNames(URL url) {
String[] categories = getCategories(url);
- List<String> serviceNames = new ArrayList<String>(categories.length);
+ List<String> serviceNames = new ArrayList<>(categories.length);
for (String category : categories) {
final String serviceName = getServiceName(url, category);
serviceNames.add(serviceName);
@@ -370,7 +335,7 @@ public class NacosRegistry extends FailbackRegistry {
if (instances.isEmpty()) {
return Collections.emptyList();
}
- List<URL> urls = new LinkedList<URL>();
+ List<URL> urls = new LinkedList<>();
for (Instance instance : instances) {
URL url = buildURL(instance);
if (UrlUtils.isMatch(consumerURL, url)) {
@@ -383,12 +348,10 @@ public class NacosRegistry extends FailbackRegistry {
private void subscribeEventListener(String serviceName, final URL url, final NotifyListener listener)
throws NacosException {
if (!nacosListeners.containsKey(serviceName)) {
- EventListener eventListener = new EventListener() {
- public void onEvent(Event event) {
- if (event instanceof NamingEvent) {
- NamingEvent e = (NamingEvent) event;
- notifySubscriber(url, listener, e.getInstances());
- }
+ EventListener eventListener = event -> {
+ if (event instanceof NamingEvent) {
+ NamingEvent e = (NamingEvent) event;
+ notifySubscriber(url, listener, e.getInstances());
}
};
namingService.subscribe(serviceName, eventListener);
@@ -404,7 +367,7 @@ public class NacosRegistry extends FailbackRegistry {
* @param instances all {@link Instance instances}
*/
private void notifySubscriber(URL url, NotifyListener listener, Collection<Instance> instances) {
- List<Instance> healthyInstances = new LinkedList<Instance>(instances);
+ List<Instance> healthyInstances = new LinkedList<>(instances);
// Healthy Instances
filterHealthyInstances(healthyInstances);
List<URL> urls = buildURLs(url, healthyInstances);
@@ -426,12 +389,11 @@ public class NacosRegistry extends FailbackRegistry {
Map<String, String> metadata = instance.getMetadata();
String protocol = metadata.get(Constants.PROTOCOL_KEY);
String path = metadata.get(Constants.PATH_KEY);
- URL url = new URL(protocol,
+ return new URL(protocol,
instance.getIp(),
instance.getPort(),
path,
instance.getMetadata());
- return url;
}
private Instance createInstance(URL url) {
@@ -445,7 +407,7 @@ public class NacosRegistry extends FailbackRegistry {
Instance instance = new Instance();
instance.setIp(ip);
instance.setPort(port);
- instance.setMetadata(new HashMap<String, String>(newURL.getParameters()));
+ instance.setMetadata(new HashMap<>(newURL.getParameters()));
return instance;
}
@@ -480,14 +442,10 @@ public class NacosRegistry extends FailbackRegistry {
}
private void filterHealthyInstances(Collection<Instance> instances) {
- filterData(instances, new NacosDataFilter<Instance>() {
- @Override
- public boolean accept(Instance data) {
- return data.isEnabled();
- }
- });
+ filterData(instances, Instance::isEnabled);
}
+ @SafeVarargs
private static <T> T[] of(T... values) {
return values;
}
diff --git a/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosRegistryFactory.java b/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosRegistryFactory.java
index d65580a..52dcd11 100644
--- a/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosRegistryFactory.java
+++ b/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosRegistryFactory.java
@@ -54,7 +54,7 @@ public class NacosRegistryFactory extends AbstractRegistryFactory {
private NamingService buildNamingService(URL url) {
Properties nacosProperties = buildNacosProperties(url);
- NamingService namingService = null;
+ NamingService namingService;
try {
namingService = NacosFactory.createNamingService(nacosProperties);
} catch (NacosException e) {