New EI Consumer API, aligned to ORAN WG2
[nonrtric.git] / enrichment-coordinator-service / src / main / java / org / oransc / enrichment / repository / EiTypes.java
index 5454e8a..6397c2f 100644 (file)
 
 package org.oransc.enrichment.repository;
 
+import java.lang.invoke.MethodHandles;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Vector;
 
 import org.oransc.enrichment.exceptions.ServiceException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
- * Dynamic representation of all EI Types in the system.
+ * Dynamic representation of all EI types in the system.
  */
+@SuppressWarnings("squid:S2629") // Invoke method(s) only conditionally
 public class EiTypes {
-    Map<String, EiType> allEiTypes = new HashMap<>();
+    private final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+    private final Map<String, EiType> allEiTypes = new HashMap<>();
 
     public synchronized void put(EiType type) {
         allEiTypes.put(type.getId(), type);
@@ -69,4 +74,12 @@ public class EiTypes {
         this.allEiTypes.clear();
     }
 
+    public void deregisterType(EiType type, EiJobs eiJobs) {
+        this.remove(type);
+        for (EiJob job : eiJobs.getJobsForType(type.getId())) {
+            eiJobs.remove(job);
+            this.logger.warn("Deleted job {} because no producers left", job.id());
+        }
+    }
+
 }