dubbo2.7.3条件路由配置不生效 fix #500 (#501)

* dubbo2.7.3条件路由配置不生效 fix #500

* dubbo2.7.3 应用粒度的权重配置不生效 fix 504
diff --git a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/common/util/Constants.java b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/common/util/Constants.java
index 141caa8..adb1b7c 100644
--- a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/common/util/Constants.java
+++ b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/common/util/Constants.java
@@ -28,15 +28,18 @@
     public static final String DEFAULT_ROOT = "dubbo";
     public static final String PATH_SEPARATOR = "/";
     public static final String GROUP_KEY = "group";
-    public static final String CONFIG_KEY = "config";
+    public static final String CONFIG_KEY = "config/dubbo";
     public static final String DUBBO_PROPERTY = "dubbo.properties";
     public static final String PROVIDER_SIDE = "provider";
     public static final String CONSUMER_SIDE = "consumer";
     public static final String CATEGORY_KEY = "category";
     public static final String ROUTERS_CATEGORY = "routers";
     public static final String CONDITION_ROUTE = "condition_route";
+    public static final String CONDITION_RULE_SUFFIX = ".condition-router";
     public static final String CONFIGURATOR = "configurators";
+    public static final String CONFIGURATOR_RULE_SUFFIX = ".configurators";
     public static final String TAG_ROUTE = "tag_route";
+    public static final String TAG_RULE_SUFFIX = ".tag-router";
     public static final String COMPATIBLE_CONFIG = "compatible_config";
     public static final String WEIGHT = "weight";
     public static final String BALANCING = "balancing";
