diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/support/AbstractRegistry.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/support/AbstractRegistry.java index 9230951816b..31cdbf8d467 100644 --- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/support/AbstractRegistry.java +++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/support/AbstractRegistry.java @@ -37,6 +37,7 @@ import java.nio.channels.FileChannel; import java.nio.channels.FileLock; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -118,15 +119,15 @@ protected void setUrl(URL url) { } public Set getRegistered() { - return registered; + return Collections.unmodifiableSet(registered); } public Map> getSubscribed() { - return subscribed; + return Collections.unmodifiableMap(subscribed); } public Map>> getNotified() { - return notified; + return Collections.unmodifiableMap(notified); } public File getCacheFile() { diff --git a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/support/AbstractRegistryTest.java b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/support/AbstractRegistryTest.java index a74e89f9503..23364d06e4f 100644 --- a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/support/AbstractRegistryTest.java +++ b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/support/AbstractRegistryTest.java @@ -96,7 +96,9 @@ public void testRegister() throws Exception { abstractRegistry.register(mockUrl); assert abstractRegistry.getRegistered().contains(mockUrl); //test multiple urls - abstractRegistry.getRegistered().clear(); + for (URL url : abstractRegistry.getRegistered()) { + abstractRegistry.unregister(url); + } List urlList = getList(); for (URL url : urlList) { abstractRegistry.register(url); @@ -122,14 +124,16 @@ public void testRegisterIfURLNULL() throws Exception { public void testUnregister() throws Exception { //test one unregister URL url = new URL("dubbo", "192.168.0.1", 2200); - abstractRegistry.getRegistered().add(url); + abstractRegistry.register(url); abstractRegistry.unregister(url); MatcherAssert.assertThat(false, Matchers.equalTo(abstractRegistry.getRegistered().contains(url))); //test multiple unregisters - abstractRegistry.getRegistered().clear(); + for (URL u : abstractRegistry.getRegistered()) { + abstractRegistry.unregister(u); + } List urlList = getList(); for (URL urlSub : urlList) { - abstractRegistry.getRegistered().add(urlSub); + abstractRegistry.register(urlSub); } for (URL urlSub : urlList) { abstractRegistry.unregister(urlSub); diff --git a/dubbo-registry/dubbo-registry-multicast/src/test/java/org/apache/dubbo/registry/multicast/MulticastRegistryTest.java b/dubbo-registry/dubbo-registry-multicast/src/test/java/org/apache/dubbo/registry/multicast/MulticastRegistryTest.java index 93c59bce316..76eece027e5 100644 --- a/dubbo-registry/dubbo-registry-multicast/src/test/java/org/apache/dubbo/registry/multicast/MulticastRegistryTest.java +++ b/dubbo-registry/dubbo-registry-multicast/src/test/java/org/apache/dubbo/registry/multicast/MulticastRegistryTest.java @@ -92,7 +92,9 @@ public void testRegister() { Set registered; // clear first registered = registry.getRegistered(); - registered.clear(); + for (URL url : registered) { + registry.unregister(url); + } for (int i = 0; i < 2; i++) { registry.register(serviceUrl);