X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=server%2Fruntime%2Forg.argeo.server.jcr%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fjcr%2FDefaultRepositoryRegister.java;h=fc2fb529dc1fd854c1ba282af5d4a065421fcedb;hb=057d80065bad948930426f87b9a2eb1d4cab3e14;hp=e2d9854246364feea7cfb0f7255ebf531551e1a2;hpb=fea161ce3d77b81ae6ee0a7895f7bd64b4cb618e;p=lgpl%2Fargeo-commons.git diff --git a/server/runtime/org.argeo.server.jcr/src/main/java/org/argeo/jcr/DefaultRepositoryRegister.java b/server/runtime/org.argeo.server.jcr/src/main/java/org/argeo/jcr/DefaultRepositoryRegister.java index e2d985424..fc2fb529d 100644 --- a/server/runtime/org.argeo.server.jcr/src/main/java/org/argeo/jcr/DefaultRepositoryRegister.java +++ b/server/runtime/org.argeo.server.jcr/src/main/java/org/argeo/jcr/DefaultRepositoryRegister.java @@ -1,6 +1,7 @@ package org.argeo.jcr; import java.util.Collections; +import java.util.HashMap; import java.util.Map; import java.util.Observable; import java.util.SortedMap; @@ -17,8 +18,9 @@ public class DefaultRepositoryRegister extends Observable implements private final static Log log = LogFactory .getLog(DefaultRepositoryRegister.class); - private SortedMap repositories = Collections - .synchronizedSortedMap(new TreeMap()); + /** Read only map which will be directly exposed. */ + private Map repositories = Collections + .unmodifiableMap(new TreeMap()); @SuppressWarnings("rawtypes") public synchronized Repository getRepository(Map parameters) @@ -34,8 +36,9 @@ public class DefaultRepositoryRegister extends Observable implements return repositories.get(name); } - public Map getRepositories() { - return new TreeMap(repositories); + /** Access to the read-only map */ + public synchronized Map getRepositories() { + return repositories; } /** Registers a service, typically called when OSGi services are bound. */ @@ -49,7 +52,10 @@ public class DefaultRepositoryRegister extends Observable implements } String name = properties.get(JCR_REPOSITORY_NAME).toString(); - repositories.put(name, repository); + Map map = new TreeMap( + repositories); + map.put(name, repository); + repositories = Collections.unmodifiableMap(map); setChanged(); notifyObservers(repository); } @@ -65,7 +71,10 @@ public class DefaultRepositoryRegister extends Observable implements } String name = properties.get(JCR_REPOSITORY_NAME).toString(); - repositories.remove(name); + Map map = new TreeMap( + repositories); + map.put(name, repository); + repositories = Collections.unmodifiableMap(map); setChanged(); notifyObservers(repository); }