public List<URL> getCacheUrls(URL url) {
        Map<String, List<URL>> categoryNotified = notified.get(url);
        if (CollectionUtils.isNotEmptyMap(categoryNotified)) {
            List<URL> urls = categoryNotified.values().stream()
                    .flatMap(Collection::stream)
                    .collect(Collectors.toList());
            return urls;
        }

        for (Map.Entry<Object, Object> entry : properties.entrySet()) {
            String key = (String) entry.getKey();
            String value = (String) entry.getValue();
            if (StringUtils.isNotEmpty(key)
                    && key.equals(url.getServiceKey())
                    && (Character.isLetter(key.charAt(0)) || key.charAt(0) == '_')
                    && StringUtils.isNotEmpty(value)) {
                String[] arr = value.trim().split(URL_SPLIT);
                List<URL> urls = new ArrayList<>();
                for (String u : arr) {
                    urls.add(URL.valueOf(u));
                }
                return urls;
            }
        }
        return null;
    }
@Test
    void getCacheUrlsTest() {
        List<URL> urls = new ArrayList<>();
        urls.add(testUrl);
        // check if notify successfully
        Assertions.assertFalse(notifySuccess);
        abstractRegistry.notify(testUrl, listener, urls);
        Assertions.assertTrue(notifySuccess);
        List<URL> cacheUrl = abstractRegistry.getCacheUrls(testUrl);
        Assertions.assertEquals(1, cacheUrl.size());
        URL nullUrl = URL.valueOf("http://1.2.3.4:9090/registry?check=false&file=N/A&interface=com.testa");
        cacheUrl = abstractRegistry.getCacheUrls(nullUrl);
        Assertions.assertTrue(Objects.isNull(cacheUrl));
    }