X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=policy-agent%2Fsrc%2Fmain%2Fjava%2Forg%2Foransc%2Fpolicyagent%2Frepository%2FServices.java;h=1fd08a804c8bd1c0f9378de8929def8108466205;hb=7757d0392fb23cc807567431aa433a5c6736d02a;hp=5b5b4a8a785c291c1c694c5e4317bb21c6b7e9d1;hpb=4a7dd457d5b179dd0f588663fc1476dacfca4f22;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 5b5b4a8a..1fd08a80 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 @@ -22,16 +22,48 @@ package org.oransc.policyagent.repository; import java.util.HashMap; import java.util.Map; +import java.util.Vector; +import org.oransc.policyagent.exceptions.ServiceException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class Services { private static final Logger logger = LoggerFactory.getLogger(Services.class); - private Map services = new HashMap<>(); + private Map registeredServices = new HashMap<>(); - public Services() { + public synchronized Service getService(String name) throws ServiceException { + Service s = registeredServices.get(name); + if (s == null) { + throw new ServiceException("Could not find service: " + name); + } + return s; } + public synchronized Service get(String name) { + return registeredServices.get(name); + } + + public synchronized void put(Service service) { + logger.debug("Put service: {}", service.getName()); + service.keepAlive(); + registeredServices.put(service.getName(), service); + } + + public synchronized Iterable getAll() { + return new Vector<>(registeredServices.values()); + } + + public synchronized void remove(String name) { + registeredServices.remove(name); + } + + public synchronized int size() { + return registeredServices.size(); + } + + public void clear() { + registeredServices.clear(); + } }