IP地址检索服务支持*模糊查询 (#389)
diff --git a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/common/util/SyncUtils.java b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/common/util/SyncUtils.java
index 293de8f..9902039 100644
--- a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/common/util/SyncUtils.java
+++ b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/common/util/SyncUtils.java
@@ -33,6 +33,8 @@
public static final String ID_FILTER_KEY = ".id";
+ public static final String COLON = ":";
+
public static Provider url2Provider(Pair<String, URL> pair) {
if (pair == null) {
return null;
@@ -140,9 +142,18 @@
String value = e.getValue();
if (ADDRESS_FILTER_KEY.equals(key)) {
- if (!value.equals(url.getIp())) {
- match = false;
- break;
+ // value is address:port
+ if (value.contains(COLON)) {
+ if (!value.equals(url.getIp() + COLON + url.getPort())) {
+ match = false;
+ break;
+ }
+ }
+ else { // value is just address
+ if (!value.equals(url.getIp())) {
+ match = false;
+ break;
+ }
}
} else {
if (!value.equals(url.getParameter(key))) {
diff --git a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/service/impl/ProviderServiceImpl.java b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/service/impl/ProviderServiceImpl.java
index 8ea6d7d..a68be44 100644
--- a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/service/impl/ProviderServiceImpl.java
+++ b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/service/impl/ProviderServiceImpl.java
@@ -43,7 +43,7 @@
import java.util.concurrent.ConcurrentMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-
+import java.util.stream.Collectors;
@Component
public class ProviderServiceImpl extends AbstractService implements ProviderService {
@@ -421,6 +421,9 @@
} else if (Constants.APPLICATION.equals(pattern)) {
candidates = findApplications();
}
+ else if (Constants.IP.equals(pattern)) {
+ candidates = findAddresses().stream().collect(Collectors.toSet());
+ }
// replace dot symbol and asterisk symbol to java-based regex pattern
filter = filter.toLowerCase().replace(Constants.PUNCTUATION_POINT, Constants.PUNCTUATION_SEPARATOR_POINT);
// filter start with [* 、? 、+] will triggering PatternSyntaxException
@@ -435,7 +438,11 @@
if (matcher.matches() || matcher.lookingAt()) {
if (Constants.SERVICE.equals(pattern)) {
providers.addAll(findByService(candidate));
- } else {
+ }
+ else if (Constants.IP.equals(pattern)) {
+ providers.addAll(findByAddress(candidate));
+ }
+ else {
providers.addAll(findByApplication(candidate));
}
}