package org.argeo.jcr;
import java.util.Collections;
+import java.util.HashMap;
import java.util.Map;
import java.util.Observable;
import java.util.SortedMap;
private final static Log log = LogFactory
.getLog(DefaultRepositoryRegister.class);
- private SortedMap<String, Repository> repositories = Collections
- .synchronizedSortedMap(new TreeMap<String, Repository>());
+ /** Read only map which will be directly exposed. */
+ private Map<String, Repository> repositories = Collections
+ .unmodifiableMap(new TreeMap<String, Repository>());
@SuppressWarnings("rawtypes")
public synchronized Repository getRepository(Map parameters)
return repositories.get(name);
}
- public Map<String, Repository> getRepositories() {
- return new TreeMap<String, Repository>(repositories);
+ /** Access to the read-only map */
+ public synchronized Map<String, Repository> getRepositories() {
+ return repositories;
}
/** Registers a service, typically called when OSGi services are bound. */
}
String name = properties.get(JCR_REPOSITORY_NAME).toString();
- repositories.put(name, repository);
+ Map<String, Repository> map = new TreeMap<String, Repository>(
+ repositories);
+ map.put(name, repository);
+ repositories = Collections.unmodifiableMap(map);
setChanged();
notifyObservers(repository);
}
}
String name = properties.get(JCR_REPOSITORY_NAME).toString();
- repositories.remove(name);
+ Map<String, Repository> map = new TreeMap<String, Repository>(
+ repositories);
+ map.put(name, repository);
+ repositories = Collections.unmodifiableMap(map);
setChanged();
notifyObservers(repository);
}