You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by mi...@apache.org on 2018/11/02 08:44:17 UTC

[incubator-dubbo-ops] branch develop updated: put group and version in service

This is an automated email from the ASF dual-hosted git repository.

min pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-ops.git


The following commit(s) were added to refs/heads/develop by this push:
     new 0946c9a  put group and version in service
0946c9a is described below

commit 0946c9ae1f313cf55fe427fd7c5f098d9b4190af
Author: nzomkxia <z8...@gmail.com>
AuthorDate: Fri Nov 2 16:44:05 2018 +0800

    put group and version in service
---
 .../dubbo/admin/controller/RoutesController.java   | 14 +------
 .../dubbo/admin/controller/ServiceController.java  | 21 ++++-------
 .../java/org/apache/dubbo/admin/dto/RouteDTO.java  | 17 ---------
 .../admin/governance/sync/util/SyncUtils.java      |  2 -
 .../dubbo/admin/registry/common/domain/Route.java  | 44 ++++++++--------------
 .../src/components/ServiceDetail.vue               | 44 +++++++++++++---------
 .../src/components/ServiceSearch.vue               | 20 ++++++++--
 7 files changed, 68 insertions(+), 94 deletions(-)

diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/controller/RoutesController.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/controller/RoutesController.java
index 148fc58..223a244 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/controller/RoutesController.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/controller/RoutesController.java
@@ -50,14 +50,7 @@ public class RoutesController {
         }
         if (StringUtils.isNotEmpty(serviceName)) {
             //2.6
-            String version = null;
-            String service = serviceName;
-            if (serviceName.contains(":") && !serviceName.endsWith(":")) {
-                version = serviceName.split(":")[1];
-                service = serviceName.split(":")[0];
-                routeDTO.setService(service);
-                routeDTO.setVersion(version);
-            }
+            routeDTO.setService(serviceName);
 
             Route route = convertRouteDTOtoRoute(routeDTO, null);
             routeService.createRoute(route);
@@ -74,7 +67,6 @@ public class RoutesController {
         if (route == null) {
             throw new ResourceNotFoundException("Unknown ID!");
         }
-        routeDTO.setVersion(route.getVersion());
         routeDTO.setService(route.getService());
         Route newRoute = convertRouteDTOtoRoute(routeDTO, id);
         routeService.updateRoute(newRoute);
@@ -164,10 +156,8 @@ public class RoutesController {
         String[] conditions = routeDTO.getConditions();
         String rule = parseCondition(conditions);
         route.setService(routeDTO.getService());
-        route.setVersion(routeDTO.getVersion());
         route.setEnabled(routeDTO.isEnabled());
         route.setForce(routeDTO.isForce());
-        route.setGroup(routeDTO.getGroup());
         route.setDynamic(routeDTO.isDynamic());
         route.setRuntime(routeDTO.isRuntime());
         route.setPriority(routeDTO.getPriority());
@@ -184,11 +174,9 @@ public class RoutesController {
         routeDTO.setConditions(new String[]{route.getRule()});
         routeDTO.setEnabled(route.isEnabled());
         routeDTO.setForce(route.isForce());
-        routeDTO.setGroup(route.getGroup());
         routeDTO.setPriority(route.getPriority());
         routeDTO.setRuntime(route.isRuntime());
         routeDTO.setService(route.getService());
-        routeDTO.setVersion(route.getVersion());
         if (id != null) {
             routeDTO.setId(route.getHash());
         }
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 4298065..ffba989 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
@@ -19,6 +19,7 @@ package org.apache.dubbo.admin.controller;
 
 import com.alibaba.dubbo.common.Constants;
 import com.alibaba.dubbo.common.utils.StringUtils;
+import com.sun.tools.classfile.ConstantPool;
 import org.apache.dubbo.admin.dto.ServiceDTO;
 import org.apache.dubbo.admin.dto.ServiceDetailDTO;
 import org.apache.dubbo.admin.governance.service.ConsumerService;
@@ -52,12 +53,8 @@ public class ServiceController {
         for (Provider provider : allProviders) {
             Map<String, String> map = StringUtils.parseQueryString(provider.getParameters());
             String app = provider.getApplication();
-            String service = provider.getService();
-            String group = null;
-            if (service.contains("/")) {
-                group = service.split("/")[0];
-                service = service.split("/")[1];
-            }
+            String service = map.get(Constants.INTERFACE_KEY);
+            String group = map.get(Constants.GROUP_KEY);
             String version = map.get(Constants.VERSION_KEY);
             String url = app + service + group + version;
             if (serviceUrl.contains(url)) {
@@ -96,6 +93,7 @@ public class ServiceController {
 
     @RequestMapping(value = "/{service}", method = RequestMethod.GET)
     public ServiceDetailDTO serviceDetail(@PathVariable String service) {
+        service = service.replace("*", "/");
         List<Provider> providers = providerService.findByService(service);
 
         List<Consumer> consumers = consumerService.findByService(service);
@@ -109,15 +107,12 @@ public class ServiceController {
     private ServiceDTO createService(Provider provider, Map<String, String> map) {
         ServiceDTO serviceDTO = new ServiceDTO();
         serviceDTO.setAppName(provider.getApplication());
-        String service = provider.getService();
-        String group = null;
-        if (service.contains("/")) {
-            group = service.split("/")[0];
-            service = service.split("/")[1];
-        }
+        String service = map.get(Constants.INTERFACE_KEY);
+        String group = map.get(Constants.GROUP_KEY);
+        String version = map.get(Constants.VERSION_KEY);
         serviceDTO.setService(service);
         serviceDTO.setGroup(group);
-        serviceDTO.setVersion(map.get(Constants.VERSION_KEY));
+        serviceDTO.setVersion(version);
         return serviceDTO;
     }
 
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/dto/RouteDTO.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/dto/RouteDTO.java
index caf1f06..a6e65d2 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/dto/RouteDTO.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/dto/RouteDTO.java
@@ -20,22 +20,13 @@ package org.apache.dubbo.admin.dto;
 public class RouteDTO extends BaseDTO{
     private String app;
     private String service;
-    private String group;
     private boolean dynamic;
     private int priority;
     private boolean enabled;
     private boolean force;
     private boolean runtime;
-    private String version;
     private String[] conditions;
 
-    public String getVersion() {
-        return version;
-    }
-
-    public void setVersion(String version) {
-        this.version = version;
-    }
 
     public String getApp() {
         return app;
@@ -53,14 +44,6 @@ public class RouteDTO extends BaseDTO{
         this.service = service;
     }
 
-    public String getGroup() {
-        return group;
-    }
-
-    public void setGroup(String group) {
-        this.group = group;
-    }
-
     public boolean isDynamic() {
         return dynamic;
     }
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/sync/util/SyncUtils.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/sync/util/SyncUtils.java
index ebaffbd..271e51d 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/sync/util/SyncUtils.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/sync/util/SyncUtils.java
@@ -122,8 +122,6 @@ public class SyncUtils {
         r.setForce(url.getParameter(Constants.FORCE_KEY, false));
         r.setDynamic(url.getParameter(Constants.DYNAMIC_KEY, false));
         r.setRuntime(url.getParameter(Constants.RUNTIME_KEY, false));
-        r.setGroup(url.getParameter(Constants.GROUP_KEY, (String)null));
-        r.setVersion(url.getParameter(Constants.VERSION_KEY, (String)null));
         r.setRule(url.getParameterAndDecoded(Constants.RULE_KEY));
         return r;
     }
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Route.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Route.java
index 45f63fc..d5531b3 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Route.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Route.java
@@ -65,10 +65,6 @@ public class Route extends Entity {
 
     private boolean force;
 
-    private String version;
-
-    private String group;
-
     private boolean dynamic;
 
     private boolean runtime;
@@ -146,22 +142,6 @@ public class Route extends Entity {
         this.runtime = runtime;
     }
 
-    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;
-    }
-
     public boolean isForce() {
         return force;
     }
@@ -231,17 +211,25 @@ public class Route extends Entity {
     }
 
     public URL toUrl() {
-//        if (filterRule != null && filterRule.endsWith("null")) {
-//            filterRule = null;
-//        } else {
-//            filterRule = filterRule.trim();
-//        }
-        return URL.valueOf(Constants.ROUTE_PROTOCOL + "://" + Constants.ANYHOST_VALUE + "/" + getService()
+        String group = null;
+        String version = null;
+        String path = service;
+        int i = path.indexOf("/");
+        if (i > 0) {
+            group = path.substring(0, i);
+            path = path.substring(i + 1);
+        }
+        i = path.lastIndexOf(":");
+        if (i > 0) {
+            version = path.substring(i + 1);
+            path = path.substring(0, i);
+        }
+        return URL.valueOf(Constants.ROUTE_PROTOCOL + "://" + Constants.ANYHOST_VALUE + "/" + path
                 + "?" + Constants.CATEGORY_KEY + "=" + Constants.ROUTERS_CATEGORY
                 + "&router=condition&runtime=" + isRuntime() + "&enabled=" + isEnabled() + "&priority=" + getPriority() + "&force=" + isForce() + "&dynamic=" + isDynamic()
                 + "&name=" + getName() + "&" + Constants.RULE_KEY + "=" + URL.encode(getMatchRule() + " => " + getFilterRule())
-                + (getGroup() == null ? "" : "&" + Constants.GROUP_KEY + "=" + getGroup())
-                + (getVersion() == null ? "" : "&" + Constants.VERSION_KEY + "=" + getVersion()));
+                + (group == null ? "" : "&" + Constants.GROUP_KEY + "=" + group)
+                + (version == null ? "" : "&" + Constants.VERSION_KEY + "=" + version));
     }
 
 }
diff --git a/dubbo-admin-frontend/src/components/ServiceDetail.vue b/dubbo-admin-frontend/src/components/ServiceDetail.vue
index 2f65e49..b671b4e 100644
--- a/dubbo-admin-frontend/src/components/ServiceDetail.vue
+++ b/dubbo-admin-frontend/src/components/ServiceDetail.vue
@@ -28,7 +28,7 @@
           hide-actions
           hide-headers >
           <template slot="items" slot-scope="props">
-            <td>{{props.item.role}} </td>
+            <td>{{props.item.name}} </td>
             <td>{{props.item.value}}</td>
           </template>
         </v-data-table>
@@ -183,26 +183,34 @@
     },
     mounted: function () {
       let query = this.$route.query
-      let app = ''
-      let service = ''
+      let meta = {
+        'service': '',
+        'app': '',
+        'group': '',
+        'version': ''
+      }
+      var vm = this
       Object.keys(query).forEach(function (key) {
-        if (key === 'app') {
-          app = query[key]
-        }
-        if (key === 'service') {
-          service = query[key]
+        if (key in meta) {
+          meta[key] = query[key]
         }
       })
-      if (service !== '') {
-        this.detail(service)
-        let serviceItem = {}
-        serviceItem.role = 'Service Name'
-        serviceItem.value = service
-        this.basic.push(serviceItem)
-        let appItem = {}
-        appItem.role = 'Application Name'
-        appItem.value = app
-        this.basic.push(appItem)
+      let dataId = meta['service']
+      if (meta['group'] !== '') {
+        dataId = meta['group'] + '*' + dataId
+      }
+      if (meta['version'] !== '') {
+        dataId = dataId + ':' + meta['version']
+      }
+
+      if (dataId !== '') {
+        this.detail(dataId)
+        Object.keys(meta).forEach(function (key) {
+          let item = {}
+          item.value = meta[key]
+          item.name = key.charAt(0).toUpperCase() + key.substr(1)
+          vm.basic.push(item)
+        })
       }
     }
   }
diff --git a/dubbo-admin-frontend/src/components/ServiceSearch.vue b/dubbo-admin-frontend/src/components/ServiceSearch.vue
index 8c269fc..eb5ff46 100644
--- a/dubbo-admin-frontend/src/components/ServiceSearch.vue
+++ b/dubbo-admin-frontend/src/components/ServiceSearch.vue
@@ -69,8 +69,10 @@
               <template slot="items" slot-scope="props">
                 <td >{{props.item.service}}</td>
                 <td>{{props.item.group}}</td>
+                <td>{{props.item.version}}</td>
                 <td>{{props.item.appName}}</td>
-                <td class="text-xs-center px-0"><v-btn small color='primary' :href='getHref(props.item.service, props.item.appName)'>Detail</v-btn></td>
+                <td class="text-xs-center px-0"><v-btn small color='primary' :href='getHref(props.item.service, props.item.appName,
+                                                                                            props.item.group, props.item.version)'>Detail</v-btn></td>
               </template>
             </v-data-table>
           </template>
@@ -103,6 +105,11 @@
           align: 'left'
         },
         {
+          text: 'Version',
+          value: 'version',
+          align: 'left'
+        },
+        {
           text: 'Application',
           value: 'application',
           align: 'left'
@@ -130,8 +137,15 @@
       }
     },
     methods: {
-      getHref: function (service, app) {
-        return '/#/serviceDetail?service=' + service + '&app=' + app
+      getHref: function (service, app, group, version) {
+        let query = 'service=' + service + '&app=' + app
+        if (group !== null) {
+          query = query + '&group=' + group
+        }
+        if (version != null) {
+          query = query + '&version=' + version
+        }
+        return '/#/serviceDetail?' + query
       },
       submit () {
         let pattern = this.items[this.selected].value