diff --git a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/service/impl/OverrideServiceImpl.java b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/service/impl/OverrideServiceImpl.java
index a0a49fa..e63e846 100644
--- a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/service/impl/OverrideServiceImpl.java
+++ b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/service/impl/OverrideServiceImpl.java
@@ -515,7 +515,7 @@
     }
     private String getPath(String key) {
         key = key.replace("/", "*");
-        return prefix + Constants.PATH_SEPARATOR + key + Constants.PATH_SEPARATOR + Constants.CONFIGURATOR;
+        return prefix + Constants.PATH_SEPARATOR + key + Constants.CONFIGURATOR_RULE_SUFFIX;
     }
 
     private void unregisterWeight(WeightDTO weightDTO) {
diff --git a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/service/impl/RouteServiceImpl.java b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/service/impl/RouteServiceImpl.java
index f7280cf..bbc1b25 100644
--- a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/service/impl/RouteServiceImpl.java
+++ b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/service/impl/RouteServiceImpl.java
@@ -329,9 +329,9 @@
     private String getPath(String key, String type) {
         key = key.replace("/", "*");
         if (type.equals(Constants.CONDITION_ROUTE)) {
-            return prefix + Constants.PATH_SEPARATOR + key + Constants.PATH_SEPARATOR + "condition-router";
+            return prefix + Constants.PATH_SEPARATOR + key + Constants.CONDITION_RULE_SUFFIX;
         } else {
-            return prefix + Constants.PATH_SEPARATOR + key + Constants.PATH_SEPARATOR + "tag-router";
+            return prefix + Constants.PATH_SEPARATOR + key + Constants.TAG_RULE_SUFFIX;
         }
     }
 
diff --git a/dubbo-admin-server/src/test/java/org/apache/dubbo/admin/controller/ConditionRoutesControllerTest.java b/dubbo-admin-server/src/test/java/org/apache/dubbo/admin/controller/ConditionRoutesControllerTest.java
index ad7a340..6cd7359 100644
--- a/dubbo-admin-server/src/test/java/org/apache/dubbo/admin/controller/ConditionRoutesControllerTest.java
+++ b/dubbo-admin-server/src/test/java/org/apache/dubbo/admin/controller/ConditionRoutesControllerTest.java
@@ -37,15 +37,8 @@
 import java.util.UUID;
 import java.util.stream.Collectors;
 
-import static org.hamcrest.Matchers.containsInAnyOrder;
-import static org.hamcrest.Matchers.containsString;
-import static org.hamcrest.Matchers.hasSize;
-import static org.hamcrest.Matchers.is;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.assertTrue;
+import static org.hamcrest.Matchers.*;
+import static org.junit.Assert.*;
 import static org.mockito.Mockito.when;
 
 public class ConditionRoutesControllerTest extends AbstractSpringIntegrationTest {
@@ -118,7 +111,7 @@
         + "priority: 0\n"
         + "runtime: false\n"
         + "scope: service";
-    String path = "/dubbo/config/" + service + "/condition-router";
+    String path = "/dubbo/config/dubbo/" + service + ".condition-router";
     zkClient.create().creatingParentContainersIfNeeded().forPath(path);
     zkClient.setData().forPath(path, content.getBytes());
 
@@ -152,7 +145,7 @@
         + "priority: 0\n"
         + "runtime: false\n"
         + "scope: service";
-    String path = "/dubbo/config/" + service + "/condition-router";
+    String path = "/dubbo/config/dubbo/" + service + ".condition-router";
     zkClient.create().creatingParentContainersIfNeeded().forPath(path);
     zkClient.setData().forPath(path, content.getBytes());
 
@@ -183,7 +176,7 @@
         + "priority: 0\n"
         + "runtime: false\n"
         + "scope: service";
-    String path = "/dubbo/config/" + service + "/condition-router";
+    String path = "/dubbo/config/dubbo/" + service + ".condition-router";
     zkClient.create().creatingParentContainersIfNeeded().forPath(path);
     zkClient.setData().forPath(path, content.getBytes());
 
@@ -218,7 +211,7 @@
         + "priority: 0\n"
         + "runtime: false\n"
         + "scope: service";
-    String path = "/dubbo/config/" + service + "/condition-router";
+    String path = "/dubbo/config/dubbo/" + service + ".condition-router";
     zkClient.create().creatingParentContainersIfNeeded().forPath(path);
     zkClient.setData().forPath(path, content.getBytes());
 
@@ -245,7 +238,7 @@
         + "priority: 0\n"
         + "runtime: false\n"
         + "scope: service";
-    String path = "/dubbo/config/" + service + "/condition-router";
+    String path = "/dubbo/config/dubbo/" + service + ".condition-router";
     zkClient.create().creatingParentContainersIfNeeded().forPath(path);
     zkClient.setData().forPath(path, content.getBytes());
 
@@ -274,7 +267,7 @@
         + "priority: 0\n"
         + "runtime: false\n"
         + "scope: service";
-    String path = "/dubbo/config/" + service + "/condition-router";
+    String path = "/dubbo/config/dubbo/" + service + ".condition-router";
     zkClient.create().creatingParentContainersIfNeeded().forPath(path);
     zkClient.setData().forPath(path, content.getBytes());
 
diff --git a/dubbo-admin-server/src/test/java/org/apache/dubbo/admin/controller/ManagementControllerTest.java b/dubbo-admin-server/src/test/java/org/apache/dubbo/admin/controller/ManagementControllerTest.java
index b832b57..462285b 100644
--- a/dubbo-admin-server/src/test/java/org/apache/dubbo/admin/controller/ManagementControllerTest.java
+++ b/dubbo-admin-server/src/test/java/org/apache/dubbo/admin/controller/ManagementControllerTest.java
@@ -21,6 +21,7 @@
 import org.apache.dubbo.admin.common.util.Constants;
 import org.apache.dubbo.admin.model.dto.ConfigDTO;
 import org.apache.dubbo.admin.service.ProviderService;
+import org.apache.dubbo.common.utils.StringUtils;
 import org.junit.After;
 import org.junit.Test;
 import org.springframework.boot.test.mock.mockito.MockBean;
@@ -36,8 +37,7 @@
 import java.util.stream.Collectors;
 
 import static org.hamcrest.Matchers.hasSize;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertThat;
+import static org.junit.Assert.*;
 import static org.mockito.Mockito.when;
 
 public class ManagementControllerTest extends AbstractSpringIntegrationTest {
@@ -64,11 +64,11 @@
     assertEquals(responseEntity.getStatusCode(), HttpStatus.CREATED);
     assertEquals(responseEntity.getBody(), true);
 
-    byte[] bytes = zkClient.getData().forPath(getPath("dubbo"));
+    byte[] bytes = zkClient.getData().forPath(getPath(""));
     String config = new String(bytes);
     assertEquals(configDTO.getConfig(), config);
 
-    zkClient.delete().forPath(getPath("dubbo"));
+    zkClient.delete().forPath(getPath(""));
   }
 
   @Test
@@ -188,7 +188,7 @@
   }
 
   private String getPath(String key) {
-    return "/dubbo/" + Constants.CONFIG_KEY + Constants.PATH_SEPARATOR + key + Constants.PATH_SEPARATOR
-        + Constants.DUBBO_PROPERTY;
+    key =  StringUtils.isNotEmpty(key) ? key + Constants.PATH_SEPARATOR  + Constants.DUBBO_PROPERTY : Constants.DUBBO_PROPERTY;
+    return "/dubbo/" + Constants.CONFIG_KEY + Constants.PATH_SEPARATOR + key;
   }
 }