Merge "Added STD sim 2.0.0 tests"
[nonrtric.git] / policy-agent / src / main / java / org / oransc / policyagent / repository / Services.java
index 5b5b4a8..1c0e15a 100644 (file)
@@ -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<String, Service> services = new HashMap<>();
+    private Map<String, Service> 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<Service> getAll() {
+        return new Vector<>(registeredServices.values());
+    }
+
+    public synchronized void remove(String name) {
+        registeredServices.remove(name);
+    }
+
+    public synchronized int size() {
+        return registeredServices.size();
+    }
+
+    public synchronized void clear() {
+        registeredServices.clear();
+    }
 }