You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@dubbo.apache.org by GitBox <gi...@apache.org> on 2018/11/20 02:10:34 UTC

[GitHub] wolf427 closed pull request #186: 代码重构,修复bug,加注释

wolf427 closed pull request #186: 代码重构,修复bug,加注释
URL: https://github.com/apache/incubator-dubbo-ops/pull/186
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/controller/ServiceController.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/controller/ServiceController.java
index b21f72d..5f7894e 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/controller/ServiceController.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/controller/ServiceController.java
@@ -50,56 +50,11 @@ public ServiceController(ProviderService providerService, ConsumerService consum
     public Set<ServiceDTO> searchService(@RequestParam String pattern,
                                          @RequestParam String filter,@PathVariable String env) {
 
-        List<Provider> providers = new ArrayList<>();
-        if (!filter.contains("*") && !filter.contains("?")) {
-            if (pattern.equals("ip")) {
-                providers = providerService.findByAddress(filter);
-            } else if (pattern.equals("serviceName")) {
-                providers = providerService.findByService(filter);
-            } else if (pattern.equals("application")) {
-                providers = providerService.findByApplication(filter);
-            }
-        } else {
-            List<String> candidates = Collections.emptyList();
-            if (pattern.equals("serviceName")) {
-               candidates = providerService.findServices();
-            } else if (pattern.equals("application")) {
-                candidates = providerService.findApplications();
-            }
-            filter = filter.toLowerCase().replace(".", "\\.");
-            if (filter.startsWith("*")) {
-                filter = "." + filter;
-            }
-            Pattern regex = Pattern.compile(filter);
-            for (String candidate : candidates) {
-                Matcher matcher = regex.matcher(candidate);
-                if (matcher.matches() || matcher.lookingAt()) {
-                    if (pattern.equals("serviceName")) {
-                        providers.addAll(providerService.findByService(candidate));
-                    } else {
-                        providers.addAll(providerService.findByApplication(candidate));
-                    }
-                }
-            }
-        }
-
-        Set<ServiceDTO> result = new TreeSet<>();
-        for (Provider provider : providers) {
-            Map<String, String> map = StringUtils.parseQueryString(provider.getParameters());
-            String app = provider.getApplication();
-            String service = map.get(Constants.INTERFACE_KEY);
-            String group = map.get(Constants.GROUP_KEY);
-            String version = map.get(Constants.VERSION_KEY);
-            ServiceDTO s = new ServiceDTO();
-            s.setAppName(app);
-            s.setService(service);
-            s.setGroup(group);
-            s.setVersion(version);
-            result.add(s);
-        }
-        return result;
+        return providerService.getServiceDTOS(pattern, filter, env);
     }
 
+
+
     @RequestMapping(value = "/{service}", method = RequestMethod.GET)
     public ServiceDetailDTO serviceDetail(@PathVariable String service, @PathVariable String env) {
         service = service.replace("*", "/");
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/ProviderService.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/ProviderService.java
index 5f2398d..4224443 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/ProviderService.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/ProviderService.java
@@ -16,13 +16,14 @@
  */
 package org.apache.dubbo.admin.governance.service;
 
+import org.apache.dubbo.admin.dto.ServiceDTO;
 import org.apache.dubbo.admin.registry.common.domain.Provider;
 
 import java.util.List;
+import java.util.Set;
 
 /**
  * ProviderService
- *
  */
 public interface ProviderService {
 
@@ -42,6 +43,11 @@
 
     Provider findProvider(String id);
 
+    /**
+     * Get all provider's service name
+     *
+     * @return list of all provider's service name
+     */
     List<String> findServices();
 
     List<String> findAddresses();
@@ -52,18 +58,36 @@
 
     List<String> findApplicationsByServiceName(String serviceName);
 
+    /**
+     * Get provider list with specific service name.
+     *
+     * @param serviceName specific service name, cannot be fuzzy string
+     * @return list of provider object
+     */
     List<Provider> findByService(String serviceName);
 
     List<Provider> findByAppandService(String app, String serviceName);
 
     List<Provider> findAll();
 
+    /**
+     * Get provider list with specific ip address.
+     *
+     * @param providerAddress provider's ip address
+     * @return list of provider object
+     */
     List<Provider> findByAddress(String providerAddress);
 
     List<String> findServicesByAddress(String providerAddress);
 
     List<String> findApplications();
 
+    /**
+     * Get provider list with specific application name.
+     *
+     * @param application specific application name
+     * @return list of provider object
+     */
     List<Provider> findByApplication(String application);
 
     List<String> findServicesByApplication(String application);
@@ -72,4 +96,17 @@
 
     Provider findByServiceAndAddress(String service, String address);
 
+    /**
+     * Get a set of service data object.
+     *
+     * ServiceDTO object contains base information include
+     * service name , application, group and version.
+     *
+     * @param pattern {@code String} type of search
+     * @param filter  {@code String} input filter string
+     * @param env     {@code String}the environment of front end
+     * @return a set of services for fore-end page
+     */
+    Set<ServiceDTO> getServiceDTOS(String pattern, String filter, String env);
+
 }
\ No newline at end of file
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/ProviderServiceImpl.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/ProviderServiceImpl.java
index 04ebe31..2066164 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/ProviderServiceImpl.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/ProviderServiceImpl.java
@@ -19,26 +19,26 @@
 import com.alibaba.dubbo.common.Constants;
 import com.alibaba.dubbo.common.URL;
 import com.alibaba.dubbo.common.utils.StringUtils;
+import org.apache.dubbo.admin.dto.ServiceDTO;
 import org.apache.dubbo.admin.governance.service.OverrideService;
 import org.apache.dubbo.admin.governance.service.ProviderService;
 import org.apache.dubbo.admin.governance.sync.util.Pair;
 import org.apache.dubbo.admin.governance.sync.util.SyncUtils;
+import org.apache.dubbo.admin.governance.util.WebConstants;
 import org.apache.dubbo.admin.registry.common.domain.Override;
 import org.apache.dubbo.admin.registry.common.domain.Provider;
 import org.apache.dubbo.admin.registry.common.route.ParseUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.Map.Entry;
 import java.util.concurrent.ConcurrentMap;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 /**
  * IbatisProviderService
- *
  */
 @Component
 public class ProviderServiceImpl extends AbstractService implements ProviderService {
@@ -470,4 +470,69 @@ public Provider findByServiceAndAddress(String service, String address) {
         }
     }
 
+    public Set<ServiceDTO> getServiceDTOS(String pattern, String filter, String env) {
+        List<Provider> providers = new ArrayList<>();
+        if (!filter.contains("*") && !filter.contains("?")) {
+            // filter with specific string
+            if (WebConstants.IP_KEY.equals(pattern)) {
+                providers = findByAddress(filter);
+            } else if (WebConstants.SERVICE_NAME_KEY.equals(pattern)) {
+                providers = findByService(filter);
+            } else if (WebConstants.APPLICATION_KEY.equals(pattern)) {
+                providers = findByApplication(filter);
+            }
+        } else {
+            // filter with fuzzy search
+            List<String> candidates = Collections.emptyList();
+            if (WebConstants.SERVICE_NAME_KEY.equals(pattern)) {
+                candidates = findServices();
+            } else if (WebConstants.APPLICATION_KEY.equals(pattern)) {
+                candidates = findApplications();
+            }
+            // replace dot symbol and asterisk symbol to java-based regex pattern
+            filter = filter.toLowerCase().replace(".", "\\.");
+            if (filter.startsWith("*")) {
+                filter = "." + filter;
+            }
+            Pattern regex = Pattern.compile(filter, Pattern.CASE_INSENSITIVE); // search with no case insensitive
+            for (String candidate : candidates) {
+                Matcher matcher = regex.matcher(candidate);
+                if (matcher.matches() || matcher.lookingAt()) {
+                    if (WebConstants.SERVICE_NAME_KEY.equals(pattern)) {
+                        providers.addAll(findByService(candidate));
+                    } else {
+                        providers.addAll(findByApplication(candidate));
+                    }
+                }
+            }
+        }
+
+        Set<ServiceDTO> result = convertProviders2DTO(providers);
+        return result;
+    }
+
+    /**
+     * Convert provider list to ServiceDTO list
+     *
+     * @param providers list of providers
+     * @return ServiceDTO list of front page
+     */
+    public Set<ServiceDTO> convertProviders2DTO(List<Provider> providers) {
+        Set<ServiceDTO> result = new TreeSet<>();
+        for (Provider provider : providers) {
+            Map<String, String> map = StringUtils.parseQueryString(provider.getParameters());
+            String app = provider.getApplication();
+            String service = map.get(Constants.INTERFACE_KEY);
+            String group = map.get(Constants.GROUP_KEY);
+            String version = map.get(Constants.VERSION_KEY);
+            ServiceDTO s = new ServiceDTO();
+            s.setAppName(app);
+            s.setService(service);
+            s.setGroup(group);
+            s.setVersion(version);
+            result.add(s);
+        }
+        return result;
+    }
+
 }
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/util/WebConstants.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/util/WebConstants.java
index aebaaf6..9adedb2 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/util/WebConstants.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/util/WebConstants.java
@@ -40,9 +40,17 @@
     /**
      * Service name
      */
-    public static final String SERVICE_NAME = "serviceName";
+    public static final String SERVICE_NAME_KEY = "serviceName";
     /**
-     * Service name
+     * application
+     */
+    public static final String APPLICATION_KEY = "application";
+    /**
+     * ip
+     */
+    public static final String IP_KEY = "ip";
+    /**
+     * entry
      */
     public static final String ENTRY = "entry";
     /**
diff --git a/dubbo-admin-frontend/src/components/ServiceSearch.vue b/dubbo-admin-frontend/src/components/ServiceSearch.vue
index f3c61c0..02f2928 100644
--- a/dubbo-admin-frontend/src/components/ServiceSearch.vue
+++ b/dubbo-admin-frontend/src/components/ServiceSearch.vue
@@ -35,6 +35,7 @@
                   :suffix="queryBy"
                   :hint="hint"
                   label="Search Dubbo Services"
+                  @keyup.enter="submit"
                 ></v-combobox>
                   <v-menu class="hidden-xs-only">
                     <v-btn slot="activator" large icon>


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@dubbo.apache.org
For additional commands, e-mail: notifications-help@dubbo.apache.org