X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=policy-agent%2Fsrc%2Fmain%2Fjava%2Forg%2Foransc%2Fpolicyagent%2Frepository%2FServices.java;h=f6c55dc432c580264a76285d07675a6cab8af673;hb=c5c251953f36a3a56613ad28f2d73f958ff58295;hp=35cae71764c3da7c5e96eb24bc66979a0c03c56a;hpb=7a4a590fb0ebf8772169625cdda327da43c79c6d;p=nonrtric.git diff --git a/policy-agent/src/main/java/org/oransc/policyagent/repository/Services.java b/policy-agent/src/main/java/org/oransc/policyagent/repository/Services.java index 35cae717..f6c55dc4 100644 --- a/policy-agent/src/main/java/org/oransc/policyagent/repository/Services.java +++ b/policy-agent/src/main/java/org/oransc/policyagent/repository/Services.java @@ -20,7 +20,7 @@ package org.oransc.policyagent.repository; -import java.util.Collection; +import java.util.Collections; import java.util.HashMap; import java.util.Map; @@ -31,13 +31,10 @@ import org.slf4j.LoggerFactory; public class Services { private static final Logger logger = LoggerFactory.getLogger(Services.class); - private Map services = new HashMap<>(); - - public Services() { - } + private Map registeredServices = new HashMap<>(); public synchronized Service getService(String name) throws ServiceException { - Service s = services.get(name); + Service s = registeredServices.get(name); if (s == null) { throw new ServiceException("Could not find service: " + name); } @@ -45,19 +42,27 @@ public class Services { } public synchronized Service get(String name) { - return services.get(name); + return registeredServices.get(name); } public synchronized void put(Service service) { - logger.debug("Put service: " + service.getName()); - // TODO a threading problem is that this may happend at the same time as someone is iterating (getAll()) - // This is a generic problem - services.put(service.getName(), service); + logger.debug("Put service: {}", service.getName()); + registeredServices.put(service.getName(), service); + } + + public synchronized Iterable getAll() { + return Collections.unmodifiableCollection(registeredServices.values()); } - // TODO the returned value should be unmodifiable if possible - public synchronized Collection getAll() { - return services.values(); + public synchronized void remove(String name) { + registeredServices.remove(name); } + public synchronized int size() { + return registeredServices.size(); + } + + public void clear() { + registeredServices.clear(); + } }