### Question:
UrlUtils { public static Map<String, Map<String, String>> convertRegister(Map<String, Map<String, String>> register) { Map<String, Map<String, String>> newRegister = new HashMap<String, Map<String, String>>(); for (Map.Entry<String, Map<String, String>> entry : register.entrySet()) { String serviceName = entry.getKey(); Map<String, String> serviceUrls = entry.getValue(); if (!serviceName.contains(":") && !serviceName.contains("/")) { for (Map.Entry<String, String> entry2 : serviceUrls.entrySet()) { String serviceUrl = entry2.getKey(); String serviceQuery = entry2.getValue(); Map<String, String> params = StringUtils.parseQueryString(serviceQuery); String group = params.get("group"); String version = params.get("version"); String name = serviceName; if (group != null && group.length() > 0) { name = group + "/" + name; } if (version != null && version.length() > 0) { name = name + ":" + version; } Map<String, String> newUrls = newRegister.get(name); if (newUrls == null) { newUrls = new HashMap<String, String>(); newRegister.put(name, newUrls); } newUrls.put(serviceUrl, StringUtils.toQueryString(params)); } } else { newRegister.put(serviceName, serviceUrls); } } return newRegister; }  static URL parseURL(String address, Map<String, String> defaults); static List<URL> parseURLs(String address, Map<String, String> defaults); static Map<String, Map<String, String>> convertRegister(Map<String, Map<String, String>> register); static Map<String, String> convertSubscribe(Map<String, String> subscribe); static Map<String, Map<String, String>> revertRegister(Map<String, Map<String, String>> register); static Map<String, String> revertSubscribe(Map<String, String> subscribe); static Map<String, Map<String, String>> revertNotify(Map<String, Map<String, String>> notify); static List<String> revertForbid(List<String> forbid, Set<URL> subscribed); static URL getEmptyUrl(String service, String category); static boolean isMatchCategory(String category, String categories); static boolean isMatch(URL consumerUrl, URL providerUrl); static boolean isMatchGlobPattern(String pattern, String value, URL param); static boolean isMatchGlobPattern(String pattern, String value); static boolean isServiceKeyMatch(URL pattern, URL value); static List<URL> classifyUrls(List<URL> urls, Predicate<URL> predicate); static boolean isConfigurator(URL url); static boolean isRoute(URL url); static boolean isProvider(URL url);  }### Answer:
@Test public void testConvertRegister() { String key = "perf/dubbo.test.api.HelloService:1.0.0"; Map<String, Map<String, String>> register = new HashMap<String, Map<String, String>>(); register.put(key, null); Map<String, Map<String, String>> newRegister = UrlUtils.convertRegister(register); assertEquals(register, newRegister); }
@Test public void testConvertRegister2() { String key = "dubbo.test.api.HelloService"; Map<String, Map<String, String>> register = new HashMap<String, Map<String, String>>(); Map<String, String> service = new HashMap<String, String>(); service.put("dubbo: register.put(key, service); Map<String, Map<String, String>> newRegister = UrlUtils.convertRegister(register); Map<String, String> newService = new HashMap<String, String>(); newService.put("dubbo: assertEquals(newService, newRegister.get("test/dubbo.test.api.HelloService:1.0.0")); }